, den handelsrejsendes problem, delmængdesum-problemet Videregående algoritmik Cormen et al. 34.5.3 34.5.5 Fredag den 19. december 2008
1 N P-fuldstændige problemer
1 N P-fuldstændige problemer 2 Reduktion af VERTEX-COVER til HAM-CYCLE Reduktion af HAM-CYCLE til TSP
1 N P-fuldstændige problemer 2 Reduktion af VERTEX-COVER til HAM-CYCLE Reduktion af HAM-CYCLE til TSP 3
Overordnet plan for reduktioner Plan: CIRCUIT-SAT SAT 3-CNF-SAT 3 CLIQUE VERTEX-COVER HAM-CYCLE TSP SUBSET-SUM
N P-fuldstændige problemer Reduktion af VERTEX-COVER til HAM-CYCLE Reduktion af HAM-CYCLE til TSP En hamiltonkreds (hamiltonian cycle) i en graf er en kreds, der netop besøger hver af knuderne en gang. Som afgørlighedsproblem: HAM-CYCLE = { G G har en hamiltonkreds} En systematisk kombinatorisk dybde-først-gennemsøgning fra knude til knude ville være meget ineffektiv. Men: Sætning HAM-CYCLE N P Bevis Brug en påstået hamiltonkreds som attest; let at kontrollere (i polynomiel tid)
Reduktion af VERTEX-COVER til HAM-CYCLE Reduktion af HAM-CYCLE til TSP Reduktion af VERTEX-COVER til HAM-CYCLE (1) Nu godtgøres VERTEX-COVER pol HAM-CYCLE. For en forelagt graf G = (V, E) og et heltal k skal vi med andre ord anvise en graf G = (V, E ), der netop har en hamiltonkreds, hvis G har en knudeoverdækning af størrelse k. For hver kant (u, v) E konstrueres en widget (tingest, dims, dippedut, dingenot) W uv med 12 knuder og 14 kanter: For en kant (u, v) E benævnes de 12 knuder [u, v, 1], [u, v, 2],..., [u, v, 6], [v, u, 1], [v, u, 2],..., [v, u, 6]. Da grafen er ikke-orienteret, er (u, v) samme kant som (v, u) (burde egentlig skrives {u, v}), og man kan vælge at opfatte W uv som W vu.
Reduktion af VERTEX-COVER til HAM-CYCLE Reduktion af HAM-CYCLE til TSP Reduktion af VERTEX-COVER til HAM-CYCLE (2) V består af s 1,..., s k samt af knuderne i W uv, (u, v) E.
Reduktion af VERTEX-COVER til HAM-CYCLE Reduktion af HAM-CYCLE til TSP Reduktion af VERTEX-COVER til HAM-CYCLE (2) V består af s 1,..., s k samt af knuderne i W uv, (u, v) E. Som et eksempel vil denne knudeoverdækningsinstans give anledning til knuderne herunder
Reduktion af VERTEX-COVER til HAM-CYCLE Reduktion af HAM-CYCLE til TSP Reduktion af VERTEX-COVER til HAM-CYCLE (3) For hver knude u V vælges en ordning ((u, u (1) ), (u, u (2) ),..., (u, u (deg(u)) )) af kanterne incidente med knuden.
Reduktion af VERTEX-COVER til HAM-CYCLE Reduktion af HAM-CYCLE til TSP Reduktion af VERTEX-COVER til HAM-CYCLE (3) For hver knude u V vælges en ordning ((u, u (1) ), (u, u (2) ),..., (u, u (deg(u)) )) af kanterne incidente med knuden. Denne (vilkårlige) ordning bruges i definitionen af E : E består af tre typer kanter: 1 Kanterne i W uv erne 2 Kanter ([u, u (i), 6], [u, u (i+1), 1]) for alle u V, 1 i < deg(u) 3 Kanter (s j, [u, u (1), 1]) og ([u, u (deg(u)), 6], s j ) for alle u V, 1 j k
Reduktion af VERTEX-COVER til HAM-CYCLE Reduktion af HAM-CYCLE til TSP Reduktion af VERTEX-COVER til HAM-CYCLE (3) For hver knude u V vælges en ordning ((u, u (1) ), (u, u (2) ),..., (u, u (deg(u)) )) af kanterne incidente med knuden. Denne (vilkårlige) ordning bruges i definitionen af E : E består af tre typer kanter: 1 Kanterne i W uv erne 2 Kanter ([u, u (i), 6], [u, u (i+1), 1]) for alle u V, 1 i < deg(u) 3 Kanter (s j, [u, u (1), 1]) og ([u, u (deg(u)), 6], s j ) for alle u V, 1 j k Konstruktionen kan foretages i polynomiel tid; specielt optælles V = 12 E + k 12 E + V E = 14 E + (2 E V ) + 2k V = 16 E + (2k 1) V 16 E + (2 V 1) V
Reduktion af VERTEX-COVER til HAM-CYCLE Reduktion af HAM-CYCLE til TSP Reduktion af VERTEX-COVER til HAM-CYCLE (4) Vi gør eksemplet færdigt. De valgte ordninger er: fra w : ((w, x), (w, y), (w, z)), fra x : ((x, w), (x, y)), fra y : ((y, x), (y, w)), fra z : ((z, w)).
Reduktion af VERTEX-COVER til HAM-CYCLE Reduktion af HAM-CYCLE til TSP Reduktion af VERTEX-COVER til HAM-CYCLE (5) Fra delgraferne W uv er det kun knuderne [u, v, 1], [v, u, 1], [u, v, 6] og [v, u, 6], der forbindes udadtil. En eventuel hamiltonkreds i G må derfor internt inden for W uv forløbe på en af følgende måder:
Reduktion af VERTEX-COVER til HAM-CYCLE Reduktion af HAM-CYCLE til TSP Reduktion af VERTEX-COVER til HAM-CYCLE (5) Fra delgraferne W uv er det kun knuderne [u, v, 1], [v, u, 1], [u, v, 6] og [v, u, 6], der forbindes udadtil. En eventuel hamiltonkreds i G må derfor internt inden for W uv forløbe på en af følgende måder: Egentlig er der kun to forskellige måder: Idet (u, v) og (v, u) jo er samme kant, er også W uv = W vu og (b) = (d) (ved u v).
Reduktion af VERTEX-COVER til HAM-CYCLE Reduktion af HAM-CYCLE til TSP Reduktion af VERTEX-COVER til HAM-CYCLE (6) Lemma For alle 1 i, j k findes der i G for hvert u V en vej P iuj fra s i til s j, som ikke indeholder indre punkter af form s l. Disse veje er de eneste fra s i til s j, som ikke indeholder indre punkter af form s l, og pånær forløbet gennem delgraferne W vw er de entydige.
Reduktion af VERTEX-COVER til HAM-CYCLE Reduktion af HAM-CYCLE til TSP Reduktion af VERTEX-COVER til HAM-CYCLE (6) Lemma For alle 1 i, j k findes der i G for hvert u V en vej P iuj fra s i til s j, som ikke indeholder indre punkter af form s l. Disse veje er de eneste fra s i til s j, som ikke indeholder indre punkter af form s l, og pånær forløbet gennem delgraferne W vw er de entydige. Bevis Ved inspektion af de forskellige kanttyper. W vw Kanter gennem W vw ; forløb som enten (b) eller (c) ovenfor (2) Kant af type 2 (3) Kant af type 3 P iuj = s i (3)[u, u (1), 1]W uu (1)[u, u (1), 6](2)[u, u (2), 1]W uu (2)[u, u (2), 6]... (2)[u, u (deg(u)), 1]W uu (deg(u))[u, u (deg(u)), 6](3)s j
Reduktion af VERTEX-COVER til HAM-CYCLE Reduktion af HAM-CYCLE til TSP Reduktion af VERTEX-COVER til HAM-CYCLE (7) Sætning G, k VERTEX-COVER, hvis og kun hvis G HAM-CYCLE. Bevis
Reduktion af VERTEX-COVER til HAM-CYCLE Reduktion af HAM-CYCLE til TSP Reduktion af VERTEX-COVER til HAM-CYCLE (7) Sætning G, k VERTEX-COVER, hvis og kun hvis G HAM-CYCLE. Bevis Antag, U = {u 1,..., u k } overdækker G; da vil P 1u1 2P 2u2 3... P kuk 1 være en hamiltonkreds i G, idet vi udformer passagerne gennem delgraferne W vw som henholdsvis (b) eller (c), efter som kun det ene af punkterne v, w eller de begge ligger i overdækningen U.
Reduktion af VERTEX-COVER til HAM-CYCLE Reduktion af HAM-CYCLE til TSP Reduktion af VERTEX-COVER til HAM-CYCLE (7) Sætning G, k VERTEX-COVER, hvis og kun hvis G HAM-CYCLE. Bevis Antag, U = {u 1,..., u k } overdækker G; da vil P 1u1 2P 2u2 3... P kuk 1 være en hamiltonkreds i G, idet vi udformer passagerne gennem delgraferne W vw som henholdsvis (b) eller (c), efter som kun det ene af punkterne v, w eller de begge ligger i overdækningen U. Hvis der omvendt er forelagt en hamiltonkreds i G, vil den efter tur gå gennem en permutation s p(1), s p(2),..., s p(k) af knuderne s l og derfor have form P p(1)u1 p(2)p p(2)u2 p(3)... P p(k)uk p(1). Men så vil {u 1, u 2,..., u k } overdække G.
Reduktion af VERTEX-COVER til HAM-CYCLE Reduktion af HAM-CYCLE til TSP Reduktion af VERTEX-COVER til HAM-CYCLE (7) Sætning G, k VERTEX-COVER, hvis og kun hvis G HAM-CYCLE. Bevis Antag, U = {u 1,..., u k } overdækker G; da vil P 1u1 2P 2u2 3... P kuk 1 være en hamiltonkreds i G, idet vi udformer passagerne gennem delgraferne W vw som henholdsvis (b) eller (c), efter som kun det ene af punkterne v, w eller de begge ligger i overdækningen U. Hvis der omvendt er forelagt en hamiltonkreds i G, vil den efter tur gå gennem en permutation s p(1), s p(2),..., s p(k) af knuderne s l og derfor have form P p(1)u1 p(2)p p(2)u2 p(3)... P p(k)uk p(1). Men så vil {u 1, u 2,..., u k } overdække G. I forbindelse med det tidligere resultat HAM-CYCLE N P følger heraf HAM-CYCLE N PC.
Den handelsrejsendes problem Reduktion af VERTEX-COVER til HAM-CYCLE Reduktion af HAM-CYCLE til TSP For en ikke-orienteret graf med heltallige kantvægte søges den billigste rundtur (dvs. hamiltonkreds). Uønskede kanter kan gøres urimeligt dyre, så vi kan lige så godt antage grafen fuldstændig, det vil sige c : V V Z. Som afgørlighedsproblem: TSP = { n, c, k K n har en hamiltontur, der højst koster k} Sætning TSP N P Bevis Turen kan bruges som attest
Reduktion af HAM-CYCLE til TSP Reduktion af VERTEX-COVER til HAM-CYCLE Reduktion af HAM-CYCLE til TSP Sætning HAM-CYCLE pol TSP Bevis For { en forelagt graf G = (V, E) defineres 0 hvis (u, v) E c(u, v) = og k = 0. 1 hvis (u, v) / E Instans af HAM-CYCLE Instans af TSP
Reduktion af HAM-CYCLE til TSP Reduktion af VERTEX-COVER til HAM-CYCLE Reduktion af HAM-CYCLE til TSP Sætning HAM-CYCLE pol TSP Bevis For { en forelagt graf G = (V, E) defineres 0 hvis (u, v) E c(u, v) = og k = 0. 1 hvis (u, v) / E Instans af HAM-CYCLE Instans af TSP Konstruktionen af ( V, c, k) kan foretages i polynomiel tid.
Reduktion af HAM-CYCLE til TSP Reduktion af VERTEX-COVER til HAM-CYCLE Reduktion af HAM-CYCLE til TSP Sætning HAM-CYCLE pol TSP Bevis For { en forelagt graf G = (V, E) defineres 0 hvis (u, v) E c(u, v) = og k = 0. 1 hvis (u, v) / E Instans af HAM-CYCLE Instans af TSP Konstruktionen af ( V, c, k) kan foretages i polynomiel tid. G har en hamiltonkreds, hvis og kun hvis K V har en rundtur med omkostning 0. Sætning TSP N PC.
Betragt {4, 7, 10, 12, 15, 24}. Kan man herfra udvælge tal med sum 38?
Betragt {4, 7, 10, 12, 15, 24}. Kan man herfra udvælge tal med sum 38?
Betragt {4, 7, 10, 12, 15, 24}. Kan man herfra udvælge tal med sum 38? SUBSET-SUM = { (s 1,..., s n ), t m N 1 i 1 <...<i m n : m j=1 s i j = t} idet {n, s 1,..., s n, t} N.
Betragt {4, 7, 10, 12, 15, 24}. Kan man herfra udvælge tal med sum 38? SUBSET-SUM = { (s 1,..., s n ), t m N 1 i 1 <...<i m n : m j=1 s i j = t} idet {n, s 1,..., s n, t} N. Sætning SUBSET-SUM N P Bevis Man kan bruge {i 1,..., i m } som attest
Betragt {4, 7, 10, 12, 15, 24}. Kan man herfra udvælge tal med sum 38? SUBSET-SUM = { (s 1,..., s n ), t m N 1 i 1 <...<i m n : m j=1 s i j = t} idet {n, s 1,..., s n, t} N. Sætning SUBSET-SUM N P Bevis Man kan bruge {i 1,..., i m } som attest Sætning 3-CNF-SAT pol SUBSET-SUM
Reduktion af 3-CNF-SAT til SUBSET-SUM (1) Bevis Vi får forelagt et udtryk ϕ = C 1... C k på 3-CN-form, det vil sige hver klausul C j er en disjunktion af netop tre litteraler (variable eller deres negation) dannet af logiske variable x 1,..., x n. Vi antager, ingen klausul både indeholder en variabel og dens negation, samt at alle variable bliver brugt.
Reduktion af 3-CNF-SAT til SUBSET-SUM (1) Bevis Vi får forelagt et udtryk ϕ = C 1... C k på 3-CN-form, det vil sige hver klausul C j er en disjunktion af netop tre litteraler (variable eller deres negation) dannet af logiske variable x 1,..., x n. Vi antager, ingen klausul både indeholder en variabel og dens negation, samt at alle variable bliver brugt. Delmængdesumproblemet får 2n + 2k tal, nemlig to (som vi vil kalde v i og v i ) for hver logisk variabel x i og to (som vi vil kalde s j og s j ) for hver klausul C j. Disse addender tilligemed måltallet konstrueres som n + k-cifrede tal i titalssystemet, idet vi lader de enkelte cifre (fra venstre mod højre) svare til x 1,..., x n, C 1,..., C k.
Reduktion af 3-CNF-SAT til SUBSET-SUM (2) Måltallet t skal have 1 i hvert ciffer svarende til en variabel og 4 i hvert ciffer svarende til en klausul. v i skal have 1 i cifferet svarende til x i og i cifre svarende til klausuler med x i og 0 på alle andre pladser. v i skal have 1 i cifferet svarende til x i og i cifre svarende til klausuler med x i og 0 på alle andre pladser. s j skal have 1 i cifferet svarende til C j og ellers 0 på alle andre pladser. s j skal have 2 i cifferet svarende til C j og ellers 0 på alle andre pladser. Forudsætningen om, at alle logiske variable bruges, og at ingen klausul både indeholder en variabel og dens negation, indebærer, at alle disse tal bliver forskellige.
Reduktion af 3-CNF-SAT til SUBSET-SUM (3) Som et eksempel kodes dette logiske udtryk som delmængdesumproblem: ϕ = C 1 C 2 C 3 C 4 = (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) (x 1 x 2 x 3 )
Reduktion af 3-CNF-SAT til SUBSET-SUM (3) Som et eksempel kodes dette logiske udtryk som delmængdesumproblem: ϕ = C 1 C 2 C 3 C 4 = (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) (x 1 x 2 x 3 ) Transformationen kan foretages i polynomiel tid (måltallets n + k cifre hver i O(1), de 2n + 2k addenders n + k cifre hver i O(k)).
Reduktion af 3-CNF-SAT til SUBSET-SUM (4) Sætning ϕ har en tilfredsstillende tildeling, hvis og kun hvis det konstruerede delmængdesumproblem kan løses.
Reduktion af 3-CNF-SAT til SUBSET-SUM (4) Sætning ϕ har en tilfredsstillende tildeling, hvis og kun hvis det konstruerede delmængdesumproblem kan løses. Bevis Bemærk først, at de enkelte cifferpladser kan adderes uden mente (blot grundtallet er 7; og vi har valgt grundtal 10).
Reduktion af 3-CNF-SAT til SUBSET-SUM (4) Sætning ϕ har en tilfredsstillende tildeling, hvis og kun hvis det konstruerede delmængdesumproblem kan løses. Bevis Bemærk først, at de enkelte cifferpladser kan adderes uden mente (blot grundtallet er 7; og vi har valgt grundtal 10). kun hvis : Vælg de tal blandt {v 1, v 1,..., v n, v n}, som svarer til sande litteraler. (Så passer summen i de n mest betydende pladser.) Tilpas ved passende valg af {s 1, s 1,..., s k, s k }. (Hver af de k mindst betydende pladser bidrager allerede med 1, 2 eller 3.)
Reduktion af 3-CNF-SAT til SUBSET-SUM (5) S = {1, 2, 10, 20, 100, 200, 1.000, 2.000, 10.011, 11.100, 100.001, 101.110, 1.000.110, 1.001.001}, t = 1.114.444.
Reduktion af 3-CNF-SAT til SUBSET-SUM (5) S = {1, 2, 10, 20, 100, 200, 1.000, 2.000, 10.011, 11.100, 100.001, 101.110, 1.000.110, 1.001.001}, t = 1.114.444.
Reduktion af 3-CNF-SAT til SUBSET-SUM (5) S = {1, 2, 10, 20, 100, 200, 1.000, 2.000, 10.011, 11.100, 100.001, 101.110, 1.000.110, 1.001.001}, t = 1.114.444. x 1 = 1, x 2 = 0, x 3 = 0
Reduktion af 3-CNF-SAT til SUBSET-SUM (5) S = {1, 2, 10, 20, 100, 200, 1.000, 2.000, 10.011, 11.100, 100.001, 101.110, 1.000.110, 1.001.001}, t = 1.114.444. x 1 = 1, x 2 = 0, x 3 = 0 hvis : En delmængde S med sum t må for i = 1,..., n netop indeholde enten v i eller v i. Vælges sandhedsværdien af x i tilsvarende, vil tildelingen tilfredsstille ϕ. (For s j og s j kan højst bidrage til position j med en sum på 3.)
Reduktion af 3-CNF-SAT til SUBSET-SUM (5) S = {1, 2, 10, 20, 100, 200, 1.000, 2.000, 10.011, 11.100, 100.001, 101.110, 1.000.110, 1.001.001}, t = 1.114.444. x 1 = 1, x 2 = 0, x 3 = 0 hvis : En delmængde S med sum t må for i = 1,..., n netop indeholde enten v i eller v i. Vælges sandhedsværdien af x i tilsvarende, vil tildelingen tilfredsstille ϕ. (For s j og s j kan højst bidrage til position j med en sum på 3.) Sætning SUBSET-SUM N PC
Reduktion af 3-CNF-SAT til SUBSET-SUM (5) S = {1, 2, 10, 20, 100, 200, 1.000, 2.000, 10.011, 11.100, 100.001, 101.110, 1.000.110, 1.001.001}, t = 1.114.444. x 1 = 1, x 2 = 0, x 3 = 0 hvis : En delmængde S med sum t må for i = 1,..., n netop indeholde enten v i eller v i. Vælges sandhedsværdien af x i tilsvarende, vil tildelingen tilfredsstille ϕ. (For s j og s j kan højst bidrage til position j med en sum på 3.) Sætning SUBSET-SUM N PC Samlinger af N P-fuldstændige problemer findes i Garey & Johnson: Computers and Intractability, a guide to the theory of NP-completeness, 1979 Pierluigi Crescenzi & Viggo Kann (eds.): A compendium of NP optimization problems, 2005. (Reference fra hjemmesiden)
En hemmelig kode skal være svær at bryde, så det kunne være en god ide at tage afsæt fra et N P-fuldstændigt problem! Vælg et så omfattende addendsystem S = {s 0,..., s n 1 }, at det bliver uoverkommeligt at prøve alle 2 n muligheder (det vil sige n 80), og send meddelelsen x = n 1 i=0 x i2 i som y = n 1 i=0 x is i. At genfinde x fra y, selv med kendskab til S, er umedgørligt.
En hemmelig kode skal være svær at bryde, så det kunne være en god ide at tage afsæt fra et N P-fuldstændigt problem! Vælg et så omfattende addendsystem S = {s 0,..., s n 1 }, at det bliver uoverkommeligt at prøve alle 2 n muligheder (det vil sige n 80), og send meddelelsen x = n 1 i=0 x i2 i som y = n 1 i=0 x is i. At genfinde x fra y, selv med kendskab til S, er umedgørligt. Men indkodningen skal have en bagdør, så den rette modtager kan afkode!
Strengt voksende addendmængde Betragt {2, 3, 6, 13, 27, 52}. Kan man herfra udvælge tal med sum 38?
Strengt voksende addendmængde Betragt {2, 3, 6, 13, 27, 52}. Kan man herfra udvælge tal med sum 38?
Strengt voksende addendmængde Betragt {2, 3, 6, 13, 27, 52}. Kan man herfra udvælge tal med sum 38? Et addendmængde S = {s 1,..., s n } kaldes strengt voksende, hvis det for alle j = 1,..., n gælder, at j 1 i=1 s i < s j.
Strengt voksende addendmængde Betragt {2, 3, 6, 13, 27, 52}. Kan man herfra udvælge tal med sum 38? Et addendmængde S = {s 1,..., s n } kaldes strengt voksende, hvis det for alle j = 1,..., n gælder, at j 1 i=1 s i < s j. Hvis S er strengt voksende, kan alle delmængdesum-problemer S, t løses efter det grådige princip: Betragt efter faldende størrelse hver addend, og medtag den, hvis der stadig er plads.
Strengt voksende addendmængde Betragt {2, 3, 6, 13, 27, 52}. Kan man herfra udvælge tal med sum 38? Et addendmængde S = {s 1,..., s n } kaldes strengt voksende, hvis det for alle j = 1,..., n gælder, at j 1 i=1 s i < s j. Hvis S er strengt voksende, kan alle delmængdesum-problemer S, t løses efter det grådige princip: Betragt efter faldende størrelse hver addend, og medtag den, hvis der stadig er plads. R. Merkle og M. Hellman foreslog i 1978 en metode, hvor en strengt voksende addendmængde (via modulo-regning) blev maskeret som et generelt umedgørligt problem til brug i et krypteringssystem med den beskrevne struktur.