TDT4120 Algoritmer og datastrukturer Interaktiv pensumguide · H2026
Fremgang
0/14
14
Kompleksitet

NP-komplette problemer

Kjernepensum ~40 min lesing · NP · Reduksjon

Forrige modul ga oss det første NP-komplette problemet (CIRCUIT-SAT, via Cook-Levin) og en frustrerende definisjon: for å vise at XX er NP-hardt må alt i NP reduseres til XX. Den gode nyheten er at vi bare trenger å gjøre den jobben én gang. Når ett problem er kjent komplett, klassifiseres et nytt problem med én eneste ny Karp-reduksjon.

Kompletthet ved én reduksjon

Reduksjon er transitiv: kan ethvert NP-problem reduseres til AA, og AA reduseres til BB, så kan ethvert NP-problem reduseres til BB. Det gir en langt billigere oppskrift enn å gå tilbake til definisjonen hver gang.

Kartet over de sentrale problemene

Fra CIRCUIT-SAT vokser et tre av reduksjoner som etablerer en kjerne av klassiske NP-komplette problemer. Hver pil er «reduserer til»:

ProblemSpørsmål (beslutningsversjon)
3-CNF-SATFinnes en sann tilordning til en formel på 3-konjunktiv normalform?
CLIQUEFinnes en klikk (komplett delgraf) av størrelse k\ge k?
VERTEX-COVERFinnes en nodeoverdekning av størrelse k\le k?
HAM-CYCLEFinnes en sykel som besøker hver node nøyaktig én gang?
TSPFinnes en rundtur med total vekt k\le k?
SUBSET-SUMFinnes en delmengde av tallene med sum nøyaktig tt?
Hvert problem er NP-komplett. Å kjenne dem som verktøy gjør det mulig å velge det «nærmeste» harde problemet å redusere fra.

To bevisideer

Du trenger ikke å pugge alle reduksjonene, men ideen i et par av dem viser mønsteret — du bygger en gadget som oversetter strukturen i ett problem til strukturen i et annet.

  1. 3-CNF-SAT ≤ₚ CLIQUE — klausuler blir noder

    Lag én node per literal i hver klausul. Trekk en kant mellom to noder fra ulike klausuler som ikke er motstridende (ikke xx og ¬x\lnot x). En klikk på størrelse kk (antall klausuler) plukker da én sann literal per klausul som er innbyrdes konsistente — altså en oppfyllende tilordning. Ja-instanser svarer nøyaktig til ja-instanser.

  2. HAM-CYCLE ≤ₚ TSP — kanter blir vekter

    Gi hver kant i grafen vekt 11, og legg til de manglende kantene med vekt 22 slik at grafen blir komplett. En rundtur av total vekt V\le |V| kan bare bruke vekt-11-kanter — altså en hamiltonsk sykel i originalgrafen. Reduksjonen er bare å fylle ut vektmatrisen, klart polynomisk.

Binært ryggsekk er NP-hardt

I modulen om dynamisk programmering løste vi binært ryggsekk med en Θ(nW)\Theta(nW)-DP. Men som vi så i forrige modul er det pseudopolynomisk: kapasiteten WW er en tallverdi som kodes med Θ(lgW)\Theta(\lg W) biter, så kjøretiden er eksponentiell i instansstørrelsen.

Lengste enkle vei er NP-hardt

Korteste vei løses i polynomisk tid — så hvorfor er lengste enkle vei hardt? Fordi «enkel» (ingen gjentatte noder) er det som river bort den optimale delstrukturen.

Korteste vei — i P

Optimal delstruktur holder: en delsti av en korteste vei er en korteste vei. Relax/DP løser det i polynomisk tid.

Lengste enkle vei — NP-hardt

«Enkel» ødelegger delstrukturen: en delsti av en lengste enkel vei er ikke nødvendigvis lengst. Reduksjon fra HAM-CYCLE viser hardheten.

Sjekk deg selv

Hva må med for å vise at et beslutningsproblem er NP-komplett?