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 PNP • 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
© Copyright 2024