Teoretisk og praktisk beregnelighed Thomas Bolander, DTU Informatik Matematik: Videnskaben om det uendelige 2 Folkeuniversitetet i København, efteråret 2011 Thomas Bolander, FUKBH 11 s. 1/28
Beregnelighed: Repetition Repetition omkring beregnelighed: En funktion f kaldes beregnelig hvis der findes en Turing-maskine (et computer-program) som, når vi giver x som input, giver f (x) som output. Ækvivalent (når f er en funktion på de naturlige tal): Funktionen er rekursiv. Eksempler på beregnelige funktioner: 1. Funktionen f (x) = x + 2. 2. Funktionen som afbilder ethvert andengradspolynomium ax 2 + bx + c over i dets reelle rødder. 3. Ackermann-funktionen. x Turing-maskine f (x) Thomas Bolander, FUKBH 11 s. 2/28
Repetition omkring afgørbarhed: Afgørbarhed: Repetition En egenskab E kaldes afgørbar hvis der findes en Turing-maskine (et computer-program) som, når vi giver x som input, svarer ja hvis x har egenskaben E og ellers nej. Ækvivalent (når det er en egenskab ved naturlige tal): Funktionen f defineret ved { 1 hvis x har egenskaben E f (x) = 0 hvis x har ikke egenskaben E er rekursiv. x Turing-maskine ja/nej Thomas Bolander, FUKBH 11 s. 3/28
Eksempler med afgørbarhed Eksempler på egenskaber som er afgørbare: 1. Givet et naturligt tal x, er x et primtal? 2. Givet et andengradspolynomium ax 2 + bx + c og et tal y, er y rod i polynomiet? 3. Givet en Diophantisk ligning og et tal y, er y løsning til ligningen? Eksempler på egenskaber som ikke er afgørbare: 1. Om en Diophantisk ligning har en (heltallig) løsning (Yuri Matiyasevich, 1973). 2. Om en formel i Peano-aritmetik er bevisbar (Alonzo Church, 1936). Sidstnævnte viser at computere ikke umiddelbart kan gøre matematikere arbejdsløse! Thomas Bolander, FUKBH 11 s. 4/28
Halting-problemet: Termination Et af de mest berømte uafgørbare problemer er Halting-problemet (Turing, 1936). Det er relateret til hvorvidt en Turing-maskine (computer-program) terminerer eller ej: dvs. om den stopper eller ender med at gå i uendelig løkke. Eksempel. En algoritme (computer-program) til at beregne fakultetsfunktionen f (x) = x!: Fakultet(n) 1 fak 1 2 while n 0 3 do fak fak n 4 n n 1 5 return fak Terminerer denne algoritme for alle heltals-input? Thomas Bolander, FUKBH 11 s. 5/28
Halting-problemet: Formulering af problemet Halting-problem: Givet en Turing-maskine (et computer-program) M og et input x, vil Turing-maskinen M terminere når den gives input x? Spørgsmål: Er Halting-problemet afgørbart? Præcisering af spørgsmålet: Findes der en Turing-maskine (et computer-program) Halting(M, x) som for alle Turing-maskiner M og alle inputs x til M opfylder: 1. Programmet Halting(M, x) returnerer ja hvis M terminerer når den gives input x. 2. Programmet Halting(M, x) returnerer nej hvis M ikke terminerer når den gives input x. Halting(M, x) er altså et program som kan afgøre om et vilkårligt andet program vil terminere eller ej. Ville være rart at have på sin computer! Thomas Bolander, FUKBH 11 s. 6/28
Halting-problemet: Eksempel Husk på programmet for fakultetsfunktionen: Fakultet(n) 1 fak 1 2 while n 0 3 do fak fak n 4 n n 1 5 return fak Antag programmet Halting beskrevet ovenfor findes. Da ville vi f.eks. have: 1. Halting(Fakultet, n) returnerer ja for alle n 0. 2. Halting(Fakultet, n) returnerer nej for all n < 0. Thomas Bolander, FUKBH 11 s. 7/28
Halting-problemet: Uafgørbarhed Desværre er Halting-problemet uafgørbart. Bevis. Antag for at opnå en modstrid at algoritmen Halting(M, x) eksisterer. Da kan vi definere følgende program: Finurlig(A) 1 if Halting(A, A) returnerer nej 2 then terminér 3 else gå i uendelig løkke Vi kan nu forsøge at give programmet Finurlig som input til sig selv! Da fås: Finurlig(Finurlig) terminerer Halting(Finurlig, Finurlig) returnerer nej Finurlig(Finurlig) terminerer ikke Dette er en modstrid. Thomas Bolander, FUKBH 11 s. 8/28
Halting-problemet og selvreference Beviset involverer åbenlyst selvreference: Vi giver et program sig selv som input! Turing-maskine Turing-maskine??? Men det burde måske ikke overraske (længere): Også selvreference på spil i uafgørbarheden af Peano aritmetik og Diophantiske ligninger...... og i Gödels ufuldstændighedssætning og Russells paradoks og andre centrale begrænsningsresultater i matematikken. Thomas Bolander, FUKBH 11 s. 9/28
Rice s Sætning Det bliver endnu værre: Kald en egenskab for partielle funktioner ikke-triviel hvis det en egenskab som nogen partielle funktioner har og andre ikke har. Rice s sætning. Enhver ikke-triviel egenskab ved partielle funktioner er uafgørbar. Korollar. Enhver ikke-triviel egenskab ved Turing-maskiner er uafgørbar. Eksempler på konsekvenser af Rice s teorem: 1. Der findes ikke et computerprogram, som kan afgøre om andre computerprogrammer er virusfrie. 2. Der findes ikke et computerprogram, som kan afgøre om andre computerprogrammer kan simplificeres. Sidstnævnte betyder at f.eks. optimal datakompression er uberegneligt (zip, tiff, flac, etc.). Thomas Bolander, FUKBH 11 s. 10/28
Mere uafgørbarhed: Puslespil Et andet uafgørbart problem er følgende: Puslespilsproblemet: Givet et endeligt antal forskellige typer af puslespilsbrikker, kan planen udfyldes med disse brikker? Thomas Bolander, FUKBH 11 s. 11/28
Penrose tilings Uafgørbarheden af puslespilsproblemet betyder at visse puslespil aldrig bliver periodiske, dvs. de bliver ved med at transformere sig. Hvordan kan man vide det? Roger Penrose Texas A&M University Thomas Bolander, FUKBH 11 s. 12/28
Uafgørbarhed af puslespilsproblemet Spørgsmål: Hvordan beviser man at puslespilsproblemet er uafgørbart (at man ikke generelt kan sige om puslespillet kan udfylde planen eller ej)? Svar: Matematikkens finurligheder vil ingen ende tage: Givet en Turing-maskine M og et input x, kan vi bygge et sæt semi-kvadratiske puslespilsbrikker ( ) sådan at den n te række i puslespillet indkoder indholdet af Turing-maskinens bånd i det n te beregningsskridt. Thomas Bolander, FUKBH 11 s. 13/28
Om at vise uafgørbarhed: Reduktion Bevis for uafgørbarhed af puslespilsproblemet: Vi indkoder Turing-maskiner som puslespil. Dette er en specialtilfælde af en generel strategi til at vise uafgørbarhed: At vise uafgørbarhed af egenskaben E: Vis, at for hver Turing-maskine M og input x kan vi danne et objekt y M,x, sådan at y M,x har egenskaben E hvis og kun hvis M terminerer på input x. Heraf følger: Hvis egenskaben E er afgørbar, er Halting-problemet afgørbart. Men Halting-problemet er jo ikke afgørbart, og dermed heller ikke E. Kaldes: En reduktion fra Halting-problemet til egenskaben E. Meget udbredt teknik. Næste slide viser eksempel indenfor egen forskning (publiceret 2011). Thomas Bolander, FUKBH 11 s. 14/28
Reduktion og uafgørbarhed i egen forskning Sætning 1. Antag følgende om en robot: 1. Den befinder sig i en verden bestående af endeligt mange fysiske objekter. 2. Der er ingen andre robotter i verden. 3. Den har endeligt mange forskellige handlinger til sin rådighed. Følgende problem er afgørbart: Givet en opgave som robotten skal udføre, findes der en endelig sekvens af handlinger som løser opgaven? Sætning 2. Antag samme som ovenstående, pånær: 2 Der er mindst én anden robot i verden. Samme problem som ovenfor er nu uafgørbart. Thomas Bolander, FUKBH 11 s. 15/28
Fra teoretisk beregnelighed til praktisk beregnelighed Det generelle puslespilsproblem er uafgørbart. Men uendelige puslespil er lidt ambitiøse. Hvad med endelige puslespil? Det endelige puslespilsproblem: Givet n forskellige typer af puslespilsbrikker for et n > 0, kan jeg lave et n n puslespil af dem? Vi antager her at alle brikker er semi-kvadratiske. Hvordan ses det at dette må være et afgørbart problem? Afgørbare problemer kan principielt set set altid løses. Spørgsmål: Men gælder det også i praksis? For at kunne svare, må vi se nærmere på sværhedsgraden af de forskellige afgørbare problemer... Thomas Bolander, FUKBH 11 s. 16/28
Beregningsskridt og kompleksitet Sværhedsgraden af et problem måles i en abstrakt størrelse, antal beregningsskridt. Antallet af beregningsskridt afhænger typisk af problemstørrelsen, f.eks. n i det endelige puslespilsproblem. Kompleksiteten af et problem: Antal nødvendige beregningsskridt som funktion af problemstørrelsen. Problemstørrelsen betegnes altid med n. Hvor mange beregningsskridt skal der højst til for at løse puslespilsproblemet for et givet n? (Angiv svaret som funktion af n). Thomas Bolander, FUKBH 11 s. 17/28
Tårnene i Hanoi Tårnene i Hanoi-problemet: At flytte n skiver fra venstre til højre pind via midterpinden uden at nogen skive undervejs kommer til at ligge på en mindre skive. Kompleksiteten af problemet: Det kræver 2 n 1 flytninger af flytte n skiver. Altså vil vi sige at kompleksiteten er 2 n 1 (idet vi identificerer beregningsskridt med flytninger). Vi siger også at problemet kræver eksponentiel tid, fordi kompleksiteten er en eksponentialfunktion. Thomas Bolander, FUKBH 11 s. 18/28
Kompleksitetsklasser Man skelner typisk imellem en række kompleksitetsklasser: faktisk kompleksitet uafhængig af n højst kn for et k 1 højst n p for et p > 1 højst b n for et b > 1 kompleksitetsklasse konstant tid lineær tid polynomiel tid (P) eksponentiel tid (EXPTIME) Tårnene i Hanoi tilhører kompleksitetsklassen EXPTIME. Hvilken kompleksitetsklasse tilhører det endelige puslespilsproblem? Thomas Bolander, FUKBH 11 s. 19/28
Kompleksiteten er afgørende! Antag at ét beregningsskridt tager 1 nanosekund (svarer til 1 beregningsskridt per 5 clock-cykler på en 5 GHz processor). Hvor stor kan n være for at man kan udføre f (n) beregningsskridt i et givet tidsinterval: f (n) 1 sekund 1 dag 1 år n n = 1 mia. n = 86.400 mia. n = 31 10 15 n 3 n = 1000 n = 44.210 n = 315.930 2 n n = 29 n = 46 n = 54 For en given værdi af n, hvor lang tid tager det at udføre f (n) beregningsskridt: f (n) n = 10 n = 100 n = 10 000 n 10ns 100ns 10µs n 3 1µs 1ms 16 minutter 2 n 1µs 3000 gange univ. alder?? Thomas Bolander, FUKBH 11 s. 20/28
Uhåndterbare problemer Konklusion: Problemer for hvilke de mest effektive algoritmer kører i eksponentiel tid er i praksis uløselige (sværhedsgrad vokser for hurtigt med inputstørrelse). Sådanne problemer kaldes uhåndterbare (eng.: intractable). Problemer som ligger i kompleksitetsklassen P kaldes derimod håndterbare. Et problem kan altså godt være principielt løsbart (afgørbart), men praktisk set uløsbart (uhåndterbart). Er det endelige puslespilsproblem uhåndterbart? Thomas Bolander, FUKBH 11 s. 21/28
Betragt igen spørgsmålet: Milliondollarspørgsmålet Er det endelige puslespilsproblem uhåndterbart? Det er i bogstaveligste forstand et million dollar question. Den der svarer får udbetalt en pris på 1.000.000 US$ fra Clay Mathematics Institute i Cambridge, Massachusetts. Men hvordan kan et sådant lille spørgsmål være så vigtigt, at nogen vil sætte en million dollars på højkant? Svaret kræver lidt nye begreber... Thomas Bolander, FUKBH 11 s. 22/28
P=NP? Ny kompleksitetsklasse: Et problem tilhører klassen NP hvis det i polynomiel tid kan afgøres om en foreslået løsning er korrekt eller ej. Nu skal vi altså ikke finde løsninger, men blot tjekke løsninger. Det burde være lettere? Nej, det vides faktisk ikke. Mere præcist vides det ikke om der gælder: P = NP? Dette er et af de allerstørste åbne problemer i matematik og datalogi. Tilhører det endelige puslespilsproblem klassen NP? Thomas Bolander, FUKBH 11 s. 23/28
Fra puslespil til P=NP Det endelige puslespilsproblem ligger i klassen NP. Det kan vises at være mindst lige så svært som et hvilket som helst andet problem i klassen: Alle andre problemer i klassen kan reduceres til puslespilsproblemet. Sådanne problemer kaldes NP-komplette. Derfor: Hvis vi kan afgøre om puslespilsproblemet ligger i P (kan løses i polynomiel tid), så kan vi også afgøre spørgsmålet P = NP. Og det er spørgsmålet P = NP som er 1.000.000 US$ værd. reduktion Problem 1 Problem 2 løsning Thomas Bolander, FUKBH 11 s. 24/28
P=NP og kryptografi RSA-kryptering er en af de mest udbredte former for kryptografi (datasikkerhed). Man indkoder beskeder med et stort tal m, som er offentligt (den offentlige nøgle). Man afkoder beskeder med m s primfaktorer (privat nøgle). Virker kun fordi primfaktorisering af store tal er svært, i praksis umuligt. Primtalsfaktorisering er oplagt et NP-problem. Hvorfor? Hvis P = NP må der eksistere en håndterbar algoritme til at faktorisere primtal. En sådan algoritme ville bryde alle eksisterende RSA-kryptografiske systemer! m Oprindelige besked Krypteret besked m s primfaktorer Thomas Bolander, FUKBH 11 s. 25/28
Masser af NP-komplethed En masse velkendte og vigtige problemer er NP-komplette: Postmandsproblemet: Find den korteste rute igennem n givne punkter (byer, husstande). Sudoku: Find en løsning til en n n Sudoku. Streng-matching: Givet to strenge af længde n, hvad er den længste fælles delstreng. Vigtigt i biologisk sekvensanalyse (DNA-matching). Pakning: Givet n kasser af forskellige størrelse, hvordan skal de pakkes så de fylder så lidt som muligt? Thomas Bolander, FUKBH 11 s. 26/28
Postmandsproblemet Største instanser af postmandsproblemet løst: 1954: n = 49. 1992: n = 3038 (en printplade). Tog halvandet CPU-år. 2004: n = 24.978 (rundtur i Sveriges byer). 2006: n = 85.900. Tog 136 CPU-år. Thomas Bolander, FUKBH 11 s. 27/28
Opsummering Afgørbarhed af et problem: Findes der en computer som i princippet kan løse problemet? Eksempler på uafgørbarhed: løsning af Diophantiske ligninger; bevisbarhed i Peano aritmetik; Halting-problemet; puslespilsproblemet; alle ikke-trivielle egenskaber ved computerprogrammer (Rice). Men principiel beregnelighed medfører ikke automatisk praktisk beregnelighed. De i praksis håndterbare problemer er dem som ligger i klassen P. Mange problemer ved vi slet ikke om ligger i P: postmandsproblemet; Sudoku; streng-matching, pakning, primtalsfaktorisering. Om disse ligger i P eller ej er et af de største åbne problemer i matematik og datalogi. Kaldes P = NP-problemet. Thomas Bolander, FUKBH 11 s. 28/28