Algoritmiek: Kortste Paden

advertisement
NP-volledigheid
Algoritmiek
Polynomiale algoritmen of
moeilijke problemen?
• Algoritme A is polynomiaal, als er een constante c
bestaat, zodat het algoritme bij inputs van formaat
n O(nc) tijd gebruikt.
• Sommige problemen hebben een polynomiaal
algoritme dat het oplost; voor andere is zo’n
algoritme niet bekend.
– NP-volledigheid: theorie die indicatie geeft dat
bepaalde problemen geen polynomiaal
algoritme hebben.
2
Algoritmiek
Exponentiele problemen
• Er zijn problemen waarvoor bewezen kan worden dat elk
algoritme voor die problemen exponentiele tijd gebruikt,
bijv.:
– Generalized Chess; Generalized Go (gegeneraliseerd
naar borden van willekeurig formaat)
• Gegeven een positie in spel, heeft de aan zet zijnde
speler een winnende strategie
– …
• Maar … voor veel problemen hebben we niet zo’n
bewijs…
3
Algoritmiek
Het Handelsreizigersprobleem
4
• Gegeven: stel steden 1, …
1
n. Voor elk paar steden i,
3
2
j, een afstand d(i,j), getal
2
K.
3 2
• Gevraagd: is er een route
die in stad 1 begint, elke
4
1
stad precies 1 keer bezoekt
3
2
en weer in stad 1 eindigt,
2
en totale lengte hooguit K
3 2
heeft?
13
4
Algoritmiek
2
5
4
2
5
4
4
3
2
2
3 2
4
1
2
5
11
Hamiltonian circuit
• Gegeven: Ongerichte
graaf G=(N,A).
• Gevraagd: Is er een cycle
in G, die elke knoop in G
precies een keer bezoekt?
Een graaf met een
Hamiltonian circuit
5
Algoritmiek
Subsetsum
• Gegeven getallen w1, …, wn, W.
• Bestaat er een deelverzameling van de getallen w1,
…, wn, die som precies W heeft?
Representatie: getallen in `binaire notatie’
Een O(nW) algoritme gebruikt exponentiele
tijd in het aantal bits nodig om de input
te noteren.
6
Algoritmiek
Knapsack
• Een inbreker kan hooguit W gewicht dragen. Hij
kan voorwerpen 1, … , n meenemen, met
gewichten w1, …, wn, en waardes v1, …, vn. Alle
gewichten en opbrengsten positieve gehele
getallen. Gegeven ook getal K.
• Kan de inbreker minstens spullen van
totaalwaarde K meenemen?
7
Algoritmiek
Satisfiability
• Gegeven: logische
expressie over Boolse
variabelen.
• Gevraagd: kan aan de
variabelen waardes true en
false toegekend worden
zodat de expressie waar
wordt?
8
• (x1 or not x2) and (x2 or
not x1 or x3) and (not x3)
• Wordt waar als we bijv.
nemen:
– x1 = true;
– x2 = true;
– x3 = false
Algoritmiek
3-kleuring
• Gegeven: graaf G=(N,A).
• Gevraagd: is er een functie
N  {1,2,3}, zodat voor
elke kant {v,w} geldt:
– f(v)  f(w).
1
2
2
3
3
1
9
Algoritmiek
2
???
• Voor elk van deze problemen:
– Is er geen algoritme bekend dat het probleem
oplost en (worst case) polynomiale tijd
gebruikt.
– Is er geen bewijs dat het probleem niet in
polynomiale tijd op te lossen is.
• Er zijn nog veel meer problemen die zich net zo
gedragen, uit allerlei toepassingen.
10
Algoritmiek
Versies van problemen
• Beslissingsprobleem
– Vb.: Gegeven n steden met afstand voor elk paar
steden, en gegeven een getal k: is er een
handelsreizigerstour met totale afstand hooguit k?
• Optimalisatieprobleem
– Gegeven n steden met afstand voor elk paar steden, wat
is de lengte van de kortste handelsreizigerstour?
• Constructieprobleem
– Gegeven n steden met afstand voor elk paar steden, wat
is de kortste handelsreizigerstour?
11
Algoritmiek
Minstens zo moeilijk
Stelling: Als er voor de optimalisatievariant
(constructievariant) van het
handelsreizigersprobleem een polynomiaal
algoritme bestaat, dan bestaat er ook een
polynomiaal algoritme voor de beslissingsvariant
van het handelsreizigersprobleem.
Wat lastiger, maar ook waar: in de andere richting.
12
Algoritmiek
Over beslissingsproblemen
• Theorie van NP-volledigheid gaat met name over
beslissingsproblemen.
– Als we weten dat een beslissingsprobleem
`moeilijk’ is, dan is de bijbehorende
optimaliseringsvariant dat ook.
• Beslissingsprobleem kan je zien als verzameling:
– Verzameling van instanties die ja als antwoord
geven.
13
Algoritmiek
P
• Definitie: Een beslissings-probleem behoort tot de klasse P
als er een (deterministisch) algoritme is dat het probleem
oplost, en dat polynomiale tijd gebruikt.
• Deze problemen horen tot de klasse P:
– 2-Kleuring: gegeven een graaf, is er een kleuring van
de knopen met 2 kleuren zodat grenzende knopen
verschillend zijn.
– Kwadraat: gegeven een getal n, is n een kwadraat van
een natuurlijk getal?
– Priemgetal: gegeven n, is n een priemgetal?
– Minimum Spanning Tree
14
Algoritmiek
Bewijssysteem
• Veel problemen zijn van de vorm
– Gegeven: ….
– Gevraagd: bestaat er een …., zodat ….
• Bewijssysteem voor probleem R is verzameling F
van paren <x,q>, q  Q, voor een verzameling Q
van bewijzen of certificaten, zodat
– x  R  er bestaat een q met <x,q>  F
15
Algoritmiek
Voorbeelden van bewijssystemen
• Samengesteld getal: (Niet-Priemgetal)
– Neem Q de verzameling getallen, en doe
<x,q> F  q is een deler van x
• Hamiltonian Circuit:
– Neem Q de verzameling permutaties van
knopen, en doe <G,p> F  p vormt een
Hamiltonian circuit in G.
16
Algoritmiek
Soduku bewijssysteem:
(
,
)
17
Algoritmiek
Definitie NP
• NP is de klasse van de beslissingsproblemen R
waarvoor een bewijssysteem F bestaat, en een
polynoom p(n), en een algoritme A, zodat
– Voor alle mogelijke inputs x: er geldt:
• x  R  $ q: <x,q>  F, en als x formaat n
heeft, dan heeft q formaat hooguit p(n).
– A controleert of voor gegeven x, q, <x,q>  F.
– A gebruikt polynomiale tijd
18
Algoritmiek
Stellinkjes
• Stelling. De problemen Knapsack, Subsetsum,
3-kleuring, Satisfiability, Handelsreiziger,
Hamiltonian circuit behoren allen tot de klasse
NP.
• Stelling. P  NP
NP komt van niet-deterministisch
polynomiaal: gebaseerd op Turing
machine model met `niet-deterministische
berekeningen’.
19
Algoritmiek
Polynomiaal certificaat
• Eis: grootte certificaat moet begrensd zijn door
polynoom in de inputgrootte
• Voorbeeld waar dit niet hoeft te gelden: Rush
Hour (Schuifpuzzel; Rush Hour zit
waarschijnlijk niet in NP).
– Er zijn puzzels die exponentieel veel
zetten hebben in een oplossing
20
Algoritmiek
Interessant wetenschappelijk
probleem
• Niet bekend: zijn P en NP aan elkaar gelijk?
• Veel wetenschappers denken van niet. Veel
onderzoek is gedaan naar deze vraag!
• http://www.claymath.org/prizeproblems/pvsnp.htm :
verdien een miljoen dollar door dit probleem op te
lossen.
? NP
P
21
Algoritmiek
Allerlei gevolgen
• Als P=NP:
– Allerlei moeilijke problemen kunnen dan wel in
polynomiale tijd worden opgelost
– Cryptografie wordt lastig
• Als P NP
– We weten dan voor veel problemen dat ze niet
in polynomiale tijd kunnen worden opgelost
22
Algoritmiek
Transformaties 1
• Stelling: Als er een
polynomiaal algoritme
voor het
Handelsreizigersprobleem
bestaat, dan bestaat er een
polynomiaal algoritme
voor Hamiltonian circuit.
23
Stel we hebben algoritme X voor
Handelsreiziger.
Neem input G=(N,A) voor
Hamiltonian circuit.
Maak input voor Hand.reiz.probl.:
N verzameling steden
d(v,w) = 1 als {v,w} in A
d(v,w) = |N|+1 als {v,w} niet in
A.
Pas algoritme X op deze input toe.
G heeft Hamiltonian circuit, desd
als X een tour met lengte
hooguit |N| toelaat.
Algoritmiek
Transformaties 2
Stelling: Als er een
polynomiaal algoritme voor
het Knapsack probleem
bestaat, dan bestaat er een
polynomiaal algoritme voor
Subsetsum.
24
• In feite is Subsetsum een
speciaal geval, als voor
elk voorwerp zijn gewicht
gelijk is aan zijn waarde.
Algoritmiek
3-SATISFIABILITY
(ook: 3-SAT of SAT-3CNF)
• 3-SATISFIABILITY:
Conjunctive
– Eis dat de zin van de vorm is
Normal
– C1 en C2 en … en Cn
Form
• (clauses) met elke Ci van de vorm
– (zi1 of zi2 of zi3)
• met elke zij van de vorm:
– Variable xa of negatie van variable: not(xa)
• Vb: (x1 of x3 of not(x2)) en (not(x2) of x3 of not(x1))
25
Algoritmiek
Transformaties 3
Stelling: Als er een
polynomiaal algoritme voor
het 3-SATISFIABILITY
probleem bestaat, dan bestaat
er een polynomiaal algoritme
voor het 3kleuringsprobleem.
g is O(|N|+|A|) lang
26
• Stel we hebben algoritme voor
3-SATISFIABILITY.
• Gegeven graaf G=(N,A).
• Neem variabelen xv,i, voor elke
knoop v in N, i=1,2,3.
• Je kan een logische zin gin
3CNF maken, die waargemaakt
kan worden, d.e.s.d. als G 3kleurbaar is. (Op bord.)
• Pas algoritme voor Satisfiability
op gtoe.
Algoritmiek
Transformaties
• Elk van de bewijzen had een zelfde soort vorm:
reductie:
– Neem input x van probleem R
• We weten dat R moeilijk is
– Vertaal input x naar een input y = f(x) van
probleem Q
• We willen bewijzen dat Q moeilijk is
• Vertaling zodanig dat:
– Gebruikt polynomiale tijd
– Antwoorden (ja/nee) hetzelfde
27
Algoritmiek
Definitie
• Laat Q en R twee (beslissings)problemen zijn. Q
is polynomiaal reduceerbaar tot R, als er een
algoritme A is, dat
– Inputs voor Q afbeeldt op inputs voor R
– Polynomiale tijd gebruikt
– Voor alle x: x in Q  f(x) in R
• Notatie: Q  R
P
28
Algoritmiek
Over polynomiale Turing
reducties
• Als Q P R, en R kan worden opgelost in polynomiale tijd,
dan kan Q ook worden opgelost in polynomiale tijd.
• Dus ook: als Q P R, en er bestaat geen polynomiaal
algoritme voor Q, dan bestaat er ook geen polynomiaal
algoritme voor R.
• We zagen al:
– Ham. Circuit P Handelsreizigersprobleem
– SubsetSum P Knapsack
– 3-kleuring P Sat-3CNF
29
Algoritmiek
Nog zo’n reductie
Stelling 3-Satisfiability TP
3-Kleuring
Bewijs: Zij gegeven zin in
3CNF vorm, met
variabelen x1 , …,xr.
We maken nu een graaf:
1. Vertaal dat variabelen
true of false kunnen zijn:
30
Algoritmiek
true
false
C
x1
not
x1
We noemen
de kleuren:
C, true, false
x2
not
x2
…
Vervolg reductie
• Voor elke clause voegen
we stuk graaf met 6
knopen en wat kanten toe.
• De graaf is precies 3kleurbaar, desd als aan de
variabelen true en false
kan worden toegekend
zodat de zin waar wordt.
C
true
= een van de literals
uit de clause
31
Algoritmiek
F
F
Als alle drie clauses false,
dan is het fragment niet
kleurbaar
C
F
t
true
32
Algoritmiek
C
F
Satisfiability en 3-SAT
zijn `even moeilijk’
• 3-Satisfiability P 3-Kleuring
• 3-Kleuring P 3-Satisfiability
• Dus: er is een polynomiaal algoritme voor 3kleuring, desd als er een polynomiaal algoritme is
voor 3-Satisfiability.
33
Algoritmiek
NP-volledigheid
• Een probleem A is NP-volledig, als
– A behoort tot de klasse NP
– Voor elk probleem B in NP geldt:
B P A
• `Moeilijkste’ problemen in NP.
Stelling: Als A NP-volledig, en er is een
polynomiaal algoritme voor A, dan is er een
polynomiaal algoritme voor elk probleem in NP.
34
Algoritmiek
Stelling van Cook (1971)
• (3)-Satisfiability is NP-volledig.
Hoe bewijs je nog meer problemen NP-volledig?
Stelling Stel A is NP-volledig. Stel
beslissingsprobleem B zit in NP, en A TP B. Dan
is B ook NP-volledig.
Geeft manier om voor meer problemen
te bewijzen dat ze NP-volledig zijn
35
Algoritmiek
Meer NP-volledige problemen
Stelling: 3-Kleuring is NP-volledig.
Bewijs: 3-Kleuring  NP. 3-SAT is NPvolledig. 3-SAT P 3-Kleuring.
Stelling: Hamiltonian circuit, Handelsreiziger,
Knapsack, Subsetsum, Satisfiability (en
duizenden andere problemen uit allerlei
toepassingen) zijn allemaal NP-volledig.
Bewijs: steeds met behulp van reducties met
problemen die al eerder bewezen waren NPvolledig te zijn.
36
Algoritmiek
Gevolgen
• Als P = NP:
– Dan zijn alle problemen in NP, dus ook alle
NP-volledige problemen op te lossen in
polynomiale tijd. Maar … veel wetenschappers
denken dat dit niet zo is.
• Als P  NP:
– Dan is geen enkel NP-volledig probleem op te
lossen in polynomiale tijd.
37
Algoritmiek
Venn-diagram als P  NP
…
P
NP-volledige
problemen
NP
38
Algoritmiek
Gevolgen 2
• Als bekend is dat een probleem NP-volledig is, dan:
– Weten we dat het onwaarschijnlijk is dat er een
polynomiaal algoritme voor bestaat,
– Het in elk geval dat het vreselijk moeilijk zal zijn om
zo’n algoritme te vinden.
• Want als we zo’n polynomiaal algoritme gevonden
hebben, dan hebben we bewezen P=NP. (Kassa!)
– Moeten we dus zoeken naar alternatieve aanpakken:
• Speciale gevallen, benaderingsalgoritmen, slimme
vormen van exponentiele algoritmen, etc.
39
Algoritmiek
Hoe maak je een NPvolledigheidsbewijs?
Stel, we willen bewijzen: probleem Q is NP-volledig
• Stap 1: toon aan: probleem Q in NP. (Vaak makkelijk,
zelfs trivaal)
• Stap 2:
– Neem een NP-volledig probleem R
– Geef een algoritme A dat een input voor R vertaalt
naar een input voor Q
• Algoritme moet polynomiale tijd gebruiken
– Bewijs: R(x) d.e.s.d. als Q(A(x))
• Veel gemaakte fout: verkeerde kant op… 
40
Algoritmiek
Subsetsum
• Gegeven getallen a1, …, an, B.
• Bestaat er een deelverzameling van de getallen a1,
…, an, die som precies B heeft?
Representatie: getallen in `binaire notatie’
Een O(nB) algoritme gebruikt exponentiele
tijd in het aantal bits nodig om de input
te noteren.
41
Algoritmiek
Voorbeeld bewijs
Stelling. SubsetSum is NP-volledig
• Bewijs.
– SubsetSum is in NP (want …)
– Bewijs met reductie vanuit 3-Satisfiability
– Neem een Boolse expressie in conjunctive
normaalvorm, met 3 literals per clause
• Stel met m clauses en n variabelen
42
Algoritmiek
Notatie
• We gaan getallen decimaal noteren
• Voor elke variabele en voor elke clause hebben we een
digit
• Voor elke variabele nemen we twee getallen: eentje voor
true, en eentje voor false:
– 0 op een digit, behalve:
• 1 voor de digit van de variabele
• 1 als de literal de clause waarmaak
• Voor elke clause 2 dezelfde getallen, met 0 op alle digits
behalve die van de clause
• Doelgetal: B = 333….333111…111 (clauses; variabelen)
43
Algoritmiek
Voorbeeld
• (x1 or not(x2) or x4) and (not(x1) or x3 or x4) and
(x2 or not(x3) or not(x4)
• Variabele-getallen: 1001000 (x1); 0101000
(not(x1)); 0010100; 1000100; 01000010; 0010010;
1100001; 0010001;
• Clause-getallen: 1000000; 1000000; 0100000;
010000; 0010000; 0010000
• Doelgetal: B = 3331111
44
Algoritmiek
Correcte transformatie (schets
bewijs)
• De formule kan waargemaakt worden, dan en slechts dan
als een deelverzameling van de getallen bestaat met som B
• => Kies alle getallen die corresponderen met hoe je de
variabele kiest; maak de som kloppend met clause-getallen
• <= Geen enkele keuze geeft ooit een “carry”. Je moet dus
van elk paar voor een variabele er precies 1 kiezen. Zet de
variabelen op die manier waar/onwaar. Nu moet elke
clause vervuld zijn: de digit is 3, en hooguit 2 ervan
kunnen van clause-getallen komen, dus eentje van een
variabele getal -> die maakt de clause waar.
45
Algoritmiek
Knapsack
• Een inbreker kan hooguit W gewicht dragen. Hij
kan voorwerpen 1, … , n meenemen, met
gewichten w1, …, wn, en waardes v1, …, vn. Alle
gewichten en opbrengsten positieve gehele
getallen. Gegeven ook getal K.
• Kan de inbreker minstens spullen van
totaalwaarde K meenemen?
46
Algoritmiek
Knapsack
• Stelling. Knapsack is NP-volledig
• Nu we SubsetSum hebben is dit relatief
makkelijk…
47
Algoritmiek
Bewijs
• Knapsack in NP, want we kunnen in
polynomiale tijd voor een verzameling het
totaalgewicht en de totale waarde uitrekenen en
vergelijken met W en K
• Reductie vanuit SubsetSum: als we a1, …, an, B
hebben, nemen we:
– Voorwerpen met waarde ai en gewicht ai
– W=K=B
48
Algoritmiek
Nog een voorbeeld:
Dominating Set
• Gegeven: Graaf G=(V,E), integer K
• Gevraagd: Is er een deelverzameling W van V,
zodat voor elke v in V: v in W of v heeft een buur
in W en |W| <=K?
• Modelleert facility location problemen
49
Algoritmiek
NP-volledigheid van Dominating
Set
• Stelling: Dominating Set is NP-volledig.
• Bewijs:
1. Dominating Set behoort tot NP: een certificaat
is een deelverzameling van de knopen; we
kunnen in polynomiale tijd controleren of het
formaat hooguit K is en het een dominerende
verzameling is.
2. Met reductie vanuit 3-Satisfiability
50
Algoritmiek
Reductie
• Stel we hebben een instantie van 3-Satisfiability
• We kunnen een instantie van Dominating Set als
volgt maken:
x1
Not x1
C
51
C
Algoritmiek
C
…etc
Achtergronden
• Discussie: sterk en zwak NP-volledig
• Cook bewees 3-Satisfiability NP-volledig. Het
bewijs gebruikt Turing machines.
• Zelfde resultaat, gelijkertijd, verkregen door
Levin.
• Veel onderzoek gedaan naar P=NP vraag, maar
nog geen oplossing.
– O.a.: Millenium probleem Clay Math. Inst.
– Veel wetenschappelijke artikelen, boeken, …
52
Algoritmiek
Download