DAA - Couverture Vertex
Une couverture de sommet d'un graphe non orienté G = (V, E) est un sous-ensemble de sommets V' ⊆ V tel que si bord (u, v) est un bord de G, alors soit u dans V ou v dans V' ou les deux.
Trouvez une couverture de sommet de taille maximale dans un graphe non orienté donné. Ce vertexcover optimal est la version d'optimisation d'un problème NP-complet. Cependant, il n'est pas trop difficile de trouver une couverture de sommets presque optimale.
APPROX-VERTEX_COVER (G: Graph) c ← { } E' ← E[G]
while E' is not empty do
Let (u, v) be an arbitrary edge of E' c ← c U {u, v}
Remove from E' every edge incident on either u or v
return c
Exemple
L'ensemble des arêtes du graphe donné est -
{(1,6),(1,2),(1,4),(2,3),(2,4),(6,7),(4,7),(7,8),(3,8),(3,5),(8,5)}
![](https://post.nghiatu.com/assets/tutorial/design_and_analysis_of_algorithms/images/set_edges.jpg)
Maintenant, nous commençons par sélectionner une arête arbitraire (1,6). Nous éliminons toutes les arêtes, qui sont soit incidentes au sommet 1 ou 6 et nous ajoutons l'arête (1,6) à couvrir.
![](https://post.nghiatu.com/assets/tutorial/design_and_analysis_of_algorithms/images/arbitrary_edge.jpg)
Dans l'étape suivante, nous avons choisi une autre arête (2,3) au hasard
![](https://post.nghiatu.com/assets/tutorial/design_and_analysis_of_algorithms/images/another_edge.jpg)
Maintenant, nous sélectionnons une autre arête (4,7).
![](https://post.nghiatu.com/assets/tutorial/design_and_analysis_of_algorithms/images/select_another_edge.jpg)
Nous sélectionnons une autre arête (8,5).
![](https://post.nghiatu.com/assets/tutorial/design_and_analysis_of_algorithms/images/edge.jpg)
Par conséquent, la couverture des sommets de ce graphe est {1,2,4,5}.
Une analyse
Il est facile de voir que le temps d'exécution de cet algorithme est O(V + E), en utilisant la liste de contiguïté pour représenter E'.