Sei sulla pagina 1di 2

IL PROBLEMA DEL VERTEX COVER MINIMO VC

Dato un grafo non orientato G=(V,E) con V={1, … , 𝑛} nodi e |E|=m coppie di
archi non ordinati., un sottoinsieme V’⊆V (non necessariamente proprio di V) è
detto Vertex cover per G se per ogni arco di G almeno uno dei due vertici ad esso
incidente appartiene a V’:
FORMALENTE
V’⊆V è un vertex cover per il grafo G se ∀[𝑖, 𝑗] ∈ 𝐸, almeno una delle seguenti
condizioni è verificata i∈V’ oppure j∈V’. (non è un o esclusivo possono appartenere entrambi)
V=V’ ho un vertex cover banale perché entrambi appartengono a V
Tale problema consiste nel trovare un vertex cover per G con cardinalità minima,
cioè vogliamo selezionare il minimo di numero di nodi a copertura di tutti gli archi.
Per definire il problema matematico si introducono:
|V|=n variabili di decisione
∀j=1,..,n xj={ ′

Si ottiene la seguente formulazione matematica per il problema:

Il problema è computazionalmente intrattabile, per meglio studiarlo si utilizza un


algoritmo di approssimazione, ossia un metodo che nel caso migliore può
individuare una soluzione ottima al problema, mentre nel caso medio o caso
peggiore individua una soluzione subottima. Essendo un problema difficile, ha
complessità computazionale super polinomiale, ma può essere approssimato in
tempo polinomiale.

L’ALGORITMO DEL VERTEX COVER PER UN GRAFO (RANDOM).


L’algoritmo di approssimazione del Vertex Cover richiede in input l’istanza del
problema in termini di insieme dei nodi e insieme degli archi (V,E).
1. Inizialmente si inizializza V’=ø ed E’=E, effettuando così una copia
dell’insieme degli archi e nel corso dell’algoritmo E’ gioca il ruolo di insieme
degli archi ancora da coprire. Tali assegnamenti hanno una complessità
costante.
2. Viene introdotto un ciclo while in cui viene selezionato da E’ a caso un arco
ancora [i,j] e vengono inseriti entrambi gli estremi dell’arco selezionato in
V’=V’U{i,j} e vengono rimossi da E’=E’\{u,v|u=i op v=j} tutti gli archi
incidenti in i e gli archi incidenti in j. Avendo nel while m iterazioni, si ha
complessità computazionale O(m)=E. Quando ho coperto tutti gli archi E’=∅
e viene restituito V’ in output. Pertanto la complessità computazionale è
O(m).
TEOREMA
Per ogni istanza I del problema, l’insieme V 'I restituito in output da 2 approx-vc è un
¿
VERTEX COVER per G (per costruzione) tali che: |V 'I|≤2|V I| (vertex cover ottimo).

Per una generica istanza del problema si fa vedere che vale il ≤ 2 mentre vale
l’uguaglianza per una famiglia di istanze del problema per cui l’errore commesso è
proprio pari a due ovvero un esempio sono i grafi a stella, mentre un
comportamento migliore viene esibito per tutti i grafi a catena.

DIM: Indichiamo con A l’insieme degli archi selezionati da E’. Per ogni arco [i,j]ЄA, i
vertici i e j sono aggiunti a V 'I =V 'I U{i,j} e quindi segue che ¿ V 'I |=2|A|. Inoltre
essendo che da E’ vengono rimossi tutti gli archi incidenti in almeno uno fra i nodi i e
j, risulta che gli archi in A sono a DUE a DUE NON ADIACENTI (adiacenti vuol dire che
condividono un estremo ), per cui per ogni arco [i,j]ЄA, un vertex cover (incluso
quello ottimo), per definizione di vertex cover, deve contenere almeno uno fra i nodi
¿
i e j. Dunque |A|≤|V I|, unendo le due relazioni si ottiene la tesi.

Potrebbero piacerti anche