Uno dei motivi per cui vediamo diverse complessità di approssimazione per i problemi NP-completi è che le condizioni necessarie per NP-complete costituiscono una misura molto approssimativa della complessità di un problema. Potresti avere familiarità con la definizione di base di un problema essendo NP-completo:Π
- Π è in NP e
- Per ogni altro problema in NP, possiamo trasformare un'istanza di in un'istanza di in tempo polinomiale tale che è un'istanza sì di se e solo se è un'istanza sì di .x Ξ y Π y Π x ΞΞXΞyΠyΠXΞ
Considera la condizione 2: tutto ciò che serve è che possiamo prendere e trasformarlo in qualche che preservi la risposta sì / no "single-bit". Non ci sono condizioni, ad esempio, sulla dimensione relativa dei testimoni rispetto al sì o no (ovvero, la dimensione della soluzione nel contesto di ottimizzazione). Quindi l'unica misura utilizzata è la dimensione totale dell'input che dà solo una condizione molto debole sulla dimensione della soluzione. Quindi è abbastanza "facile" trasformare un in un .y Ξ ΠxyΞΠ
Possiamo vedere la differenza in vari problemi NP-completi osservando la complessità di alcuni semplici algoritmi. -Coloring ha una forza bruta (dove è la dimensione di input). Per -Dominating Set, un approccio di forza bruta prende . Questi sono, in sostanza, i migliori algoritmi esatti che abbiamo. -Vertex Cover ha comunque un algoritmo molto semplice (seleziona un bordo, ramo su quale endpoint includere, segna tutto coperto, continua fino a quando non hai bordi non marcati o non colpisci il tuo budget diO ( k n ) n k O ( n k ) k O ( 2 k n c ) kkO(kn)nkO(nk)kO(2knc)ke bactrack). Con riduzioni multiple del tempo polinomiale (riduzioni di Karp, cioè cosa stiamo facendo nella condizione 2 sopra), questi problemi sono equivalenti.
Quando iniziamo ad avvicinarci alla complessità con strumenti anche leggermente più delicati (complessità dell'approssimazione, complessità parametrizzata, qualsiasi altra non riesca a pensare), le riduzioni che usiamo diventano più rigorose, o meglio, più sensibili alla struttura della soluzione, e le differenze iniziano ad apparire; -Vertex Cover (come menzionato Yuval) ha una semplice approssimazione 2 (ma non ha un FPTAS a meno che alcune classi di complessità non collassino), -Dominating Set ha un algoritmo di approssimazione (ma no -approximation per alcuni ) e l'approssimazione non ha davvero senso per la versione diretta di -Coloring.k ( 1 + registro n ) ( c registro n ) c > 0 kkk(1+logn)(clogn)c>0k