Tilbake
7.2

7.2 Polynomiske reduksjoner og reduksjonsretning

Polynomisk reduksjon `≤ₚ`, den kritiske **retningen** (`A ≤ₚ B` ⇒ B minst like vanskelig), NP-hardt vs. NP-komplett, og `P=NP`-konsekvensen.

55 min
6 oppgaver
Polynomiske reduksjonerreduksjonsretning
Din fremgang i kapitlet
0 / 6 oppgaver
Kapitlets plass i kurset

Forkunnskaper

- kap. 7.1 — P, NP og sertifikat. Fra det kapitlet:
et avgjørelsesproblem har ja/nei-svar. Klassen P er de problemene som
kan løses i polynomisk tid; klassen NP er de der et ja-svar kan
kontrolleres i polynomisk tid, gitt et sertifikat. Det er kjent at
PNPP \subseteq NP, og det er åpent om de er like.
- kap. 5.2 — pseudopolynomisk. Dette sto der: en
algoritme er pseudopolynomisk når kjøretiden er polynomisk i
tallverdiene i inputen, men ikke i inputens lengde.
Ford-Fulkerson er O(Ef)O(E\cdot\lvert f^*\rvert), og en kapasitet på 10910^9
tar 30 binære siffer å skrive, men kan gi en milliard runder. Det sier
ingenting om at maks-flyt er vanskelig
Edmonds-Karp løser problemet i
O(VE2)O(VE^2). Vi henter det skillet fram igjen mot slutten av kapitlet, i en
situasjon der konklusjonen blir en annen.
- kap. 6.2 — 0-1-ryggsekk med Θ(nW)\Theta(nW), der WW er
en tallverdi.

Ett nytt problem innføres underveis, SUBSET-SUM, fordi det er det klareste
eksempelet på skillet mellom pseudopolynomisk og eksponentiell. Katalogen over
de øvrige NP-komplette problemene kommer i
kap. 7.3.

Notasjons- og pseudokodeliste

Hva en polynomisk reduksjon er (~14 min)

En kommune har allerede et fungerende system for å sette opp vaktlister. Så
kommer et nytt problem: å fordele møterom. I stedet for å bygge noe nytt
oversetter de romproblemet til et vaktlisteproblem, kjører det gamle systemet,
og oversetter svaret tilbake.

Det er nøyaktig en reduksjon. Du løser AA ved hjelp av en løser for BB,
og prisen er oversettelsen.

Det avgjørende for oss er ikke at teknikken er praktisk. Det er hva den
forteller om de to problemene når oversettelsen er billig.

Polynomisk reduksjon
ApBA \le_p B betyr at det finnes en funksjon ff som kan regnes ut i polynomisk
tid, slik at for hver instans xx av AA:

x er en ja-instans av A    f(x) er en ja-instans av Bx \text{ er en ja-instans av } A \iff f(x) \text{ er en ja-instans av } B

Tre krav må være oppfylt, og alle tre er ledd som gir uttelling:

1. ff regnes ut i polynomisk tid i inputstørrelsen.
2. Svarbevaring begge veier — «hvis og bare hvis». Ja skal bli ja, og nei
skal bli nei.
3. ff er definert for alle instanser av AA, ikke bare for noen spesielle.

Merk at reduksjonen oversetter instanser, ikke algoritmer. Du skriver ikke
om løsningsmetoden — du skriver om problemteksten.

Hva reduksjonen gir deg

har du ApBA \le_p B og en polynomisk algoritme for BB, får du en polynomisk
algoritme for AA gratis: oversett med ff, kjør BB-løseren.

Sammensetningen av to polynomiske algoritmer er polynomisk — også når
oversettelsen gjør instansen større, så lenge veksten er polynomisk.

Det er dette som gjør reduksjonen til et argument om vanskelighet: den
sier at AA ikke kan være vanskeligere enn BB, opp til polynomisk arbeid.

✏️Eksempel 1: En reduksjon, ledd for ledd
KLIKK-3 er problemet: gitt en urettet graf GG, finnes det tre noder som
alle er parvis forbundet med hverandre?

TREKANT er problemet: gitt en urettet graf GG, inneholder GG en trekant?

Vis at KLIKK-3 p\le_p TREKANT, og gjennomgå de tre kravene.

Oversettelsen. f(G)=Gf(G) = G. Grafen sendes videre uendret.

Det ser ut som juks, men det er en helt gyldig reduksjon — og den illustrerer
kravene tydelig nettopp fordi oversettelsen er triviell.

Krav 1 — polynomisk tid. Å kopiere grafen koster Θ(V+E)\Theta(V+E). Oppfylt.

Krav 2 — svarbevaring begge veier. Tre noder som er parvis forbundet, er
en trekant, og en trekant er tre parvis forbundne noder. Altså:

G har en 3-klikk    G har en trekantG \text{ har en 3-klikk} \iff G \text{ har en trekant}

Oppfylt, og legg merke til at begge retningene må sjekkes. Hadde ff bare
garantert den ene veien, kunne en nei-instans blitt oversatt til en ja-instans,
og svaret ville vært galt.

Krav 3 — definert for alle instanser. Enhver graf kan sendes videre.
Oppfylt.

Hva reduksjonen forteller. TREKANT kan løses i O(V3)O(V^3) ved å prøve alle
tripler av noder. Siden KLIKK-3 p\le_p TREKANT, arver KLIKK-3 den samme
grensen: oversett i lineær tid, kjør TREKANT-løseren.

Konklusjonen går altså denne veien: BB er lett, derfor er AA lett.

Det motsatte følger ikke. At KLIKK-3 reduseres til TREKANT, sier ingenting
om at TREKANT skulle være vanskelig. Det er nettopp den forvekslingen resten av
kapitlet handler om.

📝Oppgave 1

(Innstegsoppgave, sjanger D — definisjon med egne ord, altså én presis setning
med hovedpoenget først.)

Forklar hva ApBA \le_p B betyr, og list de tre kravene til en gyldig reduksjon.

Retningen — kapitlets kjerne (~16 min)

Nå kommer det ene punktet dette kapitlet finnes for.

Reduksjonen ApBA \le_p B er ikke symmetrisk. Den sier noe om forholdet mellom
de to problemene, og den sier det i én bestemt retning.

📜Retningsregelen
Påstanden. ApBA \le_p B betyr at BB er minst like vanskelig som AA.

Hvorfor. Reduksjonen gir deg en oppskrift: løs AA ved å oversette og kjøre
BB-løseren. Er BB lett, blir AA lett. Altså kan ikke AA være vanskeligere
enn BB — opp til polynomisk arbeid.

De to leserettene.

ApB  og  BP    AP(lettheten flyter bakover)A \le_p B \;\text{og}\; B \in P \;\Longrightarrow\; A \in P \qquad\text{(lettheten flyter bakover)}

ApB  og  AP    BP(vanskeligheten flyter framover)A \le_p B \;\text{og}\; A \notin P \;\Longrightarrow\; B \notin P \qquad\text{(vanskeligheten flyter framover)}

Den andre er den kontrapositive formen av den første, og den er den du
bruker
: for å vise at et problem XX er vanskelig, viser du
ApXA \le_p X for et kjent vanskelig AA.

Regelen for eksamen, i én setning:

For å vise at X er vanskelig, reduserer du FRA et kjent vanskelig
problem TIL X.

Og den motsatte veien? XpAX \le_p A med AA kjent vanskelig, viser at XX
ikke er vanskeligere enn AA. Det er en øvre grense, og den er nesten
alltid uinteressant — for eksempel er ethvert problem i NP reduserbart til
et NP-komplett problem, så påstanden er triviell.

Dette er felle #1 — den mest fremhevede feilen i hele faget.

✏️Eksempel 2: Fire påstander, fire ulike svar

For hver av påstandene: hva følger, og hva følger ikke? Anta at 3-CNF-SAT
er kjent NP-komplett.

a) «Jeg har vist 3-CNF-SAT p\le_p X.»
b) «Jeg har vist X p\le_p 3-CNF-SAT.»
c) «Jeg har vist X p\le_p Y, og Y kan løses i O(n3)O(n^3)
d) «Jeg har vist 3-CNF-SAT p\le_p X og at X ligger i NP.»

a) X er NP-hardt. Reduksjonen går fra et kjent vanskelig problem til X,
så X er minst like vanskelig som 3-CNF-SAT.

Følger ikke: at X er NP-komplett. Det krever i tillegg at X ligger i NP, og
det er en egen påstand som må vises for seg.

b) Ingenting om at X er vanskelig. Reduksjonen viser at X ikke er
vanskeligere enn 3-CNF-SAT — altså at X ligger i NP, siden 3-CNF-SAT gjør det.

Merk hvor svak påstanden er: hvert eneste problem i NP kan reduseres til
et NP-komplett problem. Å vise denne retningen er derfor nesten alltid
bortkastet.

c) X kan løses i polynomisk tid. Lettheten flyter bakover: oversett i
polynomisk tid, kjør Y-løseren. Den samlede kjøretiden er polynomisk.

Følger ikke: noe om Y sin vanskelighet. At noe kan reduseres til Y, gjør ikke
Y hardt.

d) X er NP-komplett. Dette er et fullstendig NPC-bevis: NP-hardhet fra
reduksjonen, og medlemskap i NP fra den andre delen.

Mønsteret å ta med seg: reduksjonspilen peker alltid mot det som er
minst like vanskelig. Les den høyt: «jeg reduserer fra det vanskelige til
mitt problem, altså er mitt problem minst like vanskelig».

📝Oppgave 2
Eksamensnivå, sjanger G

Du har vist SAT p\le_p X.

a) Hva forteller det om X sin vanskelighet?
b) Hva forteller det ikke?
c) Hva mangler for at X skal være NP-komplett?

📝Oppgave 3
Eksamensnivå, sjanger G

En kandidat skriver: «Jeg har vist at problemet mitt SKIFTPLAN kan reduseres
til 3-CNF-SAT. Siden 3-CNF-SAT er NP-komplett, er SKIFTPLAN NP-hardt.»

Er argumentet gyldig? Svar ja eller nei, og forklar hva som er galt.

NP-hardt og NP-komplett (~12 min)

De to begrepene brukes om hverandre i dagligtale, og det er en av de tre
feilene løsningsforslagene retter oftest. Skillet er enkelt når det først er
sagt.

NP-hardt

et problem XX er NP-hardt når alle problemer i NP kan reduseres
polynomisk til XX: ApXA \le_p X for hver ANPA \in NP.

I praksis viser du det ved å redusere ett kjent NP-komplett problem til
XX — hardheten arves videre gjennom kjeden.

XX trenger ikke selv ligge i NP. Et NP-hardt problem kan være langt
vanskeligere, og det trenger ikke engang være et avgjørelsesproblem.

NP-komplett

et problem er NP-komplett (NPC) når det er NP-hardt og ligger i NP.

De NP-komplette problemene er de vanskeligste i NP, og de står og faller
sammen: løser du ett i polynomisk tid, løser du alle.

Et NPC-bevis har alltid to deler, og de er uavhengige: medlemskapsdelen
(gi et sertifikat) og hardhetsdelen (reduser fra et kjent NPC-problem).

📜P=NPP=NP-konsekvensen
Påstanden. Finnes det en polynomisk algoritme for ett eneste
NP-komplett problem XX, så er P=NPP = NP.

Argumentet, kort. La AA være et vilkårlig problem i NP. Siden XX er
NP-hardt, finnes en polynomisk reduksjon ApXA \le_p X. Sett sammen: oversett
AA-instansen i polynomisk tid, kjør den polynomiske XX-algoritmen. Det gir en
polynomisk algoritme for AA. Siden AA var vilkårlig, ligger hele NP i P, og
sammen med PNPP \subseteq NP fra kap. 7.1 gir det
P=NPP = NP.

Den kontrapositive formen er den nyttige: tror du PNPP \ne NP, tror du også
at ingen NP-komplett problemer har polynomiske algoritmer. Det er derfor et
NPC-bevis i praksis leses som «slutt å lete etter en rask eksakt algoritme».

Hva teoremet ikke sier. Det sier ingenting om hvorvidt P=NPP = NP er sant.
Spørsmålet er åpent.

📝Oppgave 4
Eksamensnivå, sjanger F

Ta stilling til hver av påstandene:

a) Ethvert NP-hardt problem er NP-komplett.
b) Ethvert NP-komplett problem er NP-hardt.
c) Finner noen en polynomisk algoritme for CLIQUE, følger P=NPP = NP.
d) Et NP-hardt problem må være et avgjørelsesproblem.

Pseudopolynomisk mot eksponentiell (~13 min)

Til slutt et skille som ser ut som en teknikalitet, men som er et av fagets
faste innsiktsspørsmål — og som er lett å trekke feil konklusjon av i begge
retninger.

SUBSET-SUM

gitt en mengde heltall SS og et måltall tt: finnes det en delmengde av SS med
sum nøyaktig tt?

Problemet er NP-komplett. Det står i katalogen i
kap. 7.3, og det tas med her fordi det er det klareste
eksempelet på det neste skillet.

Merk at problemet handler om tall. Det er nettopp derfor spørsmålet om
hvordan tallene skrives ned blir avgjørende.

Inputstørrelse for tallproblemer
inputstørrelsen er antall symboler som trengs for å skrive instansen ned —
ikke tallverdiene i den.

Et tall tt skrevet binært tar lgt\lceil\lg t\rceil siffer. Skrevet i
entallssystem — én strek per enhet — tar det tt siffer.

Det er her hele skillet ligger. Den samme algoritmen kan være polynomisk i
den ene skrivemåten og eksponentiell i den andre, uten at én linje kode er
endret.

Pseudopolynomisk

kjøretiden er polynomisk i tallverdiene i inputen, men ikke i inputens
lengde.

SUBSET-SUM har en DP-algoritme med kjøretid Θ(nt)\Theta(n\,t) — samme mønster som
0-1-ryggsekk i kap. 6.2. Med tt skrevet binært er
t=2lgtt = 2^{\lceil\lg t\rceil}, altså eksponentielt i inputlengden.

Konsekvensen: SUBSET-SUM er NP-komplett selv om den har en
Θ(nt)\Theta(n\,t)-algoritme. De to utsagnene er ikke i konflikt, fordi tt ikke er
inputstørrelsen.

✏️Eksempel 3: Samme algoritme, to konklusjoner

To problemer har hver sin DP-algoritme der en tallverdi inngår i
kjøretiden:

- maks-flyt med Ford-Fulkerson: O(Ef)O(E\cdot\lvert f^*\rvert);
- SUBSET-SUM med DP over målsummen: Θ(nt)\Theta(n\,t).

Begge algoritmene er pseudopolynomiske. Likevel ligger det ene problemet i P og
det andre er NP-komplett.

Forklar hvorfor det ikke er en selvmotsigelse.

Det de har felles. Begge kjøretidene inneholder en tallverdi
f\lvert f^*\rvert og tt — som kan være enorm selv når instansen er kort å
skrive ned. Begge algoritmene er derfor pseudopolynomiske, og begge kan bruke
eksponentiell tid målt i inputens lengde.

Hvorfor maks-flyt likevel ligger i P. Fordi det finnes en annen
algoritme: Edmonds-Karp med O(VE2)O(VE^2), der ingen tallverdi inngår. Et problem
ligger i P så snart minst én polynomisk algoritme finnes — det kreves ikke
at alle er polynomiske.

Hvorfor SUBSET-SUM er NP-komplett. Fordi 3-CNF-SAT reduseres til det (se
kap. 7.3), og fordi det ligger i NP. Ingen har funnet
en algoritme uten tallverdien i kjøretiden — og finner noen én, følger
P=NPP = NP.

Det som avgjør, er altså ikke algoritmen, men reduksjonen.

pseudopolynomisk algoritme  ⟹̸  hardt problem\text{pseudopolynomisk algoritme} \;\not\Longrightarrow\; \text{hardt problem}
pseudopolynomisk algoritme  ⟹̸  lett problem\text{pseudopolynomisk algoritme} \;\not\Longrightarrow\; \text{lett problem}

Svarformen på eksamen: to til fire linjer. «Pseudopolynomisk er en egenskap
ved algoritmen: kjøretiden er polynomisk i tallverdiene, ikke i inputens
lengde. Problemets vanskelighet avgjøres av reduksjoner, ikke av at én
algoritme tilfeldigvis har denne formen — maks-flyt ligger i P til tross for
Ford-Fulkerson, og SUBSET-SUM er NP-komplett til tross for
Θ(nt)\Theta(n\,t)-algoritmen.»

📝Oppgave 5
Eksamensnivå, sjanger G

En kandidat skriver: «SUBSET-SUM kan løses i Θ(nt)\Theta(n\,t) med dynamisk
programmering. Det er polynomisk i nn og tt, så SUBSET-SUM ligger i P. Altså
har jeg vist at P=NPP = NP

Hvor svikter argumentet? Svar presist.

📝Oppgave 6
Eksamensnivå, sjanger…

Et firma har problemet PAKKEPLAN: gitt nn pakker med heltallsvekter og kk
biler med lik kapasitet, kan alle pakkene fordeles på bilene?

a) Skisser hvordan du ville vist at PAKKEPLAN er NP-hardt.
b) Skisser medlemskapsdelen.
c) En kollega finner en DP-algoritme med kjøretid Θ(nW)\Theta(n\,W), der WW
er kapasiteten. Motsier det a)?

Oppslagstabellen for sjanger G

Du har vistDa følgerDa følger ikke
ApXA \le_p X med AA NP-komplettX er NP-hardtat X er NP-komplett (medlemskap mangler)
XpAX \le_p A med AA NP-komplettX ligger i NPnoe som helst om at X er hardt
ApXA \le_p X og X i NPX er NP-komplettat X er umulig å løse
XpYX \le_p Y og Y i PX ligger i Pnoe om Y sin vanskelighet
X er NP-komplett og X i PP=NPP = NPat P=NPP = NP faktisk er sant
Algoritmen for X er pseudopolynomiskingenting om X sin vanskelighetverken at X er hardt eller lett

Én presisering som er verdt å ta med seg. Alle radene leses fra venstre mot
høyre, og alle bygger på den samme ene setningen: pilen peker mot det som er
minst like vanskelig. Kan du lese pilen riktig, kan du hele tabellen.

Begrepsbank

Begrepsbanken er flashcard- og repetisjonsstoff — den gjentar det du nettopp
har lest. Hopp trygt over ved førstegangslesing; tidsanslaget for kapitlet
gjelder kjernestoffet.

Polynomisk reduksjon
ApBA \le_p B: hver AA-instans oversettes til en BB-instans i polynomisk tid,
med svaret bevart begge veier.

Tre krav: polynomisk oversettelse, svarbevaring «hvis og bare hvis», og
definert for alle instanser.

Oversetter instanser, ikke algoritmer. Du skriver om problemteksten, ikke
løsningsmetoden.

Retningsregelen
ApBA \le_p B betyr at BB er minst like vanskelig som AA.

For å vise at X er vanskelig, reduserer du FRA et kjent vanskelig problem
TIL X.

Felle #1 er å snu dette. Den motsatte veien er sann for hvert eneste
problem i NP og skiller derfor ingenting.

Hva en reduksjon ikke viser
XpAX \le_p A med AA hardt viser ikke at X er hardt — bare at X ikke er
vanskeligere enn AA.

ApXA \le_p X viser ikke at X er NP-komplett — medlemskapet i NP mangler.

Å si hva reduksjonen ikke viser, er halve svaret i sjanger G.

NP-hardt

alle problemer i NP kan reduseres polynomisk til problemet.

Vises i praksis ved å redusere ett kjent NP-komplett problem til det.

Trenger ikke selv ligge i NP — et NP-hardt problem kan være mye
vanskeligere, og trenger ikke være et avgjørelsesproblem.

NP-komplett

NP-hardt og i NP.

De vanskeligste problemene i NP; de står og faller sammen.

Beviset har to uavhengige deler: sertifikat og verifikasjon for
medlemskapet, og en reduksjon for hardheten.

P=NPP=NP-konsekvensen

en polynomisk algoritme for ett NP-komplett problem gir polynomiske
algoritmer for alle problemer i NP, og dermed P=NPP = NP.

Argumentet: reduser vilkårlig ANPA \in NP til det NPC-problemet, og sett sammen
de to polynomiske algoritmene.

Sier ingenting om hvorvidt P=NPP = NP er sant. Spørsmålet er åpent.

De tre kravene til en reduksjon

1. oversettelsen regnes ut i polynomisk tid; 2. svaret bevares begge veier;
3. den er definert for alle instanser.

Alle tre er ledd som gir uttelling.

Krav 3 er den skjulte fellen: en reduksjon som bare dekker et
spesialtilfelle, beviser ingenting.

Kontrapositiv bruk
ApBA \le_p B og APA \notin P gir BPB \notin P.

Det er den formen reduksjonen brukes i når du skal vise hardhet: vanskeligheten
flyter framover langs pilen.

Lettheten flyter bakover: ApBA \le_p B og BPB \in P gir APA \in P.

SUBSET-SUM

gitt en mengde heltall og et måltall: finnes det en delmengde med sum nøyaktig
lik målet?

NP-komplett, men med en DP-algoritme på Θ(nt)\Theta(n\,t).

Det klareste eksempelet på pseudopolynomisk kjøretid, fordi tt er en
tallverdi og ikke inputstørrelsen.

Inputstørrelse

antall symboler som trengs for å skrive instansen ned.

Et tall tt skrevet binært tar lgt\lceil\lg t\rceil siffer; skrevet i
entallssystem tar det tt siffer.

All kompleksitetsteori måles i inputstørrelse, og det er derfor
tallverdiene i en kjøretid er mistenkelige.

Pseudopolynomisk

kjøretiden er polynomisk i tallverdiene i inputen, men ikke i inputens lengde.

Eksempler: Ford-Fulkerson med O(Ef)O(E\cdot\lvert f^*\rvert), 0-1-ryggsekk med
Θ(nW)\Theta(nW), SUBSET-SUM med Θ(nt)\Theta(n\,t).

Sier ingenting om problemets vanskelighet — det ene av eksemplene ligger i
P, de to andre er NP-komplette.

Felle #1 — reversert reduksjonsretning

å redusere til et NP-komplett problem og tro at det viser at ditt problem
er hardt.

Det viser bare at ditt problem ligger i NP — sant for hvert eneste
NP-problem.

Fagets mest fremhevede feil. Les pilen høyt før du leverer.

Felle #7 — pseudopolynomisk mot NP-hardt

å slutte fra en pseudopolynomisk algoritme til et hardt problem, eller fra en
pseudopolynomisk algoritme til et lett problem.

Begge slutningene er ugyldige.

Problemets vanskelighet avgjøres av reduksjoner, aldri av at én algoritme
tilfeldigvis har en tallverdi i kjøretiden.

Sjanger G — reduksjon og argument om vanskelighet

oppgavetypen der du skal si hvilken vei et argument går, hva det viser, og hva
det ikke viser.

Svarformen er to til fire linjer: retningen, konsekvensen, og forbeholdet.

Registrert i alle de 17 settene i grunnlaget — dette er den sikreste
sjangeren i faget.

Å lese reduksjonen høyt

kontrollen du gjør før du leverer: «jeg reduserer FRA TIL
, altså er mitt problem minst like vanskelig».

Stemmer ikke setningen, går pilen feil vei.

Tar fem sekunder og redder fagets dyreste feil.

Repetisjonsoppgaver

Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.

Skolesaga er en uavhengig læringsressurs og er ikke tilknyttet eller godkjent av Norges teknisk-naturvitenskapelige universitet. Dette er ikke offisielt studiemateriell. Les mer.