INF 295 Algoritmer og datastrukturer Forelesning 24 Repetisjon

Slides:



Advertisements
Liknende presentasjoner
@ TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Åsmund Eldhuset asmunde idi.ntnu.no.
Advertisements

TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Kristian Veøy
Uke 10 - Sortering, og hvordan lage en klasse for et klassebibliotek 21 okt. 2003, Arne Maus Inst. for informatikk, UiO.
Kap.8 Sortering og søking sist oppdatert • Del 1 Søking - lineær søking m/u sorterte elementer - binærsøking - analyse • Del 2 Sortering - ”gamle”
Algoritmer for søk og sortering Førsteamanuensis Alf Inge Wang
Ulike sorteringsmetoder Kompleksitet av dem
Øvingsforelesning 9 Flytnettverk, maksimum flyt og maksimum bipartitt matching Jon Marius Venstad Redigert og forelest av Gleb Sizov.
Forside Korteste sti BFS Modifikasjon Dijkstra Eksempel Korrekthet Analyse Øving Spørsmål Dijkstras algoritme Åsmund Eldhuset asmunde *at* stud.ntnu.no.
@ TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Åsmund Eldhuset asmunde idi.ntnu.no.
Dijkstras algoritme Åsmund Eldhuset asmunde *at* stud.ntnu.no
1 Øvingsforelesning Andreas Knudsen Nils Grimsmo
Øvingsforelesning 3 Grafer, BFS, DFS og hashing
Alg. Dat Øvingsforelesning 5 Kompleksitetsanalyse Torbjørn Moralnd
Kompleksitetsanalyse
Øvingsforelesning 2 Trær og søking i dem, samt litt diverse emner Kristian Veøy
Alg. Dat Øvingsforelesning 3 Grafer, BFS, DFS og hashing Børge Rødsjø
Øvingsforelesning Magnus Haug
Forside Motivasjon Analyse Forside Motivasjon Analyse  -notasjon O og  Relasjoner Klasser Fallgruver Spørsmål Kompleksitetsanalyse Åsmund Eldhuset asmunde.
INF 295 Forelesning 15 - kap 9 Grafer Hans Fr. Nordhaug (Ola Bø)
Algoritmiske metoder Innhold: Effektivitetsbetraktninger Programmeringsteknikker Datastrukturer Algoritmer tilknyttet datastrukturene Lærebok: Hafting/Ljosland:
Klargjøring fra forrige gang
Algoritmer og Datastrukturer
1 Kap 08 Kø. 2 Kø - Definisjon En kø (eng queue) er en lineær struktur hvor elementer kan innsetttes kun i den ene enden av listen, kalt bak, og fjernes.
Kap 10 Graf.
Dynamisk programmering
Ch 4 INTEGRASJON Integrasjon innebærer å finne alle funksjoner F som har f derivert. Disse funksjoner kalles antiderivert av f og formelen for de er det.
INF 295 Algoritmer og datastrukturer Forelesning 21 Merge, Quick og Bøtte, Radix og ekstern sortering Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 7 ADT Lister, Stakker og Køer Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 1 - kapittel 1 Introduksjon Hans F. Nordhaug (Ola Bø) (Ketil Danielsen, 2007)
INF 295 forelesning 14 - kap 8 Disjunkt mengde ADT Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 9a Søketrær Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 8 Trær Hans Fr. Nordhaug (Ola Bø)
INF 295 forelesning 13 - kap 6 Prioritetskø (Heap) Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 16 - kap 9 Minimalt spenntre og korteste vei i grafer Hans Fredrik Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 11 Når RAM ikke strekker til - B-trær og Utvidbar hashing Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 17 - kap 9 Korteste vei i grafer Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 20 - Kapittel 7 Boble-, innstikk-, Shell-, Heap-, Quick-, Mergesortering Hans Fr. Nordhaug (Ola Bø)
Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 4 Algoritmeanalyse Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 2 - kapittel 1 Hans F. Nordhaug (Ola Bø)
INF 295 forelesning 13 - kap 6 Andre prioritetskøer Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 18 - kap 9 Aktivitetsgrafer
INF 295 Algoritmer og datastrukturer Forelesning 6 ADT Lister, Stakker og Køer Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 9b Balanserte (binære) trær Hans Fr. Nordhaug.
INF 295 Forelesning 19 - Dynamisk programmering Korteste vei alle til alle (Floyd) Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 10 Invarianter og Hashing Hans Fr. Nordhaug (Ola Bø)
A randomized protocol for signing contracts (extended abstract) S.Even, O. Goldreich, A.Lempel.
INF 4130 Eksamen 2008 Gjennomgang.
Magnus Haug Algoritmer og Datastrukturer
Kapping av plater Mål: Vi skal lage komponenter for en møbelfabrikk ut fra standardiserte plater på 12 x 24 dm. Komponentene har lengde og bredde oppgitt.
Parallellisering av Coin3D for Systems in Motion av Sveinung Thunes.
INF 295 forelesning 12 Repetisjon per 17. februar Hans F. Nordhaug (Ola Bø)
Alg. Dat Øvingsforelesning 11 Dynamisk programmering, grådighet
Designing a DHT for low latency and high through TDT2 – Avanserte distribuerte systemer Øystein Ellingbø.
INF 295 Algoritmer og datastrukturer Forelesning 5 Algoritmeanalyse Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 22 Teknikker for algoritmeutvikling Hans Fr. Nordhaug/ Ola Bø.
Ortering Mål: Se på forskjellige måter for sortering.
Sorterings- Algoritmer Algoritmer og Datastrukturer.
Prioritetskøer Binære heaper Venstrevridde heaper (Leftist) Skeive heaper (Skew) Binomialheaper Fibonacciheaper Prioritetskøer er viktige i bla. operativsystemer.
1 INF oktober 2010 Stein Krogdahl Foreløpige foiler Dagens program: –Første time: Kap 23.5: Trær og strategier for spill med to spillere –Andre.
Praktisk Midtveisevaluering av kurset («femminutterslapper») i pausen. Undervisningsfri neste uke (ingen forelesninger eller grupper). NM i programmering.
INF 295 Algoritmer og datastrukturer Web-spider Oblig 3 Hans Fr. Nordhaug (Ola Bø)
Sannsynlighet og kombinatorikk
Matematikk 1 årskurs 26. oktober 2009
Kapittel 12 Samlingar Samlingar og datastrukturar Ei samling (collection) blir brukt til å oppbevare og handtere andre objekt ArrayList – klassen.
INF 295 Algoritmer og datastrukturer Forelesning 23 Kompleksitet Hans Fr. Nordhaug/ Ola Bø.
1 Øvingsforelesning 4 Topologisk sortering Minimale spenntrær Håkon Jacobsen
Sudoku Mål: Lage et enkelt system som løser Sudoku-oppgaver.
Øvingsforelesning 10 Grådighet
IN3030 – Effektiv parallellprogrammering Uke 1 2. del, våren 2019
Utskrift av presentasjonen:

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

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

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

Definisjoner La T(N) være kjøretida for programmet Da er T(N)=O(f(N)) hvis det finnes c og n0 slik at T(N)<= cf(N) når N>=n0 T(N)=Ω(g(N)) hvis det finnes c og n0 slik at T(N)>=cg(N) når N>=n0 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

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

Typiske vekstrater Funksjon Navn c Konstant log N Logaritmisk log2 N Log-kvadratisk N Lineær N log N N2 Kvadratisk N3 Kubisk 2N, N! Eksponentiell

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

Lister, stabler og køer Liste: Kø: Stabel Implementeringsalternativer 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?

Trær Tretyper Trebegreper Treimplementeringer Tretraversering 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å

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

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

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

5. ordens B-tre

Hash Tilgangsmetode for rask søking Hovedprinsipp: Hash-funksjonen: 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

Binær heap (muligens unntatt nederste nivå som fylles fra venstre ) 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 2h og 2h+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.)

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

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)

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)

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

buildHeap

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.

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

Klassifisering (forts) Sammenligningsbasert Kompleksitet Minnebruk Stabilitet

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

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

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

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)

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

Grafer Begreper Implementering Traversering Algoritmer 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

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

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

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)

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.

Done! Lykke til på eksamen.