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
Moeilijk probleem 1:
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
Moeilijk probleem 2:
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
Moeilijk probleem 3:
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 exponentiële
tijd in het aantal bits nodig om de input
te noteren.
6
Algoritmiek
Moeilijk probleem 4:
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
Moeilijk probleem 5:
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
Moeilijk probleem 6:
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
Klassen van problemen
• We definiëren drie klassen problemen:
– P (“makkelijk” – polynomiaal)
– NP (“verifieerbaar”; “kleine certificaten”)
– NP-volledig (“moeilijk”)
• Er bestaan nog heel veel andere klassen (met
andere eigenschappen…)
14
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: Gegeven een samenhangende
graaf G met gewichten op de kanten en integer K; heeft G
een opspannende boom met totaal gewicht hooguit K?
15
Algoritmiek
NP
• Intuitie: “een oplossing is makkelijk te
controleren”
• Formele definitie gaat met “bewijssysteem”
16
Algoritmiek
Bewijssysteem
• Veel problemen zijn van de vorm
– Gegeven: ….
– Gevraagd: bestaat er een …., zodat ….
• Bewijssysteem voor probleem X is verzameling F
van paren <x,q>, q  Q, voor een verzameling Q
van bewijzen of certificaten, zodat
– x  X  er bestaat een q met <x,q>  F
17
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.
18
Algoritmiek
Soduku bewijssysteem:
(
,
)
19
Algoritmiek
Definitie NP
• NP is de klasse van de beslissingsproblemen B
waarvoor een bewijssysteem F bestaat, en een
polynoom p(n), en een algoritme A, zodat
– Voor alle mogelijke inputs x: er geldt:
• x  B  $ 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
20
Algoritmiek
In woorden
• NP: de problemen waar je oplossingen
(certificaten / bewijzen) voor hebt:
– In polynomiale tijd te controleren
– Antwoord ja: er bestaat een oplossing met
polynomiaal formaat
– Antwoord nee: er bestaat geen oplossing
21
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’.
22
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
23
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
24
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
25
Algoritmiek
Transformaties 1
• Stelling: Als er een
polynomiaal algoritme
voor het
Handelsreizigersprobleem
bestaat, dan bestaat er een
polynomiaal algoritme
voor Hamiltonian circuit.
26
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
Bewijsmethode
• Polynomiale reductie:
– Methode die:
• Krijgt een input van probleem A
– Van A weten we al dat het moeilijk is
• Geeft een input van probleem B
– We willen bewijzen dat B ook moeilijk is
• Zodat “antwoord (ja/nee) niet veranderd”
• In polynomiale tijd werkt
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
Stellingen
• Stelling 1. Als Q P R, en Q kan worden opgelost in
polynomiale tijd, dan kan R ook worden opgelost in
polynomiale tijd.
– Neem een input van R. Transformeer naar input
van Q. Los die op. Geef dat antwoord. Dit is een
correct, polynomiaal algoritme.
• Stelling 2. Als Q P R, en R kan niet worden opgelost
in polynomiale tijd, dan kan Q ook niet worden
opgelost in polynomiale tijd.
– Volgt direct uit Stelling 1
29
Algoritmiek
Transformaties 2
Stelling: Subsetsum P
Knapsack
30
• Bewijs: neem input van
Subsetsum. Neem voor
ieder getal a(i) een
voorwerp met waarde a(i)
en gewicht a(i). Zet K=W
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))
31
Algoritmiek
Transformaties 3
Stelling: 3-Kleuring P 3Satisfiability
• 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. (Schets op bord.)
• Pas algoritme voor Satisfiability
op gtoe.
g is O(|N|+|A|) lang
32
Algoritmiek
Nog zo’n reductie
Stelling 3-Satisfiability P
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:
33
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
34
Algoritmiek
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, dan en slechts dan als er een
polynomiaal algoritme is voor 3-Satisfiability.
35
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.
36
Algoritmiek
Stelling van Cook (1971)
• (3)-Satisfiability is NP-volledig.
– Knap bewijs met behulp van Turing machines
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
37
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.
38
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.
39
Algoritmiek
Venn-diagram als P  NP
…
P
NP-volledige
problemen
NP
40
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.
41
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… 
42
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.
43
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
44
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)
45
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
46
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.
47
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?
48
Algoritmiek
Knapsack
• Stelling. Knapsack is NP-volledig
• Nu we SubsetSum hebben is dit relatief
makkelijk…
49
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
50
Algoritmiek
Sterk en zwak NP-volledig
• Subsetsum kan in O(nW) tijd worden opgelost,
maar is toch NP-volledig
– Hoe zit dat?
51
Algoritmiek
Sterk en zwak NP-volledig
• Subsetsum kan in O(nW) tijd worden opgelost,
maar is toch NP-volledig
– Want W is exponentieel groot in het aantal bits
nodig om de input te geven
• We noemen Subsetsum zwak NP-volledig.
• Er bestaan ook sterk NP-volledige problemen
52
Algoritmiek
3-Partitie
• Gegeven: getallen a(1), …, a(3m).
• Vraag: kunnen we de getallen in m groepjes
verdelen, zodat elk groepje dezelfde som heeft?
• Voorbeeld: 4, 10, 5, 6, 7, 20, 22, 1, 30
• Ja: {5, 10, 20} en {4, 1, 30} en {6, 7, 22}
• NP-volledig zelfs als we getallen in unaire notatie
geven
53
Algoritmiek
Achtergronden
• 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, …
54
Algoritmiek
Download