Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

INF 295 Algoritmer og datastrukturer Forelesning 24 Repetisjon Hans Fr. Nordhaug (Ola Bø)

Liknende presentasjoner


Presentasjon om: "INF 295 Algoritmer og datastrukturer Forelesning 24 Repetisjon Hans Fr. Nordhaug (Ola Bø)"— Utskrift av presentasjonen:

1 INF 295 Algoritmer og datastrukturer Forelesning 24 Repetisjon Hans Fr. Nordhaug (Ola Bø)

2 Oversikt Introduksjon – Rekursjon Algoritmeanalyse Lister, stabler og køer Trær Hashing Prioritetskøer/Heaper Sortering Disjunkte mengder Grafer Algoritmedesign

3 Rekursjon Regler? 1. Det må finnes et basistilfelle som kan løses uten rekursjon 2. Rekursjonen må bevege seg mot basistilfellet 3. Anta at alle rekursive kall virker 4. Rentesrente regelen - Dupliser aldri arbeid ved å gjenta samme løsning i separate rekursive kall 5. Rekursjonsdybden er begrenset

4 Definisjoner La T(N) være kjøretida for programmet T(N)=O(f(N)) hvis det finnes c og n 0 slik at T(N) =n 0 T(N)=Ω(g(N)) hvis det finnes c og n 0 slik at T(N)>=cg(N) når N>=n 0 T(N)=Θ(h(N)) hvis og bare hvis T(N)=O(h(N)) og T(N)=Ω(h(N)) T(N)=o(p(N)) hvis T(N)=O(p(N)) og T(N) != Ω(g(N)) Da er O(f(n)) øverste grense for kjøretida Ω(g(N)) nedre grense for kjøretiden Θ(h(N)) eksakt kjøretid

5 Kjøretidskalkulasjoner Regler 1. For-løkker: kjøretid er kjøretid for setningene i for-løkken ganger antall iterasjoner 2. Nestede løkker: Analyser innenfra og ut 3. Påfølgende setninger - legg sammen - den største teller 4. Test: testen pluss den største greina

6 Typiske vekstrater FunksjonNavn cKonstant log NLogaritmisk log 2 NLog-kvadratisk NLineær N log N N2N2 Kvadratisk N3N3 Kubisk 2 N, N!Eksponentiell

7

8 Permutasjonsgenerering Genererer systematisk alle rekkefølger av N elementer O(N!) Avskjæringer

9 Lister, stabler og køer Liste: Elementer i rekkefølge Kø: En liste der en setter inn bakerst og tar ut forrest AKA- LILO Stabel En liste der en setter inn og tar ut forrest AKA- LIFO Implementeringsalternativer Lenket liste Array Kjøretidsforskjeller Hvilken implementering egner seg best?

10 Trær Tretyper –N-veis trær –Binærtrær –B-trær Trebegreper –Noder –Dybde –Høyde –Veilengde –Indre node vs løvnode –Komplett tre Treimplementeringer –Lenket liste av barn –Array av barn –Barnepekere Tretraversering –Preorder –Postorder –Inorder (bare for binærtrær) –Nivå

11 Binære søketrær Ordningsregel Operasjoner Implementering av operasjoner Gjennomsnittlig dybde Worst case

12 Balanserte (binære) trær AVL-trær – høyden for venstre og høyre undertre maks en i forksjell. O(log N) Enkel- og dobbelrotasjon Splay-trær – selvbalanserende. O(M log N) Zig-zag og zig-zig

13 B-tre Brukes når vi ikke har plass i RAM M-veis tre Data lagres bare i bladnoder Diskblokka er alle noders mål Antall greiner i indre noder og antall poster i bladnodene tilpasses diskblokkas størrelse De øverste to nivåene i treet caches gjerne i RAM

14 5. ordens B-tre

15 Hash Tilgangsmetode for rask søking Hovedprinsipp: Går direkte til riktig element ved å beregne plasseringen Plasseringen beregnes med en hash-funksjon Hash-funksjonen: Krav om dekning og spredning Implementeringsproblemer Overløp Lastfaktor Clustering

16 Binær heap Mye brukt for prioritetskøer En heap er et helt fylt binærtre (muligens unntatt nederste nivå som fylles fra venstre ) Kalles et komplett binærtre Et tre med høyden h har mellom 2 h og 2 h+1 -1 noder Høyden er log N Kan lagres i array uten lenker For element i er 2i venstre barn og 2i+1 høyre barn Foreldren til i er i/2 Ingen lenker Meget raske operasjoner (svarer til deling og ganging med 10 i 10-tallsystemet.)

17

18 Heap ordningsregel Rota er mindre enn alle sine barn Hvert subtre skal være en heap Rota er det minste elementet og kan finnes i konstant tid

19

20 Innsetting Lag et hull i neste ledige plass Kan X plasseres i hullet (X større enn forelderen) er vi ferdig ellers flytte foreldrenoden ned i hullet og lager et nytt hull som vi prøver på nytt. Hvis element 0 settes til et element som garantert er mindre enn det minste elementet i heapen, vil algoritmen stoppe ved rotnoden Vi sier da at element 0 er Sentinel (skiltvakt) Kjøretid Worst case O(log N) Gjennomsnitt 2,607 sammenlikninginger dvs: O(1)

21

22

23 deleteMin() Minste er rota Fjerning gir hull Siste element må flyttes Kan siste element plasseres i hullet? Hvis ja er vi ferdig Ellers putter vi minste barn i hullet og hullet får ny plassering Gjenta til siste element får plass. Prosessen kalles perkolering Kjøretid avg og worst case O(log N)

24

25

26 Andre Heap-operasjoner Heap er begrenset til findMin i konstant tid Insert og deleteMin er logaritmiske Alle andre operasjoner er lineaære og egentlig ikke en del av Heap-ADT Dersom et gitt element kan finnes ved hjelp av en annen datastruktur er følgende logaritmiske decreaseKey increaseKey delete buildHeap O(N) avg and worst case

27 buildHeap

28

29 Andre heaper d-heap – d barn. Hva skjer med insert versus deleteMin? Leftist heap – nullstilengde for venstre barn minst like stor som for høyre barn. Skew heap – selvjusterende variant av leftist heap. Binomialkø – skog av heap-ordnede trær. De tre siste støtter merge effektivt.

30 Sortering - klassifisering Innstikk (Insertion) Vanlig instikk, shellsort Bytte (Exchange) Boble, Cocktail/Shaker, (Quicksort) Utvalg (Selection) Vanlig utvalg, treutvalg, heapsort Fletting (Merge), indeksering og partisjonering

31 Klassifisering (forts) Sammenligningsbasert Kompleksitet Minnebruk Stabilitet

32 Sortering - enkle algoritmer Sammenlikner og flytter på naboelementer Minste kjøretid Ω(N 2 ) Innstikkssortering Boblesortering

33 Sortering - avanserte algoritmer Sammenlikner elementer som ligger lenger fra hverandre Minste kjøretid for sorteringsalgoritmer som bruker sammenlikning mellom elementer er Ω(NlogN) Shellsortering =innstikk over minkende intervaller (gap) intervallsekvensen er viktig Mergesortering Sammensmelting av sorterte lister Kjøres rekursivt slik at mergesort kjøres på hver halvdel av materialet først Base case er lister med lengde 1 Teoretisk nær det ideelle

34 Avanserte algoritmer (forts) Heapsortering Percolate down kjøres på alle "indre noder" i den usorterte arrayen - vi får en heap Den sorterte arrayen dannes ved gjentatte deleteMin Resultat kan legges i samme array Quicksort raskest i praksis Finne en pivot (Median av 3 - et godt forslag) Partisjonere arrayen om pivot-verdien Kjøre Quicksort rekursivt på hver partisjon Når partisjon kortere enn cutoff~10 innstikksortering på partisjonen Innstikksortering er effektivt på korte arrayer

35 Sortering (annet) Spesielle algoritmer (ikke sammenlikning – direkte plassering) Bøttesortering Brukbart der nøklene er små heltall Radix-sortering Bøttesortering i flere trinn Mindre effektivt enn generelle sorteringsrutiner Ekstern sortering Tape-merge (Bør også kunne brukes på diskfiler)

36 Disjunkte mengder Ekvivalensrelasjoner Hvilke elementer er i samme ekvivalensklasse Operasjoner int find(int a) gir nummeret på ekvivalensklassen til element a void union (int a, int b) slår sammen to ekvivalensklasser Implementering Array Stikomprimering

37 Grafer Begreper –Rettet/urettet –Syklisk/asyklisk –Kostnad og lengde –Glissen, Tett, Komplett Implementering –Naboskapsmatrise –Naboskapsliste –Naboarray (Java) Traversering –Dybde først søk –Bredde først søk Algoritmer –Topologisk sortering –Korteste vei En til en En til alle Alle til alle –Korteste spenntre

38 Algoritmedesign Grådige algoritmer Splitt og hersk (Divide and Conquer) Dynamisk programmering Tilfeldige algoritmer Tilbakefølgingsalgoritmer (Backtracking)

39 Algoritmedesign (ekstra) Følgende teknikker er ikke del av læreboka, men likevel verdt å kjenne: Rå kraft (Brute force) Mink og hersk (decrease and conquer) Transformer og hersk Iterativ forbedring

40 Kompleksitet Problemer som kan løses i polynomsk tid er håndterbare (tractable). P er klassen av bestemmelsesproblemer som kan bli løst i polynomsk tid av (deterministiske) algoritmer. NP er klassen av bestemmelsesproblemer som kan bli løst av ikke-deterministiske polynomske algoritmer. (Husk NP-komplett.) Uløselige problemer. (Stoppeproblemet)

41 Ikke-deterministiske algoritmer Tofase-prosedyre: Ikke-deterministisk (gjetting) fase: En mulig løsning (L) genereres for problemet (P). Deterministisk (verifisering) fase: En deterministisk algoritme som returner Yes/Ja, hvis L faktisk er en løsning av P. En ikke-deterministisk polynomsk algoritme bruker polynomsk tid på verifiseringsfasen.

42 Done! Lykke til på eksamen.


Laste ned ppt "INF 295 Algoritmer og datastrukturer Forelesning 24 Repetisjon Hans Fr. Nordhaug (Ola Bø)"

Liknende presentasjoner


Annonser fra Google