INF 295 forelesning 12 Repetisjon per 17. februar Hans F. Nordhaug (Ola Bø)

Slides:



Advertisements
Liknende presentasjoner
Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring
Advertisements

@ TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Åsmund Eldhuset asmunde idi.ntnu.no.
TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Kristian Veøy
Kap 04 Lister. Listestrukturer Listestrukturer hensiktsmessige ved såkalte flyktige tabeller (tabeller med relativt mye innsetting/sletting)
Uke 10 - Sortering, og hvordan lage en klasse for et klassebibliotek 21 okt. 2003, Arne Maus Inst. for informatikk, UiO.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
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
Kryptografi og nettverkssikkerhet
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.
1 Øvingsforelesning Andreas Knudsen Nils Grimsmo
Øvingsforelesning 3 Grafer, BFS, DFS og hashing
Ø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
INF 295 Forelesning 15 - kap 9 Grafer Hans Fr. Nordhaug (Ola Bø)
Klargjøring fra forrige gang
Mer om programmering av aggregeringer Repetisjon: Komposisjon og aggregering En register-klasse: modellering En register-klasse: implementering Sortering.
Kapittel 11 Rekursjon Å tenke rekursivt Rekursjon er ein programmeringsteknikk der ein metode kallar seg sjølv for å fullføre ei oppgåve For å kunne.
Kap 06 Ordnede / Sorterte lister. Ordnede lister / Sorterte lister OrderedList:Listestruktur hvor rekkefølgen har betydning Eks:Innholdsfortegnelse i.
Kap 01 Innledning I dette kapitlet skal vi se litt følgende hovedtemaer: - Kursoppbygging - Hva er algoritmer og datastrukturer - Anvendelser - …
Looking up data In P2P systems. Innhold Søkeproblemet Distribuerte Hash Tabeller Noen eksempel systemer: CAN Pastry Tapestry Chord (som vil bli sett nærmere.
Algoritmer og Datastrukturer
Kap 07 Stakk I dette kapitlet skal vi se på datastrukturen stakk.
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 02 Tabeller / Tabelloperasjoner. Enkeltvariable Les inn nedbørmengde for årets 12 måneder: Les n1 Les n2 … Les n12 n1 n2 n12.
Kap 10 Graf.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
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 24 Repetisjon
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ø)
1 Kap 06 Ordnede / Sorterte lister Oppgave nr 06_02 Polynomer Klassehierarki Javadokumentasjon.
INF 4130 Eksamen 2008 Gjennomgang.
Kap 09 Tre.
Tabeller Dette er en tabell, eller array. Den kan defineres sånn som dette: public int[] heltallsTabell = new int[11]; //Her er 11 tabellens lengde for.
Alg. Dat Øvingsforelesning 11 Dynamisk programmering, grådighet
Freenet A Distributed Anonymous Information Storage and Retrieval System.
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ø.
Sorterings- Algoritmer Algoritmer og Datastrukturer.
Sterke og 2-sammenhengende komponeneter, DFS
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.
INF 295 Algoritmer og datastrukturer Web-spider Oblig 3 Hans Fr. Nordhaug (Ola Bø)
Inf1000 (Uke 5) Arrayer, filer og tekst
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ø.
Iterator i Java boolean hasNext() E next() void remove()
Øvingsforelesning 10 Grådighet
Utskrift av presentasjonen:

INF 295 forelesning 12 Repetisjon per 17. februar Hans F. Nordhaug (Ola Bø)

Hva har vi gjennomgått Rekursjonsalgoritmer Kombinatorisk søking - permutasjoner Algoritmeanalyse Abstrakte datatyper Liste Stack Kø Tre Binært søketre B-tre AVL-tre Splaying Hash Hash med kollisjonshåndteringsstrategier  Åpen adressering og separat liste Utvidbar hash

Rekursjonsalgoritmer Metode som kaller seg selv Kan ende i evig loop Eller i stack-overflow Kan løses iterativt blir da ofte raskere men dessverre komplisert i de fleste tilfellene - unntak: tail-recursion

Regler for rekursjonsalgoritmer Regler 1. Basistilfelle som kan løses uten rekursjon må finnes 2. Gjør framgang mot basistilfellet 3. Anta at alle rekursive kall virker 4. Rentesrente regelen - Dupliser aldri arbeid ved å gjenta samme løsning i separate rekursive kall. Lagre i så fall de ferdige resultatene i en tabell og sjekk om løsning allerede finnes der! (Dynamisk programmering) 5. All rekursjon kan erstattes med iterasjon, men det er ikke nødvendigvis enkelt. 6. Bruk heller iterasjon hvis det er enkelt

Kombinatorisk søking - permutasjoner Teste alle mulige rekkefølger av N elementer O(N!) eksponentiell vekst!! N må være liten eller Vi må lage gode avskjæringer

Algoritmeanalyse Si noe om hvor fort en algoritme går Kjøretidskalkulasjoner O-notasjon Typiske vekstrater

FunksjonNavn cKonstant log NLogaritmisk log 2 NLog-kvadratisk NLineær N log N N2N2 Kvadratisk N3N3 Kubisk 2 N, N!Eksponensiell

Abstrakte datatyper Definerer ett sett standard operasjoner I Java defineres ved hjelp av interface Kan lagre hva som helst: Object Comparable hvis rekkefølgen har betydning Den abstrakte datatypen må implementeres for å brukes i praksis Forskjellige implementeringer gir forskjellige egenskaper Kjøretid for operasjonene

ADT - Liste

Listeimplementeringer Array-liste Rask på hent(int posisjon) Rask på finn(Comparable O) hvis sortert Lenket liste med noder og pekere Enkeltlenket Enkeltlenket med hodenode Dobbeltlenket Sirkulært lenket

Stack Operasjoner void push(Object o), Object pop() Eventuelt Object top() Kalles også LIFO Spesialtilfelle av liste Implementeringer Array Lenket liste

Kø Operasjoner void enqueue(Object o) Object dequeue() Kalles også FIFO Spesialtilfelle av liste Implementeringer Array (sirkulær array med to pekere) Lenket liste

Trær Et tre er en samling noder, som kan være tom eller bestå av en rotnode r og null eller flere subtrær. Hvert subtre har en rotnode som er knyttet rotnoden r med en rettet kant fra r r er forelder til hver av undertrærne og rotnoden i hvert undertre er et barn av r Hvis treet har N noder har det N-1 kanter Noder som ikke har barn kalles bladnoder (leaf nodes) Noder med samme forelder er søsken (siblings) Nodene tegnes normalt som sirkler

Implementering av trær class TreeNode{ Object element; TreeNode firstChild; TreeNode nextSibling; }

I et binærtre har ingen node mer enn to barn Høyden er vanligvis mye mindre enn N I gjennomsnitt er dybden For binært søketre er gjennomsnittsdybden for nodene I verste tilfelle kan dybden bli N-1 Implementeres med en venstre og høyre peker i hver node Binærtrær

Traversering av binærtrær Fire muligheter Preorder - foreldrenoden behandles før barna Inorder - foreldrenoden behandles etter venstre, men før høyre barn Postorder - foreldrenoden behandles etter barna Nivå for nivå Legg rota i kø Hente og behandle neste fra kø og legg barna i køen til køen er tom

Søketre - ADT Binære søketrær Binærtrær kan brukes til å implementere effektiv søking I binære søketrær gjelder denne egenskapen for enhver node med verdi x i treet: Alle noder i venstre undertre av noden har lavere verdi og alle noder i høyre undertre har høyere verdi Forutsetter at elementene som lagres i treet kan ordnes på en eller annen måte

Operasjoner på binære søketrær Lages gjerne rekursivt Ettersom dybden på treet er O(log N) trenger vi ikke å bekymre oss for at stakken flyter over ??? For å sikre at treet kan ordnes implementerer vi Comparable og følgelig int compareTo() find findMin, findMax insert remove printTree

Tilfeldig generert binært søketre

Balanserte binære søketrær AVL-trær – balansebetingelse på høyde for venstre og høyre undertre. Enkel og dobbelrotasjon. Splaying – selvbalanserende. Zig-zig og zig- zag bestemmer rotasjoner for splayingen. Siste aksesserte node splayes til toppen.

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 Rask datastruktur for innsetting og gjenfinning Data plasseres i tabell på grunnlag av en nøkkel Nøkkelen gjøres om til index i tabellen ved hjelp av en hash-funksjon Hash-funksjonen må Gi god spredning Gi god dekning Når to elementer hashes til samme index har vi en kollisjon som må håndteres Åpen adressering - clustering Separat lenket liste - liste traversering - kompleksitet

Hash Hash-funksjonen bygger ofte på rest ved divisjon av nøkkel med TableSize. Erfaringsmessig best spredning hvis TableSize er primtall Lastfaktorens betydning Åpen adressering mer følsom enn separat lenket liste Rehashing ved for høy lastfaktor

Utvidbar Hash Directory i RAM – en array av pekere til diskblokker Directory indekseres med de D første bitene av nøkkelverdien Nøklene til alle poster i en diskblokk må være like på de d første bitene, d <=D

Sett inn Directory i RAM Bøtter på disk Antall felles biter i bøtta 6-bits data 01- bøtta 00- bøtta 10- bøtta