Couverture dans les graphes | NP COMPLETUDE

Exercice NP complétude : couverture dans les graphes

Exercice Analyse & Conception des Algorithmes Avances : Couverture des les graphes

Soit G un graphe G = (V, E) de la figure suivante. Un ensemble dominant C du graphe G est un sous-ensemble de sommets tel que tout sommet est soit dans C soit voisin d’un sommet de C.

  1. A partir de G, construire le graphe  G′ = (V ′, E′)  tel que
    • V ′ = V ∪ E ;
    •  E′ = E ∪ {(v, a)|v ∈ V, a ∈ E, v est extrémité de l’arête a dans G
  2. Montrer que si S est une couverture de sommets du graphe G, alors S est un ensemble dominant de G′.
  3. Montrer que si S′ est un ensemble dominant de G′, alors il existe un ensemble S de même cardinalité de S′ qui est une couverture de graphe G.
  4. Exprimer le problème de minimisation de l’ensemble dominant sous forme de problème de décision.
  5. Montrer que ce problème est dans la classe NP.

Note : Une couverture de sommets S du graphe G est un sous-ensemble de sommets tel que toutes les arêtes de G sont incidentes `a au moins un sommet de S.

Correction NP COMPLÉTUDE

  1. Soit G un graphe G = (V, E). Nous allons construire un graphe G′ = (V ′, E′) `a partir de G tel que
    — V ′ = V ∪ E ;
    — E′ = E ∪ {(v, a)|v ∈ V, a ∈ E, v est extremite de l’arête a dans G

       Np completude pandacodeurFigure 01 : Graphe G′ (les arêtes dans E ne sont pas dessinées)

  2. Soit S une couverture de sommets du graphe G. Il faut prouver que tous les sommets du graphe sont soit voisins de S, soit dans S. Toutes les arêtes de G ont au moins un de ses extrémités dans S. Par conséquent, tous les sommets de G sont soit dans S, soit voisins de S. Comme toutes les arêtes de G ont au moins un de ses extrémités dans S, tous les sommets correspondant à une arête de G sont des voisins de S. Donc S est un ensemble dominant de G′.
  3. Si S′ ⊆ V, alors tous les sommets du graphe G sont soit voisins de S, soit dans S. Donc toutes les arêtes ont une de ces extrémités dans S. Donc S′ est une couverture du graphe G. Sinon, il existe un sommet a dans S′ qui n'appartient pas à V mais qui appartient à V′. Cela signifie que le sommet a représente une arête (u, v) dans G et qu'il couvre uniquement les arêtes (a, u) et (a, v) dans G′. Considérons un sous-ensemble S′′ tel que S′′ = (S′ ∩ V) ∪ {u : a = (u, v) ∧ a ∈ S′}. Remarquons que |S′′| = |S′|. Soit a ∈ S′ \ V. Comme le sommet a a les arêtes (a, u) et (a, v) dans G′, alors le sommet u couvre les mêmes arêtes. Donc S′′ est une couverture du graphe G.
  4.   Problème de décision :
    • Données : un graphe non-orienté G et un entier k.
    • Question : Existe-t-il un ensemble dominant S de G tel que |S| ≤ k ?
  5. On peut vérifier en temps polynomial si un ensemble de sommets est un ensemble dominant et s'il est de cardinalité inférieure à k.

Supposons que nous ayons le graphe non-orienté suivant :

Couverture 1

Dans ce graphe, les sommets sont {J, O, E, L, U}. Supposons que k = 2.

Si nous choisissons l'ensemble de sommets S = {J, E}, nous pouvons vérifier rapidement que chaque sommet non inclus dans S (U, D, L) a au moins un voisin dans S. Donc, S est un ensemble dominant. De plus, la cardinalité de S est |S| = 2, ce qui est inférieur ou égal à k = 2. Ainsi, dans cet exemple, l'ensemble de sommets S = {J, E} est à la fois un ensemble dominant et sa cardinalité est inférieure à k, ce qui répond positivement à la question. La vérification a été effectuée en temps polynomial car nous avons simplement parcouru les voisins de chaque sommet non inclus dans S pour vérifier s'ils avaient au moins un voisin dans S. Ce processus a une complexité linéaire par rapport au nombre de sommets et d'arêtes du graphe.

Si vous avez trouvé les exercices corriges sur la Complexité des Algorithmes & Structure de donnée de Mr JoëlYk intéressants et utiles, pourquoi ne pas les partager avec d'autres personnes qui pourraient également en bénéficier ? Partagez ce lien sur les réseaux sociaux ou envoyez-le à vos amis et collègues. Vous pourriez aider quelqu'un à améliorer ses compétences en programmation ou à trouver des solutions à des problèmes complexes. N'oubliez pas que la connaissance doit être partagée pour grandir. Merci pour votre soutien et votre partage !

Contact WhatsApp : +237 658395978 | Réaliser Par Joël_Yk

  • Aucune note. Soyez le premier à attribuer une note !

Ajouter un commentaire

Anti-spam