12.09.2013 Views

Effektiva beräkningar (Johan Håstad) - Skolverket

Effektiva beräkningar (Johan Håstad) - Skolverket

Effektiva beräkningar (Johan Håstad) - Skolverket

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Effektiva</strong> <strong>beräkningar</strong> och<br />

exponentiell tillväxt<br />

<strong>Johan</strong> H˚astad<br />

Bor˚as, 10 maj, 2012<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Första fr˚agor<br />

Vem är jag?<br />

Hur hamnade jag här?<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Första fr˚agor<br />

Vem är jag?<br />

Hur hamnade jag här?<br />

Äpplet kanske inte faller s˚a l˚angt fr˚an trädet.<br />

Pappa skrev “Hej Matematik”. Mamma kemi- och<br />

matematik-lärare.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Kort historia<br />

Vann SvDs matematik-tävling 1976 och 77.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Kort historia<br />

Vann SvDs matematik-tävling 1976 och 77.<br />

Läste universitetsmatematik i gymnasiet men tänkte bli fysiker<br />

och läste fysik första ˚aret efter gymnasiet.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Kort historia<br />

Vann SvDs matematik-tävling 1976 och 77.<br />

Läste universitetsmatematik i gymnasiet men tänkte bli fysiker<br />

och läste fysik första ˚aret efter gymnasiet.<br />

Började som doktorand i analys, gjorde lumpen p˚a Försvarets<br />

Radioanstalt och blev intresserad av <strong>beräkningar</strong>.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Kort historia<br />

Vann SvDs matematik-tävling 1976 och 77.<br />

Läste universitetsmatematik i gymnasiet men tänkte bli fysiker<br />

och läste fysik första ˚aret efter gymnasiet.<br />

Började som doktorand i analys, gjorde lumpen p˚a Försvarets<br />

Radioanstalt och blev intresserad av <strong>beräkningar</strong>.<br />

Licade för Lennart Carleson 1984 p˚a Institut Mittag-Leffler<br />

och ˚akte till USA och disputerade 1986 vid MIT. Nu<br />

studerande effektiva <strong>beräkningar</strong>.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Kort historia<br />

Vann SvDs matematik-tävling 1976 och 77.<br />

Läste universitetsmatematik i gymnasiet men tänkte bli fysiker<br />

och läste fysik första ˚aret efter gymnasiet.<br />

Började som doktorand i analys, gjorde lumpen p˚a Försvarets<br />

Radioanstalt och blev intresserad av <strong>beräkningar</strong>.<br />

Licade för Lennart Carleson 1984 p˚a Institut Mittag-Leffler<br />

och ˚akte till USA och disputerade 1986 vid MIT. Nu<br />

studerande effektiva <strong>beräkningar</strong>.<br />

Kom tillbaka till Sverige, till KTH, 1988 och har varit där<br />

sedan dess. Datalogi-institutionen. Professor 1992.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


S˚aledes<br />

Sedan snart 30 ˚ar h˚aller jag p˚a med teori för effektiva <strong>beräkningar</strong>.<br />

Komplexitetsteori, Algoritmanalys.<br />

“Diskreta problem”. Heltal snarare än realla tal.<br />

Typiska objekt utöver heltal: Grafer (hörn som är sammanbundna<br />

eller inte) och booleska variabler (sant/falskt).<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Matematiker eller datalog?<br />

Jag kan programmera men är varken en modern programmerare<br />

eller hacker.<br />

Flyhänta Fortran-progammerare är ett utdöende släkte...<br />

Känner mig mest som matematiker, men har naturligtvis färgats av<br />

att vara i en datalogi-miljö.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Dagens föredrag<br />

N˚agra blandade fakta, lite teori.<br />

Fr˚aga gärna under föredraget.<br />

Troligare att ni (och de som inte v˚agar fr˚aga samma fr˚aga) f˚ar<br />

reda p˚a det ni vill.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Lille Gauss<br />

Carl Friedrich Gauss har som liten skolpojke f˚att i uppgift att<br />

addera talen fr˚an 1 till 100 av läraren som ville ha lugn och ro.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Lille Gauss<br />

Carl Friedrich Gauss har som liten skolpojke f˚att i uppgift att<br />

addera talen fr˚an 1 till 100 av läraren som ville ha lugn och ro.<br />

Inser att rätt sätt är<br />

(1 + 100) + (2 + 99) . . . (50 + 51) = 101 · 50 = 5050<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Lille Gauss<br />

Carl Friedrich Gauss har som liten skolpojke f˚att i uppgift att<br />

addera talen fr˚an 1 till 100 av läraren som ville ha lugn och ro.<br />

Inser att rätt sätt är<br />

(1 + 100) + (2 + 99) . . . (50 + 51) = 101 · 50 = 5050<br />

Kul att räkna effektivt!<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Alla är inte Gauss<br />

Men m˚anga har en dator idag.<br />

Att summera talen fr˚an 1 till 100 tar ingen tid.<br />

Att skriva ett program som summerar fr˚an 1 till N g˚ar fort, ännu<br />

fortare att köra.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Alla är inte Gauss<br />

Men m˚anga har en dator idag.<br />

Att summera talen fr˚an 1 till 100 tar ingen tid.<br />

Att skriva ett program som summerar fr˚an 1 till N g˚ar fort, ännu<br />

fortare att köra.<br />

För ökande N blir svaret fel innan det tar tid. N = 65536 ger<br />

summa −2147450880. Varför d˚a?<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Huvuduppgift komplexitetsteori<br />

Givet ett beräkningsproblem, vilket är effektivaste sättet att lösa<br />

det?<br />

L˚at oss fokusera p˚a datortid.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Huvuduppgift komplexitetsteori<br />

Givet ett beräkningsproblem, vilket är effektivaste sättet att lösa<br />

det?<br />

L˚at oss fokusera p˚a datortid.<br />

Formellt studerar man antalet elementära operationer som funktion<br />

av indatas storlek.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Faktorisering av heltal<br />

Grundläggande problem. Faktorisera 1223456789!<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Faktorisering av heltal<br />

Grundläggande problem. Faktorisera 1223456789!<br />

3109 · 393521<br />

10 raders program med provdivision gör detta snabbare än man<br />

blinkar.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Ett klassiskt föredrag<br />

Frank Nelson Cole visade 1903 att<br />

2 67 − 1 = 147573952589676412927 = 193707721 · 761838257287<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Ett klassiskt föredrag<br />

Frank Nelson Cole visade 1903 att<br />

2 67 − 1 = 147573952589676412927 = 193707721 · 761838257287<br />

“Twenty years of Sundays.”<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Ett klassiskt föredrag<br />

Frank Nelson Cole visade 1903 att<br />

2 67 − 1 = 147573952589676412927 = 193707721 · 761838257287<br />

“Twenty years of Sundays.”<br />

Hittas idag p˚a 5 minuter via provdivision.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Större tal<br />

Säg att vi skulle vilja faktorisera<br />

F7 = 2 128 + 1 = 340282366920938463463374607431768211457.<br />

Ett tal med 39 decimala siffor.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Större tal<br />

Säg att vi skulle vilja faktorisera<br />

F7 = 2 128 + 1 = 340282366920938463463374607431768211457.<br />

Ett tal med 39 decimala siffor.<br />

Tar m˚anga ˚ar med provdivision.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Storleksordningar<br />

En dator gör ungefär en miljard (10 9 ) räkneoperationer i sekunden.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Storleksordningar<br />

En dator gör ungefär en miljard (10 9 ) räkneoperationer i sekunden.<br />

Provdivision av ett 18-siffrigt tal tar i värsta fall en miljard test och<br />

s˚aldes 1 sekund.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Storleksordningar<br />

En dator gör ungefär en miljard (10 9 ) räkneoperationer i sekunden.<br />

Provdivision av ett 18-siffrigt tal tar i värsta fall en miljard test och<br />

s˚aldes 1 sekund.<br />

Provdivision av ett 36-siffrigt tal tar i värsta fall en miljard g˚anger<br />

mer och s˚aledes 30 ˚ar.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Trots allt<br />

F7 = 340282366920938463463374607431768211457 =<br />

59649589127497217 · 5704689200685129054721<br />

och det är, idag, lätt att hitta dessa faktorer.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Trots allt<br />

F7 = 340282366920938463463374607431768211457 =<br />

59649589127497217 · 5704689200685129054721<br />

och det är, idag, lätt att hitta dessa faktorer.<br />

Finns bättre sätt än provdision.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


N˚agra faktoriseringsmetoder.<br />

Pollards ρ-metod. 36 siffor p˚a en timme.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


N˚agra faktoriseringsmetoder.<br />

Pollards ρ-metod. 36 siffor p˚a en timme.<br />

Kvadratiska s˚allet. 90 siffror p˚a en timme.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


N˚agra faktoriseringsmetoder.<br />

Pollards ρ-metod. 36 siffor p˚a en timme.<br />

Kvadratiska s˚allet. 90 siffror p˚a en timme.<br />

Talkroppss˚allet. 90 siffror p˚a en timme.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


N˚agra faktoriseringsmetoder.<br />

Pollards ρ-metod. 36 siffor p˚a en timme.<br />

Kvadratiska s˚allet. 90 siffror p˚a en timme.<br />

Talkroppss˚allet. 90 siffror p˚a en timme.<br />

Talkroppss˚allet sl˚ar kvadratiska s˚allet för stora tal och h˚aller det<br />

officiella världsrekordet med 232 siffror för generell faktorisering.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Sv˚arighetsresultat<br />

Idag kan ingen faktorisera ett allmänt tal med 1000 siffor.<br />

Hur m˚anga räkneoperatoner kan man bevisa m˚aste göras?<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Sv˚arighetsresultat<br />

Idag kan ingen faktorisera ett allmänt tal med 1000 siffor.<br />

Hur m˚anga räkneoperatoner kan man bevisa m˚aste göras?<br />

Ett par tusen, man m˚aste läsa indata, göra n˚agot med varje siffra<br />

och skriva ut svaret.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Sv˚arighetsresultat<br />

Idag kan ingen faktorisera ett allmänt tal med 1000 siffor.<br />

Hur m˚anga räkneoperatoner kan man bevisa m˚aste göras?<br />

Ett par tusen, man m˚aste läsa indata, göra n˚agot med varje siffra<br />

och skriva ut svaret.<br />

L˚angt ifr˚an förväntat värde som är minst 10 20 .<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Sv˚arighetsresultat<br />

Idag kan ingen faktorisera ett allmänt tal med 1000 siffor.<br />

Hur m˚anga räkneoperatoner kan man bevisa m˚aste göras?<br />

Ett par tusen, man m˚aste läsa indata, göra n˚agot med varje siffra<br />

och skriva ut svaret.<br />

L˚angt ifr˚an förväntat värde som är minst 10 20 .<br />

Vi har väsentligen inga metoder att visa sv˚arighet.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Vet vi ingenting?<br />

Kan svara b˚ade “ja” och “nej” p˚a detta.<br />

Vi är väldigt bra p˚a att jämföra problem. D˚aliga p˚a att komma till<br />

absoluta svar.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


En generell problemklass<br />

NP. Problem där, precis som vid faktorisering, det är lätt att<br />

kontrollera ett hittat svar.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


En generell problemklass<br />

NP. Problem där, precis som vid faktorisering, det är lätt att<br />

kontrollera ett hittat svar.<br />

Känt problem: Handelsresandens problem. Kan man besöka<br />

Sveriges 1000 största städer och bara ˚aka 40000 kilometer?<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


En generell problemklass<br />

NP. Problem där, precis som vid faktorisering, det är lätt att<br />

kontrollera ett hittat svar.<br />

Känt problem: Handelsresandens problem. Kan man besöka<br />

Sveriges 1000 största städer och bara ˚aka 40000 kilometer?<br />

Olika typer av “n˚al i höstacken”-problem.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Sv˚arighetsbevis?<br />

Det finns inget problem i NP som är bevisat sv˚art, det är möjligt<br />

att man alltid kan leta p˚a ett smart sätt.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Sv˚arighetsbevis?<br />

Det finns inget problem i NP som är bevisat sv˚art, det är möjligt<br />

att man alltid kan leta p˚a ett smart sätt.<br />

Det finns problem som är de “sv˚araste i NP”, de NP-fullständiga.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Sv˚arighetsbevis?<br />

Det finns inget problem i NP som är bevisat sv˚art, det är möjligt<br />

att man alltid kan leta p˚a ett smart sätt.<br />

Det finns problem som är de “sv˚araste i NP”, de NP-fullständiga.<br />

Alla vettiga forskare inom omr˚adet tror att dessa problem är sv˚ara.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


NP = P, Läget<br />

Ett av Clay-stiftelsens millenium-problem och belönas med en<br />

miljon dollar.<br />

Forskningen är inte i närheten av att lösa detta.<br />

Finns inga metoder att visa att denna typ av beräkningsproblem är<br />

sv˚ara.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


NP = P, Läget<br />

Ett av Clay-stiftelsens millenium-problem och belönas med en<br />

miljon dollar.<br />

Forskningen är inte i närheten av att lösa detta.<br />

Finns inga metoder att visa att denna typ av beräkningsproblem är<br />

sv˚ara.<br />

Nästan säkert sant.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Faktorisering<br />

Faktorisering av heltal är inte NP-fullständigt s˚a enda skälet att tro<br />

att det är sv˚art är att ingen lyckats göra det effektivt.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Faktorisering<br />

Faktorisering av heltal är inte NP-fullständigt s˚a enda skälet att tro<br />

att det är sv˚art är att ingen lyckats göra det effektivt.<br />

Samhället har via kryptosystemet RSA, investerat miljarder i<br />

förhoppning att det är sv˚art.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Faktorisering<br />

Faktorisering av heltal är inte NP-fullständigt s˚a enda skälet att tro<br />

att det är sv˚art är att ingen lyckats göra det effektivt.<br />

Samhället har via kryptosystemet RSA, investerat miljarder i<br />

förhoppning att det är sv˚art.<br />

Akademiker, särskilt matematiker, kan ha problem som<br />

beslutsfattare.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


N˚agot enklare<br />

Vi först˚ar inte faktorisering.<br />

L˚at oss göra n˚agot enklare. Addition och multiplikation.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Addition och multiplikation<br />

L˚at oss betrakta beräkning av<br />

aritmetik med 5-siffriga tal.<br />

29123 + 51234 29123 ∗ 51234<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Addition och multiplikation<br />

L˚at oss betrakta beräkning av<br />

aritmetik med 5-siffriga tal.<br />

Generellt: n-siffriga tal.<br />

29123 + 51234 29123 ∗ 51234<br />

Elementär operation: Addition och multiplikation av ensiffriga tal.<br />

Tänk p˚a n = 1000 för handräkning n = 1000000 med dator.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Addition<br />

2 9 1 2 3<br />

+ 5 1 2 3 4<br />

8 0 3 5 7<br />

Ungefär 10 operationer, i allmänhet för n-siffriga tal 2n<br />

operationer. Mest skrivarbete.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Multiplikation<br />

2 9 1 2 3<br />

∗ 5 1 2 3 4<br />

1 1 6 4 9 2<br />

8 7 3 6 9<br />

5 8 2 4 6<br />

2 9 1 2 3<br />

1 4 5 6 1 5<br />

1 4 9 2 0 8 7 7 8 2<br />

Ungefär 100 operationer, i allmänhet för n-siffriga tal ≈ 4n 2<br />

operationer. En hel del jobb.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Naturliga fr˚aga<br />

Är multiplikation mer beräkningskrävande än addition eller har vi<br />

bara ett klumpigt sätt att utföra multiplikation?<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Naturliga fr˚aga<br />

Är multiplikation mer beräkningskrävande än addition eller har vi<br />

bara ett klumpigt sätt att utföra multiplikation?<br />

Vi har uppenbarligen bästa sätt, varje siffra i ena talet m˚aste<br />

multipliceras med varje siffra i andra talet, inget att göra ˚at.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Naturliga fr˚aga<br />

Är multiplikation mer beräkningskrävande än addition eller har vi<br />

bara ett klumpigt sätt att utföra multiplikation?<br />

Vi har uppenbarligen bästa sätt, varje siffra i ena talet m˚aste<br />

multipliceras med varje siffra i andra talet, inget att göra ˚at.<br />

HELT FEL!<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Verkliga förh˚allanden<br />

Multiplikation av n-siffors tal kan utföras med ungefär 10n log n<br />

operationer. Skiss.<br />

1 Tänk p˚a talen som vektorer.<br />

2 Gör FFT av dessa vektorer.<br />

3 Multiplicera transformerna punktvis.<br />

4 Gör invers FFT.<br />

5 Fixa till resultatet.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Dagens sanning<br />

Vi kan inte visa att multiplikation är kr˚angligare än addition.<br />

Vi är bra p˚a att hitta intressanta och effektiva algoritmer.<br />

Vi vet nästan väldigt lite om hur vi visar att vi har bästa sättet att<br />

göra en beräkning.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Kul algoritm 1<br />

Det är möjligt att skriva ett program som spelar Yatsy optimalt.<br />

En doktorand i v˚ar grupp skrev ett program över en helg. En<br />

oerhört duktig programmerare som har skrivet ett av världens<br />

bästa Othello-program.<br />

Kul men sv˚art terminsprojekt.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Kul algoritm 2<br />

Ett primtal som ger rest 1 vid division med 4 kan p˚a ett unikt sätt<br />

skrivas som summan av tv˚a kvadrater.<br />

13 = 3 2 + 2 2<br />

17 = 4 2 + 1 2<br />

49393 = 48 2 + 217 2<br />

Kan hittas även om primtalet har 1000 siffor!<br />

Görs med Euklides algoritm för gaussiska heltal a + ib (komplexa<br />

tal).<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Användbart!?<br />

Eventuellt är algoritmen p˚a förra sidan bara av matematiskt<br />

intresse.<br />

Att kunna avgöra om stora tal (1000 siffor) är primtal är av<br />

extremt praktiskt intresse.<br />

Kryptosystemet RSA är beroende av detta.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


En kul websida<br />

Project Euler. Finns en stor mängd trevliga algoritmiska problem.<br />

Väldigt varierande sv˚arighetsgrad.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Utblick mot forskning<br />

Aktuellt omr˚ade. Approximationsalgoritmer.<br />

Anta att NP=P s˚a att NP-fullständiga problem inte kan lösas<br />

optimalt.<br />

Studera effektiva algoritmer som kommer nära optimum.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


En svartvit värld<br />

Algoritmer som g˚ar polynomiell tid ( t.ex. n 4 ) p˚a problem av<br />

storlek n är effektiva.<br />

Och inga andra.<br />

Inte helt överenstämmande med verkligheten men ger en robust<br />

och intressant teori.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Handelsresandens problem<br />

Vi kan inte hitta bästa lösningen.<br />

Christofides visade 1976 hur man effektivt hittar en lösning som<br />

bara är 50% längre än optimalt.<br />

Bäst möjligt?<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Kända resultat fr˚an senare tid<br />

Om städerna ligger i planet och det är avst˚and f˚agelvägen, kan<br />

man effektivt hitta en godtyckligt bra approximation (inom<br />

godtycklig faktor större än 1).<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Kända resultat fr˚an senare tid<br />

Om städerna ligger i planet och det är avst˚and f˚agelvägen, kan<br />

man effektivt hitta en godtyckligt bra approximation (inom<br />

godtycklig faktor större än 1).<br />

Om vi har generella avst˚and är det sv˚art att hitta inom en faktor<br />

220<br />

219 .<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Kända resultat fr˚an senare tid<br />

Om städerna ligger i planet och det är avst˚and f˚agelvägen, kan<br />

man effektivt hitta en godtyckligt bra approximation (inom<br />

godtycklig faktor större än 1).<br />

Om vi har generella avst˚and är det sv˚art att hitta inom en faktor<br />

220<br />

219 .<br />

Det finns föreslagna algoritmer som vi inte kan analysera.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


Slutord<br />

Datorer är snabba. Även naiva algoritmer som är lätta att<br />

implementera kan ge imponerande resultat.<br />

Det finns m˚anga intressanta och effektiva algoritmer, har bara<br />

skrapat p˚a ytan.<br />

Det är sv˚art att visa att problem är sv˚ara. Ett vidöppet<br />

forskningsfält där det g˚ar trögt.<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt


SLUT<br />

FR˚AGOR?<br />

<strong>Johan</strong> H˚astad <strong>Effektiva</strong> <strong>beräkningar</strong> och exponentiell tillväxt

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!