Klasserne af problemer, der kan løses i deterministisk og i ikke-deterministisk polynomiel tid; polynomiel reduktion; N P-fuldstændighed Videregående algoritmik Cormen et al. 34.1 34.3 Fredag den 12. december 2008
Vi vil præcisere distinktionen mellem medgørlige og umedgørlige problemer. Denne indsigt gør det muligt at skelne mellem Problemer, som kan løses effektivt (klassen P) Problemer, som ikke kan løses effektivt (omfatter klassen N P) Uløselige problemer Disse begreber har interesse for dataloger, fordi Hvorvidt N P P, er et af de største åbne problemer i teoretisk datalogi Det vrimler med svære problemer At se forskel på lette og svære problemer kan være vanskeligt Metoden problemreduktion er generelt anvendelig
Vind $ 1.000.000 Fra http://www.claymath.org/millennium
Jagten på effektive algoritmer Tre situationer fra Garey & Johnson. 1 En ærgerlige situation
Jagten på effektive algoritmer Tre situationer fra Garey & Johnson. 1 En ærgerlige situation 2 Ønskelig status
Jagten på effektive algoritmer Tre situationer fra Garey & Johnson. 1 En ærgerlige situation 2 Ønskelig status 3 Ofte det bedst opnåelige
Lette og svære problemer let Eulerkreds: For en forelagt graf: Har den en kreds med netop alle kanterne? Kinesiske postbud: For en vægtet graf og en grænse k: Har den en kreds med alle kanter og af længde højst k? 2CNF-SAT: For et logisk udtryk på 2CN-form: Kan en sandhedsværditilskrivning gøre det sandt? vanskeligt Hamiltonkreds: For en forelagt graf: Har den en kreds gennem hver knude netop en gang? Handelsrejsende: For en vægtet graf og en grænse k: Har den en kreds gennem alle knuder og af længde højst k? 3CNF-SAT: For et logisk udtryk på 3CN-form: Kan en sandhedsværditilskrivning gøre det sandt?
Lette og svære problemer (2) Korteste vej: For en vægtet graf med to knuder og en grænse k: Er der en vej fra den første knude til den anden af længde højst k? Længste vej: For en vægtet graf med to knuder og en grænse k: Er der en vej fra den første knude til den anden af længde mindst k? Kantoverdækning: For en graf og en grænse k: Kan man vælge k (eller færre) kanter, så hver knude er incident med en af de valgte? Alle fem tilhører P Knudeoverdækning: For en graf og en grænse k: Kan man vælge k (eller færre) knuder, så hver kant er incident med en af de valgte? Alle fem tilhører N PC (de vanskeligste problemer inden for N P)
1 Problemklassen P Afgørlighedsproblemer Indkodning af instans Accept, forkastelse, afgørelse
1 Problemklassen P Afgørlighedsproblemer Indkodning af instans Accept, forkastelse, afgørelse 2 Hamiltonkreds Verifikation i polynomiel tid N P og co-n P
1 Problemklassen P Afgørlighedsproblemer Indkodning af instans Accept, forkastelse, afgørelse 2 Hamiltonkreds Verifikation i polynomiel tid N P og co-n P 3 Reduktion N PC Et N P-fuldstændigt problem
Hvad er et problem? Afgørlighedsproblemer Indkodning af instans Accept, forkastelse, afgørelse Vi må skærpe begreberne: Problem vil mere præcist sige (parametriseret) problemtype, til hvis enkelttilfælde eller instanser der skal beregnes løsninger. (Relation/flertydig funktion) I praksis ofte optimeringsproblemer, men her i den teoretiske behandling betragtes Afgørlighedsproblemer: Hver instans har en binær løsning (kodet som 0 eller 1) Intet tab af generalitet Et problems kompleksitet måles ved kompleksiteten af den bedste metode (algoritme) til løsning af det.
Indkodning af instans Afgørlighedsproblemer Indkodning af instans Accept, forkastelse, afgørelse Medgørligt løseligt i polynomiel køretid. Robust over for mange variationer og kombinationer (og kodninger og maskinmodeller). Køretid O(n k ) for konstant k og instans(kode)længde n. Ideelt set skulle ræsonnementerne være uafhængige af den valgte indkodning. Men kodningen har stor betydning! Eksempel: Er k et primtal? for i=2 to k-1 do test i k kodning n antal samlet tid unær Θ(k) Θ(n) Θ(n) Θ(n 2 ) binær Θ(log(k)) Θ(n 2 ) Θ(2 n ) Θ(2 n n 2 ) decimal Θ(log(k)) Θ(n 2 ) Θ(10 n ) Θ(10 n n 2 )
Indkodning af instans Afgørlighedsproblemer Indkodning af instans Accept, forkastelse, afgørelse Medgørligt løseligt i polynomiel køretid. Robust over for mange variationer og kombinationer (og kodninger og maskinmodeller). Køretid O(n k ) for konstant k og instans(kode)længde n. Ideelt set skulle ræsonnementerne være uafhængige af den valgte indkodning. Men kodningen har stor betydning! Eksempel: Er k et primtal? for i=2 to k-1 do test i k kodning n antal samlet tid unær Θ(k) Θ(n) Θ(n) Θ(n 2 ) binær Θ(log(k)) Θ(n 2 ) Θ(2 n ) Θ(2 n n 2 ) decimal Θ(log(k)) Θ(n 2 ) Θ(10 n ) Θ(10 n n 2 ) Med binær kodning og Agrawal-Kayal-Saxena-metoden: Θ(n 11 ) (?)
Indkodning af instans Afgørlighedsproblemer Indkodning af instans Accept, forkastelse, afgørelse Medgørligt løseligt i polynomiel køretid. Robust over for mange variationer og kombinationer (og kodninger og maskinmodeller). Køretid O(n k ) for konstant k og instans(kode)længde n. Ideelt set skulle ræsonnementerne være uafhængige af den valgte indkodning. Men kodningen har stor betydning! Eksempel: Er k et primtal? for i=2 to k-1 do test i k kodning n antal samlet tid unær Θ(k) Θ(n) Θ(n) Θ(n 2 ) binær Θ(log(k)) Θ(n 2 ) Θ(2 n ) Θ(2 n n 2 ) decimal Θ(log(k)) Θ(n 2 ) Θ(10 n ) Θ(10 n n 2 ) Med binær kodning og Agrawal-Kayal-Saxena-metoden: Θ(n 11 ) (?) Med tal kodet ved deres primopløsning: Θ(1)
Standardkodning Afgørlighedsproblemer Indkodning af instans Accept, forkastelse, afgørelse Kodning af en ikke-orienteret graf G = (V, E): Nummerer knuderne (n = V ), lad kanterne være (u 1, v 1 ),..., (u k, v k ) (k = E ), og brug koden G = 0, 1,..., n 1, (u 1, v 1 ),..., (u k, v k ), idet overstregning betegner binær talkodning. Kodealfabet = (, ), 0, 1 og,. Eksempel G : G = 0,1,10,11,(0,1),(0,10),(0,11),(1,10),(10,11) På lignende måde vil vi i almindelighed bruge for at betegne en naturlig indkodning af.
Afgørlighedsproblem Afgørlighedsproblemer Indkodning af instans Accept, forkastelse, afgørelse Polynomielt relaterede indkodninger: Der skal findes polynomialtidsberegnelige omsætningsfunktioner begge veje. Gennem (i den teoretiske behandling altid binær) kodning af instanserne bliver et afgørlighedsproblem et prædikat (over binære ord). Eksempel For w {0, 1} : 1 hvis w = G, u, v, k for en ikke-orienteret graf G, i hvilken der går en vej med højst k PATH(w) = kanter fra et punkt u til et punkt v 0 ellers Bemærk specielt, at PATH(w) = 0, hvis w ikke indkoder en instans ( syntaksfejl ).
Afgørlighedsproblemer Indkodning af instans Accept, forkastelse, afgørelse Afgørlighedsproblem som formelt sprog L PATH = {w Σ PATH(w) = 1} Vi vil ikke skelne skarpt mellem et problem og det tilhørende formelle sprog (og altså for eksempel identificere PATH med L PATH ).
Genkendelse med en algoritme Afgørlighedsproblemer Indkodning af instans Accept, forkastelse, afgørelse Algoritme A acccepterer (genkender) er formelt ord x Algoritme A forkaster (afviser) et formelt ord x A standser med værdien 1 A standser med værdien 0
Afgørlighedsproblemer Indkodning af instans Accept, forkastelse, afgørelse Accepterende og afgørende algoritmer Algoritme A accepterer L (w accepteres af A w L) (så for w / L kan A(w) være udefineret eller 1) { } w accepteres af A w L Algoritme A afgør L w afvises af A w / L A accepterer L i polynomiel tid, hvis A accepterer L, og der findes et k, så det for alle ord w L gælder, at A(w) tager O(n k ) skridt (n = w ). A afgør L i polynomiel tid, hvis A afgør L, og der findes et k, så det for alle ord w gælder, at A(w) tager O(n k ) skridt (n = w ).
Problemklassen P Afgørlighedsproblemer Indkodning af instans Accept, forkastelse, afgørelse P = {L der findes A, som accepterer L i polynomiel tid} P Alle formelle sprog L Σ
Problemklassen P Afgørlighedsproblemer Indkodning af instans Accept, forkastelse, afgørelse P = {L der findes A, som accepterer L i polynomiel tid} = {L der findes A, som afgør L i polynomiel tid} (Sætning 34.2) P Alle formelle sprog L Σ
Hamiltonkreds Hamiltonkreds Verifikation i polynomiel tid N P og co-n P HAM-CYCLE = { G G har en Hamiltonkreds} William Rowan Hamilton 1805 65 (dodekaedergrafen 1857) Prøve alle permutationer: Ω(( n)!)
Verifikation Hamiltonkreds Verifikation i polynomiel tid N P og co-n P Algoritme A med to indgange: Ordinært indgangsord x og en attest (certificate) y A verificerer L L = {x y : A accepterer (x, y)}. A verificerer L i polynomiel tid, hvis A verificerer L, og der findes et k, så det for alle ord x L gælder, at der findes en attest y, så A(x, y) tager O(n k ) skridt (n = x ). Bemærk, at dette indebærer y = O(n k ).
Problemklasserne N P og co-n P Hamiltonkreds Verifikation i polynomiel tid N P og co-n P N P = {L der findes A, som verificerer L i polynomiel tid} HAM-CYCLE N P P N P (for man behøver ikke bruge en attest), men P N P vides ikke. co-n P = {L L N P} (med andre ord: sprog med afvisningsattest ) (Eksempel: PRIME co-n P. Faktisk også N P og (vist 2002) P.) P co-n P, hvilket efterlader fire muligheder:
Ikke-deterministisk polynomiel tid Hamiltonkreds Verifikation i polynomiel tid N P og co-n P En forklaring på betegnelsen rent historisk: En Turingmaskine M har endeligt mange tilstande Q, et båndalfabet Σ, tre mulige retninger (en plads til venstre / uændret / en plads til højre) og en overgangsrelation δ Q Σ Σ { 1, 0, +1} Q (p, a, b, d, q) δ betyder, at M i tilstand p med a under læseskrive-hovedet kan skrive b, flytte båndet d og gå til tilstand q. Ikke-deterministisk, hvis flere kvintupler har samme (p, a,...).
Eksponentiel udførelsestid Hamiltonkreds Verifikation i polynomiel tid N P og co-n P Hvert problem fra N P kan afgøres deterministisk i eksponentiel tid: For et ord x {0, 1} har de mulige attester længde O(n k ); prøv dem alle: tid O((2 c ) nk ). Sjusket identificeres umedgørlige problemer undertiden med problemer med eksponentiel køretid, men Der findes køretider imellem polynomiel og eksponentiel (for eksempel n log n ) Der findes langt værre køretider end eksponentiel. Ikke alle rekursive (beregnelige) funktioner er primitivt rekursive; Ackermanns funktion er et sådant eksempel
Reduktion (eksempel) Reduktion N PC Et N P-fuldstændigt problem At løse et problem ved hjælp af et andet. BIP-MATCH Parring i en todelt (bipartite) graf. BIP-MATCH MAX-FLOW Find en parring (kantmængde uden fælles endepunkter) med flest mulige kanter.
Reduktion (eksempel) Reduktion N PC Et N P-fuldstændigt problem At løse et problem ved hjælp af et andet. BIP-MATCH Parring i en todelt (bipartite) graf. BIP-MATCH MAX-FLOW Find en parring (kantmængde uden fælles endepunkter) med flest mulige kanter.
Reduktion (eksempel) Reduktion N PC Et N P-fuldstændigt problem At løse et problem ved hjælp af et andet. BIP-MATCH Parring i en todelt (bipartite) graf. BIP-MATCH MAX-FLOW Find en parring (kantmængde uden fælles endepunkter) med flest mulige kanter. En strømning er maksimal de midterste kanter udgør en maksimal parring.
Reduktion (definition) Reduktion N PC Et N P-fuldstændigt problem L 1 kan reduceres til L 2, i symboler L 1 L 2 f : Σ Σ w Σ (w L 1 f (w) L 2 ) L 1 kan reduceres polynomielt til L 2, i symboler L 1 pol L 2 f : Σ Σ som ovenfor, beregnelig i polynomiel tid (som funktion af længden af funktionsargumentet).
Reduktionsresultater Reduktion N PC Et N P-fuldstændigt problem Sætning Hvis L 1 pol L 2 og L 2 P, så L 1 P. Bevis: Antag x L 1 τ(x) L 2 og at A afgør L 2. Da vil x L 1 A(τ(x)) = 1. Køretid? Der findes algoritme B og konstanter j, k, så A afgør y i O(n k ) skridt, n = y, og B beregner τ(x) i O(n j ) skridt, n = x. Bemærk, at for x = n må nødvendigvis τ(x) = O(n j ), så det samlede antal skridt bliver O(n j + (n j ) k ); altså L 1 P Sætning Hvis L 1 pol L 2 og L 1 / P, så L 2 / P.
C Reduktion N PC Et N P-fuldstændigt problem De N P-fuldstændige problemer er de vanskeligste problemer inden for N P. Et problem Q ligger i N PC, hvis: 1 Q N P 2 P N P : P pol Q Det er hensigtsmæssigt at have en særskilt betegnelse for 2.; lad os sige, at Q er N P-vanskeligt i det tilfælde (N P-hard). Sætning Hvis et problem fra N PC kan løses i polynomiel tid, vil N P = P. P N P N PC (Σ ) Sætning Hvis P er en ægte del af N P, kan intet problem fra N PC løses i polynomiel tid.
Et N P-fuldstændigt problem Reduktion N PC Et N P-fuldstændigt problem Vi søger et problem, som alle N P-problemer skal kunne reduceres (polynomielt) til Hvert N P-problem har en verifikationsalgoritme Det fælles for verifikationsalgoritmer er, at de udtrykkes ved et computerprogram Naivt gæt: Computeren er N P-fuldstændig En computer er sat sammen af porte:
Kredsløbstilfredsstillelse Reduktion N PC Et N P-fuldstændigt problem Problemet CIRCUIT-SAT= { C C er et kredsløb, hvis indgange x 1,..., x n kan tildeles værdier (0/1) på en sådan måde, at udgangen z bliver 1}
Kredsløbstilfredsstillelse Reduktion N PC Et N P-fuldstændigt problem Problemet CIRCUIT-SAT= { C C er et kredsløb, hvis indgange x 1,..., x n kan tildeles værdier (0/1) på en sådan måde, at udgangen z bliver 1} (x 1, x 2, x 3 ) = (1, 1, 0).
Kredsløbstilfredsstillelse Reduktion N PC Et N P-fuldstændigt problem Problemet CIRCUIT-SAT= { C C er et kredsløb, hvis indgange x 1,..., x n kan tildeles værdier (0/1) på en sådan måde, at udgangen z bliver 1} (x 1, x 2, x 3 ) = (1, 1, 0).
Kredsløbstilfredsstillelse Reduktion N PC Et N P-fuldstændigt problem Problemet CIRCUIT-SAT= { C C er et kredsløb, hvis indgange x 1,..., x n kan tildeles værdier (0/1) på en sådan måde, at udgangen z bliver 1} (x 1, x 2, x 3 ) = (1, 1, 0). Dette kredsløb har ingen tilfredsstillende tildeling (34.3 1).
Reduktion N PC Et N P-fuldstændigt problem 1. Kredsløbstilfredsstillelse ligger i N P Attest: Værdierne på alle indgange, indre ledninger og udgangen: (Man kunne nøjes med indgangsværdierne, 34.3 4.) Verifikationsalgoritme: Tjek omkring alle porte samt udgangsledningen. Tager polynomiel tid.
Reduktion N PC Et N P-fuldstændigt problem 2. Kredsløbstilfredsstillelse er N P-vanskeligt Vi skal vise L pol CIRCUIT-SAT for vilkårligt sprog L N P. Lad A verificere L i polynomiel tid; vi skal konstruere f (beregnelig i polynomiel tid) fra instanser X til koden f (X) = C for et kredsløb C. En konfiguration under udførelse af A på en computer indeholder programmet A, ordretælleren PC og andre interne registre, instansen X, attesten Y og hjælpevariable V, hvor udgangen z er en af dem.
Reduktion N PC Et N P-fuldstændigt problem RAM CPU RAM Centralenheden (Central Processing Unit), der overfører hver konfiguration til den næste, kan tænkes realiseret ved et kombinatorisk kredsløb. A er fast; lad T (n) betegne det maksimale antal beregningsskridt, A bruger for indgangsord X af længde n. Der findes en konstant k, så T (n), længden af Y og længden af V alle er O(n k ). For indgangsord X dannes f (X) ved at folde beregningen ud :
Reduktion N PC Et N P-fuldstændigt problem Til forelagt X af længde n forbindes T (n) kopier af CPU som vist. Kredsløbet C fås ved kun at opfatte den indledende attest som indgange og det afsluttende z som udgang, f (X) = C. f (X) kan konstrueres i polynomiel tid. X L f (X) CIRCUIT-SAT L pol CIRCUIT-SAT