P vs. NP - Inspirationsdag

P vs. NP
Niels Grønbæk
Matematisk Institut
Københavns Universitet
3. feb. 2012
Den handelsrejsendes problem
 Kan det lade sig gøre at besøge n byer
forbundet ved et vejnet, G, inden for
budget, B?
 Hvad er den korteste rute mellem samtlige
byer i Sverige?
Sudokuproblemet

Har et givet Sudoku problem en løsning?


- for 9x9 tavler?
- for n2 x n2 tavler?

(for 9x9 tavler er der ca. 6.67 1021 Sudoku udfyldninger)
Bordplansproblemet
 Til en banket er indbudt 500 gæster. Der
er plads til 100 ved bordet.
 Ceremonimesteren har en liste over hvilke
af de 500 gæster, som ikke må sidde ved
siden af hinanden.
 Kan han lægge en bordplan?
 (Der er ca. 10300 mulige bordplaner; der er
ca. 1087 partikler i det kendte univers)
Primtalsproblemet
 Har et givet (meget stort) tal en ikke triviel
divisor? Hvis ja, find en faktorisering.
 Det største kendte primtal, P=243.112.609 -1,
har 12.978.189 cifre.
 (Iflg. primtalssætningen er der ca.
1012.978.180 primtal mindre end P.)
Fælles for problemerne
• Det er overkommeligt at checke om en forelagt mulighed
giver svaret ja.
• For store problemer
–
–
–
–
mange byer
store sudokutavler
store gæstebud
store tal
er løsningsstrategien *prøv dig frem* umulig at
gennemføre inden for realistiske beregningstider.
• Men det er i det store hele den bedste generelle
algoritme vi kender.
Lidt præcisering
• En algoritme er polynomiel, hvis der findes
naturligt tal k så beregningstiden for et tilladt
input af størrelse n er højst af størrelsesorden
nk.
– Eksempel: Addition af to n-cifrede tal kræver
maksimalt 2n basisoperationer (n additioner af 1cifrede tal + regnskab med maks n menter), så vi kan
bruge k=1. Multiplikation af to n-cifrede tal kan
beregnes i ca. n2 trin.
• Overkommelig (feasible) betyder polynomiel (og
typisk for k=1,2,3,4 - sammenlign fx k=100 og
antallet af partikler i det kendte univers.)
P vs. NP
• Et decision problem er et problem med 2
svarmuligheder {ja,nej}.
• Et decision problem er af klasse P, hvis
der findes en polynomiel algoritme der
beregner et svar.
• Et decision problem er af klasse NP, hvis
der er en polynomiel *bevis* algoritme for
ja input.
• Det er oplagt at P NP – ik’?
Om primtalsproblemet
• ’Sammensatte tal’ er i NP.
– Inputstørrelse af n = antal cifre
– For (d,n) skal checkes, 1<d<n og d | n.
divisionsalgoritmen er polynomiel i antal cifre.
• I 2004 blev det vist faktisk at være i P.
• Men primtalsfaktorisering kræver (stadig)
ca. n½ divisioner, altså eksponentielt i
antallet af cifre.
1.000.000 $ spørgsmål
Gælder P=NP?
• Formuleret af Stephen Cook & Leonid Levyn
(uafhængigt) i tidlige 1970’er.
• Cook har forudsagt at inden 2020 bliver det bevist at
svaret er nej.
• I svøb længe. Hænger sammen med problemet om
automatisering af matematiske beviser – et problem som
Gödel og von Neumann diskuterede i 50’erne, og som
har stadigt voksende opmærksomhed
• Leibnitz’ (1646-1716) tro på formallogikken: ”Meine
Herren, rechen wir!” hviler jo også på at alt (væsentligt)
kan beregnes inden for rimelig tid.
Strategi?
• Udvalgte NP-problemer: Hvis
Handelsrejseproblemet kan løses i
polynomiel tid, så er P=NP. Dette problem
er nemlig NP-fuldstændigt.
• Mange andre typisk kombinatoriske:
Sudoku-, bordplans-, minestryger-… og
grafteoretiske: grafisomorfi,
Hamiltonkreds, 3-farvning,… er NPfuldstændige.
NP-fuldstændighed
• Et NP-problem P er NP-fuldstændigt
dersom ethvert NP-problem kan reduceres
til P i polynomiel tid, dvs. hvis Q er et NPproblem så findes der en polynomiel
algoritme A fra Q-input, til P-input,
således at A(q) giver P-svaret ”ja” hvis og
kun hvis q giver Q-svaret ”ja”.
P>Q
Input q
A
Input p
AQ
AP
ja, nej
ja, nej
SAT-problemet
• AND/OR udtryk, fx
(w  n  m)  (w m  l)  (w n   l)
• Findes der værdier som giver
sandhedsværdi True?
• Dette er det første NP-problem som blev
vist at være NP-fuldstændigt (Cook, 1971)
Der er i dag titusindvis af kendte NPfuldstændige problemer.
Minesweeper
• Er en given udfyldning af minestrygerfeltet
logisk konsistent med reglerne.
Konsekvenser af P=NP
• Mange betydningsfulde problemer vil få langt
hurtigere beregningsalgoritmer.
• Public-key kryptering truet: At bryde koden er et
NP problem, så det bliver vanskeligere at holde
sig foran den teknologiske (computerhastighed)
udvikling ved blot at gøre nøglen større.
– En algoritme som løser SAT i n2 trin kan bruges til at
faktorisere 200-cifrede tal på få minutter.
• Automatiseret bevisførelse.
– Formulér Riemann-hypotesen som formelt logisk
udsagn og brug SAT-algoritmen.
• Kunstig intelligens
Konsekvenser af PNP
• Public key ikke truet (i sin grundvold)
– Men måske alligevel, i stedet for med sikkerhed at
kunne bryde alle koder, kan man jo være tilfreds med
at kunne bryde koden med en vis sandsynlighed.
• Hvis et problem er NP-fuldstændigt, skal man
ikke spilde tid på at finde en hurtig algoritme.
– Et relevant delproblem (interessante input) kan være
P
– Led efter approksimative løsninger
Links
• Primes is in P
http://www.ams.org/notices/200305/feabornemann.pdf
• Millenium problems
http://www.claymath.org/millennium/
• Travelling salesman problem
http://www.tsp.gatech.edu/
• Minesweeper
http://gameswizard.com/j_jvmine.html