DAA - Copertura Vertex

Una copertura del vertice di un grafo non orientato G = (V, E) è un sottoinsieme di vertici V' ⊆ V tale che se bordo (u, v) è un vantaggio di G, allora neanche u in V o v in V' o entrambi.

Trova una copertura del vertice della dimensione massima in un dato grafo non orientato. Questo vertexcover ottimale è la versione di ottimizzazione di un problema NP-completo. Tuttavia, non è troppo difficile trovare una copertura del vertice che sia quasi ottimale.

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

Esempio

L'insieme dei bordi del grafico dato è -

{(1,6),(1,2),(1,4),(2,3),(2,4),(6,7),(4,7),(7,8),(3,8),(3,5),(8,5)}

Ora, iniziamo selezionando un arco arbitrario (1,6). Eliminiamo tutti i bordi, che sono incidenti al vertice 1 o 6 e aggiungiamo il bordo (1,6) alla copertura.

Nel passaggio successivo, abbiamo scelto un altro arco (2,3) a caso

Ora selezioniamo un altro bordo (4,7).

Selezioniamo un altro bordo (8,5).

Quindi, la copertura del vertice di questo grafico è {1,2,4,5}.

Analisi

È facile vedere che il tempo di esecuzione di questo algoritmo è O(V + E), utilizzando l'elenco di adiacenza per rappresentare E'.