Presentation laddar. Vänta.

Presentation laddar. Vänta.

Algoritmteori1 DAB752: Algoritmteori Leif Grönqvist Graduate School of Language Technology (GSLT) Växjö universitet, MSI Göteborgs universitet, Institutionen.

Liknande presentationer


En presentation över ämnet: "Algoritmteori1 DAB752: Algoritmteori Leif Grönqvist Graduate School of Language Technology (GSLT) Växjö universitet, MSI Göteborgs universitet, Institutionen."— Presentationens avskrift:

1 Algoritmteori1 DAB752: Algoritmteori Leif Grönqvist Graduate School of Language Technology (GSLT) Växjö universitet, MSI Göteborgs universitet, Institutionen för lingvistik

2 Algoritmteori2 Lärare på kursen och upplägg Maria Karlsson (moment 3 och 5, kursansvarig) Leif Grönqvist (moment 1 och 2) Niklas Pettersson (moment 4 och 6) Föreläsningar, övningar för varje moment 3 laborationer Tentamen Titta på webbsidan regelbundet!

3 Algoritmteori3 Algoritmer – vadå? Vad är en algoritm? –En väldefinierad beräkningsprocedur som givet vissa indata ger utdata –Enligt vissa: den terminerar alltid Exempel: sortering av heltal –Indata: t 1, t 2, …, t n, där t 1, t 2, …, t n är heltal –Utdata: samma uppsättning heltal permuterade så att de är sorterade En algoritm är korrekt om den terminerar med korrekt svar för varje korrekt indata Den är inkorrekt om den antingen: –Ger fel svar för vissa indata –Inte terminerar för vissa indata

4 Algoritmteori4 Kan alla problem lösas med algoritmer? Några exempel på program som inte är algoritmer: Microsoft Word: innehåller en massa delar som innehåller algoritmer, men Word som helhet uppfyller inte kraven Slumptalsgenerator: kan ses som en algoritm om man ser till hela sekvensen av utdata givet indata I form av ett frö, men inte annars Observera att även ineffektiva program kan vara algoritmer, exempel: slumpsortering –Det finns alltså algoritmer som inte är praktiskt användbara! –Men också program som inte är algoritmer men trots det användbara

5 Algoritmteori5 Behövs algoritmer? Vissa typer av teknologi verkar vara oberoende av algoritmer: –Hårdvara –Grafiska gränssnitt –Nätverkskommunikation Fel! Dessa är exempel på saker som är mycket starkt beroende av effektiva algoritmer

6 Algoritmteori6 “Hårda” problem Det finns problem som inte kan lösas med effektiva algoritmer: NP-kompletta problem –De kan inte lösa på polynomiell tid –Effektiva algoritmer kan finnas för vissa indata –Bra att känna till eftersom man kan undvika det onödiga arbetet att hitta en effektiv algoritm om problemet är NP-komplett Exempel: handelsresandeproblemet Mer om detta kommer senare i kursen Obs! Det är ej bevisat att det inte går att skriva en algoritm som effektivt löser ett NP-komplett problem Det är däremot bevisat att om man lyckas skriva en algoritm som löser ett NP-komplett problem på polynomtid så kan samtliga andra också lösas på polynomtid

7 Algoritmteori7 Effektivitet Effektivitet för datorprogram handlar om minnes- respektive tidseffektivitet Ofta kallas detta för algoritmens komplexitet och den man räknar mest på är tidskomplexiteten En långsam dator med en bra algoritm kan vara snabbare än en snabb dator och en dålig algoritm! Exempel: –Algoritm #1 tar e n (naturlig logaritm) –Algoritm #2 tar 1000n 2, n är storleken på indata För vilket minsta n>0 tar #2 kortare tid än #1? Svårt att räkna på men testning ger n=12 –Omskrivning av e n =1000n 2 till n = ln ln n gör det möjligt att iterera fram svaret: n i+1 = ln ln n i

8 Algoritmteori8 Tidskomplexitet – Asymptotisk notation Ofta är det svårt att beräkna den exakta tidsåtgången för en algoritm som funktion av indata –Värstafallskörtiden som funktion av storleken på indata betecknas med T(n) Enklare, och mer användbart, är att beräkna hur tiden växer med indata –Hur mycket längre tid tar dubbla mängden indata? Beskrivs med Ordo- (O), Omega- (Ω) och Thäta- notation (Θ)

9 Algoritmteori9 Ordo (O), Omega (Ω) och Thäta (Θ) f(n) = Θ(g(n)) om: –  n 0, c 1, c 2 :  n>n 0 : c 1 g(n) ≤ f(n) ≤ c 2 g(n), c 1, c 2 >0.0 Exempel: Antag att tidsåtgången som funktion av indata (n) är f(n)=n 2 +5n –Om c 1 =1, c 2 =2, n 0 =5 och g(n)=n 2 –Så ser vi att f(n)= Θ(n 2 ) eftersom: –1n 2 ≤ n 2 +5n ≤ 2n 2 då n>5 Så vi har en övre och undre begränsning av tidsåtgången då indata är tillräckligt stort

10 Algoritmteori10 Ordo (O) och Omega (Ω) Θ gav både en undre och övre begränsning (asymptotiskt tajt) Ω en undre begränsning: –f(n) = O(g(n)) om:  n 0, c 1 :  n>n 0 : c 1 g(n) ≤ f(n) O ger en övre begränsning: –f(n) = O(g(n)) om:  n 0, c 2 :  n>n 0 : f(n) ≤ c 2 g(n) O(g(n)) betecknar en mängd av funktioner så: –f(n) = O(g(n)) är ett förenklat skrivsätt av: f(n)  O(g(n)) –Θ(g(n))  O(g(n)) och Θ(g(n))  Ω(g(n)) Ett annat skrivsätt är: –f(n) + Θ(g(n)) = Θ(h(n)) som betyder att:  g’(n)  Θ(g(n))  h’(n)  Θ(h(n)) så att f(n)+g’(n) = h’(n) –Exempelvis så är 2n 2 +Θ(n) = Θ(n 2 )

11 Algoritmteori11 Mer om O, Ω och Θ Ofta förekommer notationen O(n 2 ) när man i själva verket menar Θ(n 2 ) Algoritmer kan ibland gå väldigt olika fort beroende på indata, ta exempelvis insättningssortering: –För vissa indata är f(n)=c 1 n –För andra är f(n)=c 2 n 2 –Alltså är Ω(f(n))=n och O(f(n))=n 2 Därför brukar man tala om medel- respektive värstafallskomplexitet Båda dessa är Θ(n 2 ) för insättningssortering

12 Algoritmteori12 o och ω Om f(n)=O(g(n)) gäller men inte är “tajt” så skriver vi f(n)=o(g(n)) –Skillnaden mellan O(g(n)) och o(g(n)) är att det i O-fallet skulle gå att hitta konstanter c och n 0 så att  n>n 0 : f(n) ≤ c 2 g(n) För o-fallet skall olikheten gälla för alla konstanter c>0 vilket också kan uttryckas som: lim n  f(n)/g(n) = 0 Exempelvis gäller: –2n=o(n 2 ) –5+n log n=(n 3 ) Men inte: –2n 2 =o(n 2 ) På samma sätt är f(n)=ω(g(n)) om f(n)=Ω(g(n)) gäller men är icke-tajt: –  n 0 :  n>n 0,c>0 lim n  f(n)/g(n) = 

13 Algoritmteori13 O, Ω, Θ, o och ω Det finns en hel del regler som kan underlätta beräkning av dem: –De är transitiva, exempelvis: f(n)= Θ(g(n)) och g(n)= Θ(h(n))  f(n)= Θ(h(n)) f(n)= ω(g(n)) och g(n)= ω(h(n))  f(n)= ω(h(n)) osv. –Reflexivitet: f(n)=Θ(f(n)), f(n)= Ω(f(n)), f(n)= O(f(n)) Gäller INTE o och ω –Symmetri: f(n)=Θ(g(n)) omm g(n)=Θ(f(n))

14 Algoritmteori14 O, Ω, Θ, o och ω, forts. –Mer symmetri f(n)=O(g(n)) omm g(n)= Ω(f(n)) f(n)=o(g(n)) omm g(n)= ω(f(n)) Tänk på analogin med tal där a svarar mot f(n) och b mot g(n): –f(n)= O(g(n))≈ a ≤ b –f(n)= Ω(g(n))≈ a ≥ b –f(n)= Θ(g(n))≈ a = b –f(n)= o(g(n))≈ a < b –f(n)= ω(g(n))≈ a > b

15 Algoritmteori15 Exempel på komplexitet Vad är O och Ω samt Θ i medelfallet för: –Linjär sökning av en vektor f(n) = Ω(1), f(n) = O(n), f m (n)=Θ(n) –Binärsökning av en vektor f(n) = Ω(1), f(n) = O(log n), f m (n) = Θ(log n) –Insättning i en länkad lista f(n) = Ω(1), f(n) = O(1), f m (n) = Θ(1)

16 Algoritmteori16 Matematik vi behöver – borde vara repetition, annars läs 3.2 En funktion f(n) växer monotont om m≤n  f(m)≤f(n) avtar monotont om m≤n  f(m)≥f(n) är strängt växande om m

17 Algoritmteori17 Mer matematik Polynom och fakultet (!) vet ni vad det är… Exponenter, för reella tal a>0, n, m gäller: –a 0 =1 –a 1 =a –a -1 =1/a –(a m ) n =(a n ) m =a mn –a n a m =a m+n Om a, n≥1 så växer a n monotont

18 Algoritmteori18 Ännu mer matematik För a>1 och b gäller lim n  n b /a n = 0 Alltså gäller: n b = o(a n ) –dvs. varje exponentiell funktion med bas större än 1 växer snabbare än varje polynom e x kan skrivas som en oändlig serie: –e x = 1 + x + x 2 /2! + x 3 /3! + x 4 /4!+… Ur definitionen följer att e x ≥ 1+x Då x  0 gäller: e x = 1 + x + Θ(x 2 ) så: lim n  (1+x/n) n = e x

19 Algoritmteori19 Logaritmer Lite notation: lg n = log 2 n ln n = log e n lg k n = (lg n) k lg lg n = lg(lg n) För reella tal a,b,c>0 samt n gäller då basen  1: –a = b log b a –log(ab) = log a + log b –log (a n ) = n log a –log b a = log c a / log c a –-log (1/a) = log a –log b a = 1/log a b Dessa verifieras enkelt med miniräknare – lär inte in utantill!


Ladda ner ppt "Algoritmteori1 DAB752: Algoritmteori Leif Grönqvist Graduate School of Language Technology (GSLT) Växjö universitet, MSI Göteborgs universitet, Institutionen."

Liknande presentationer


Google-annonser