Risposte:
Per mostrare che un problema è NP completo, è necessario:
In altre parole, date alcune informazioni C, puoi creare un algoritmo temporale polinomiale Vche verificherà per ogni possibile input Xse Xè nel tuo dominio o meno.
Dimostrare che il problema delle coperture dei vertici (cioè, per qualche grafo G, ha un insieme di coperture dei vertici di dimensioni ktali che ogni spigolo Gabbia almeno un vertice nell'insieme delle coperture ?) È in NP:
il nostro input Xè un grafico Ge un numero k(questo è dalla definizione del problema)
Considera le nostre informazioni Ccome "qualsiasi possibile sottoinsieme di vertici nel grafico Gdi dimensione k"
Quindi possiamo scrivere un algoritmo Vche, dato G, ke C, restituirà se quell'insieme di vertici è una copertura di vertici Go meno, in tempo polinomiale .
Quindi per ogni grafo G, se esiste qualche "possibile sottoinsieme di vertici Gdi dimensione k" che è una copertura di vertici, allora Gè in NP.
Nota che non abbiamo bisogno di trovare Cin tempo polinomiale. Se potessimo, il problema sarebbe in `P.
Nota che l'algoritmo Vdovrebbe funzionare per ogni G , per alcuni C. Per ogni input dovrebbero esistere informazioni che potrebbero aiutarci a verificare se l'input è nel dominio del problema o meno. Cioè, non dovrebbe esserci un input in cui l'informazione non esiste.
Ciò comporta l'acquisizione di un problema NP completo noto come SAT , l'insieme di espressioni booleane nella forma:
(A o B o C) e (D o E o F) e ...
dove l'espressione è soddisfacente , cioè esiste un'impostazione per questi booleani, che rende l'espressione vera .
Quindi riduci il problema NP-completo al tuo problema in tempo polinomiale .
Cioè, dato un input Xper SAT(o qualsiasi problema NP-completo che stai usando), crea un input Yper il tuo problema, ad esempio Xin SAT se e solo se Yè nel tuo problema. La funzione f : X -> Ydeve essere eseguita in tempo polinomiale .
Nell'esempio sopra, l'input Ysarebbe il grafico Ge la dimensione della copertura del vertice k.
Per una prova completa , dovresti provare entrambi:
che Xè in SAT=> Ynel tuo problema
e Ynel tuo problema => Xin SAT.
La risposta di marcog ha un collegamento con molti altri problemi NP-complete che potresti ridurre al tuo problema.
Nota a piè di pagina: Nella fase 2 ( Dimostrare che è NP-difficile ), ridurre un altro problema NP-difficile (non necessariamente NP-completo) al problema corrente andrà bene, poiché i problemi NP-completi sono un sottoinsieme di problemi NP-hard (che sono anche in NP).
Devi ridurre un problema NP-Complete al problema che hai. Se la riduzione può essere eseguita in tempo polinomiale, allora hai dimostrato che il tuo problema è NP-completo, se il problema è già in NP, perché:
Non è più semplice del problema NP-completo, poiché può essere ridotto ad esso in un tempo polinomiale che rende il problema NP-Hard.
Vedere la fine di http://www.ics.uci.edu/~eppstein/161/960312.html per ulteriori informazioni.
Per dimostrare che un problema L è NP-completo, è necessario eseguire i seguenti passaggi:
Primo, dimostri che si trova in NP.
Quindi trovi un altro problema che già sai essere NP completo e mostri come riduci polinomialmente il problema NP Hard al tuo problema.