Effektiva beräkningar (Johan Håstad) - Skolverket
Effektiva beräkningar (Johan Håstad) - Skolverket
Effektiva beräkningar (Johan Håstad) - Skolverket
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