Innhold. Innledning 1



Like dokumenter
Pensum: fra boken (H-03)+ forelesninger

Pensum: fra boken (H-03)+ forelesninger

Oppsummering. I. HVA VAR DET? I.1 ADTer og Programutvikling I.2 Datastrukturer I.3 Algoritmer II. PENSUM III.EKSAMEN IV. ØNSKER

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

EKSAMEN. Dato: 28. mai 2018 Eksamenstid: 09:00 13:00

ALGORITMER OG DATASTRUKTURER

EKSAMENSOPPGAVE. INF-1101 Datastrukturer og algoritmer. Adm.bygget, rom K1.04 og B154 Ingen

ALGORITMER OG DATASTRUKTURER

Algdat-ninja på 60 minutter: Et galskapsprosjekt. Magnus Lie Hetland

Logaritmiske sorteringsalgoritmer

Definisjon av binært søketre

Eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 18. Desember 2000, kl

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

INF2220: Time 12 - Sortering

All good things. Fjortende forelesning

Alg. Dat. Øvingsforelesning 3. Grafer, BFS, DFS og hashing. Børge Rødsjø

UNIVERSITETET I OSLO

Studentnummer: Side 1 av 1. Løsningsforslag, Eksamen i TDT4120 Algoritmer og datastrukturer August 2005

Eksamen i tdt4120 Algoritmer og datastrukturer

Pensum: 3. utg av Cormen et al. Øvingstime: I morgen, 14:15

Alg. Dat. Øvingsforelesning 3. Grafer, BFS, DFS og hashing

Først litt praktisk info. Sorteringsmetoder. Nordisk mesterskap i programmering (NCPC) Agenda

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Notater til INF2220 Eksamen

for bare trær Andre forelesning

Løsningsforslag for eksamen i fag SIF8010 Algoritmer og datastrukturer Lørdag 9. august 2003, kl

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamen i fag SIF8010 Algoritmer og datastrukturer Lørdag 9. august 2003, kl

UNIVERSITETET I OSLO

Definisjon: Et sortert tre

Løsningsforslag for eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 18. Desember 2000, kl

Heap og prioritetskø. Marjory the Trash Heap fra Fraggle Rock

deeegimnoorrrsstt Sjette forelesning

Heap* En heap er et komplett binært tre: En heap er også et monotont binært tre:

ALGORITMER OG DATASTRUKTURER

Datastrukturer for rask søking

Søkeproblemet. Gitt en datastruktur med n elementer: Finnes et bestemt element (eller en bestemt verdi) x lagret i datastrukturen eller ikke?

deeegimnoorrrsstt Sjette forelesning

Hvor raskt klarer vi å sortere?

Kontinuasjonseksamen i fag SIF8010 Algoritmer og Datastrukturer Torsdag 9. August 2001, kl

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

Oppgave 1. Sekvenser (20%)

Eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 14. Desember 1999, kl

Løsningsforslag til eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 14. Desember 1999, kl

UNIVERSITETET I OSLO

Sorteringsproblemet. Gitt en array A med n elementer som kan sammenlignes med hverandre:

Agenda. 1 Sortering, heap og select. 2 Binære trær. 3 Grafer, BFS og DFS. 4 Spenntrær og Korteste vei. 5 Maks flyt. 6 Dynamisk programmering

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Ny/utsatt EKSAMEN. Dato: 5. januar 2018 Eksamenstid: 09:00 13:00

Ny/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00

ALGORITMER OG DATASTRUKTURER

UNIVERSITETET I OSLO

INF Algoritmer og datastrukturer

Heapsort. Lars Vidar Magnusson Kapittel 6 Heaps Heapsort Prioritetskøer

Høgskoleni østfold EKSAMEN. 4 dobbeltsidige ark med notater Lars Magnusson

Binær heap. En heap er et komplett binært tre:

INF Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Grunnleggende Grafteori

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Binære trær: Noen algoritmer og anvendelser

n/b log b n = (lg n) a log b n = n log b a

Løsningsforslag for utvalgte oppgaver fra kapittel 9

Løsningsforslag for utvalgte oppgaver fra kapittel 3

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

Algoritmer og Datastrukturer

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

Øvingsforelesning 6. Sorteringsalgoritmer. Martin Kirkholt Melhus Basert på foiler av Kristian Veøy 30/09/14 1

PG4200 Algoritmer og datastrukturer Forelesning 10

LØSNINGSFORSLAG, EKSAMEN I ALGORITMER OG DATASTRUKTURER (IT1105)

UNIVERSITETET I OSLO

INF Algoritmer og datastrukturer. Hva er INF2220? Algoritmer og datastrukturer

PG 4200 Algoritmer og datastrukturer Innlevering 2

INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

Ekstra ark kan legges ved om nødvendig, men det er meningen at svarene skal få plass i rutene på oppgavearkene. Lange svar teller ikke positivt.

GRAFER. Korteste vei i en vektet graf uten negative kanter. Korteste vei, en-til-alle, for: Minimale spenntrær

Dagens tema. Sortering. Fortsettelse om programmering vha tråder.

Binære søketrær. Et notat for INF1010 Stein Michael Storleer 16. mai 2013

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Øvingsforelesning 6. Sorteringsalgoritmer. Kristian Veøy

NITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 2013

Løsningsforslag for Obligatorisk Oppgave 3. Algoritmer og Datastrukturer ITF20006

O(V 2 ) bwfs(v, i=1) λ[v] = i for each neighbor u of v if 0 < λ[u] < i. bwfs(u, i+1) if λ[u] = 0

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Et eksempel: Åtterspillet

Algdat Oppsummering, eksamen-ting. Jim Frode Hoff

EKSAMEN. Dato: 18. mai 2017 Eksamenstid: 09:00 13:00

Innledning. IN2010/INF Algoritmer og datastrukturer. Tirsdag 27. november 2018 Kl (4 timer)

Go with the. Niende forelesning. Mye matematikk i boka her ikke så komplisert, men mye å holde styr på.

INF2220: Time 4 - Heap, Huffmann

Løsningsforslag. Oppgave 1.1. Oppgave 1.2

TDT4105 Informasjonsteknologi, grunnkurs

IN Algoritmer og datastrukturer

Dijkstras algoritme. Her finnes det også (minst) en riktig rekkefølge for Relax, men den må vi oppdage litt etter hvert.

Transkript:

Innhold Innledning 1 1 Kompleksitetsanalyse 7 1.1 Innledning.............................. 8 1.2 Hva vi beregner........................... 8 1.2.1 Enkle operasjoner...................... 8 1.2.2 Kompleksitet........................ 9 1.3 Asymptotisk notasjon........................ 11 1.3.1 O en øvre grense for kjøretid............... 11 1.3.2 Ω en nedre grense for kjøretid.............. 12 1.3.3 Θ en øvre og nedre grense................ 13 1.4 Praktisk analyse........................... 14 1.4.1 Enkle tilfeller........................ 14 1.4.2 Kode inni løkker...................... 15 1.4.3 Noen «feller» og spesialtilfeller.............. 16 1.4.4 If-setninger og andre betingelser.............. 16 2 Rekursjon 21 2.1 Hva er rekursjon?.......................... 22 2.1.1 Eksempel: Fakultetsberegning............... 22 2.1.2 Eksempel: Å snu rekkefølgen av elementene i en tabell.. 24 2.1.3 Rekursjon og iterasjon................... 26 2.1.4 Induksjon, rekursjon og rekursive definisjoner....... 27 2.1.5 Analyse av lineær rekursjon................ 27 2.2 Splitt og hersk!........................... 29 2.2.1 Et rekursivt kall med halv størrelse............ 29 2.2.2 To rekursive kall med halv størrelse............ 31 2.2.3 To rekursive kall med størrelse (cirka) n 1........ 33 2.2.4 Mer enn to rekursive kall i hvert nivå........... 36 2.3 En generell metode for å finne tidskompleksiteten......... 39 2.4 Prøve og feile-algoritmer...................... 42 2.4.1 Eksempel: Åtte dronninger på et sjakkbrett........ 42 3 Sortering 47 3.1 Sorteringsproblemet......................... 48 3.2 Standardmetode for å bytte om tall................. 49 3.3 Innsettingssortering......................... 49 3.3.1 Analyse........................... 50 3.3.2 Anvendelser......................... 50

viii Innhold 3.4 Boblesortering............................ 51 3.4.1 Analyse........................... 51 3.5 Velgesortering............................ 52 3.6 Om kvadratiske sorteringsalgoritmer................ 53 3.7 Shellsort............................... 54 3.7.1 Analyse........................... 55 3.8 Flettesortering............................ 55 3.8.1 Metoden flett........................ 56 3.8.2 Metoden flettesort..................... 57 3.9 Quicksort.............................. 58 3.9.1 Metoden quicksort..................... 59 3.9.2 Metoden median3sort enkel forbedring av quicksort.. 60 3.9.3 Metoden splitt....................... 62 3.9.4 Mer om kjøretiden for quicksort.............. 64 3.9.5 Feller når en implementerer quicksort........... 66 3.10 Nedre grenser for kompleksitet, og lineær sortering........ 67 3.10.1 En nedre grense for verste tidsbruk ved sortering..... 67 3.10.2 Sortering i lineær tid.................... 68 3.11 Tellesortering............................ 68 3.11.1 Analyse........................... 69 3.11.2 Tellesortering av heltall................... 70 3.11.3 Intern tellesortering..................... 70 3.12 Radikssortering........................... 72 4 Datatypen liste 77 4.1 Liste som abstrakt datatype..................... 78 4.2 Liste implementert ved hjelp av en tabell.............. 79 4.2.1 Opprette lista, finne lengden av den og tømme den.... 79 4.2.2 Sette inn elementer og fjerne elementer fra lista...... 80 4.2.3 Finne et bestemt element i lista og sortere den....... 81 4.2.4 Sekvensiell gjennomløping av lista............. 82 4.3 Lenket liste............................. 83 4.3.1 Enkel liste.......................... 83 4.3.2 Dobbeltlenket liste..................... 88 4.4 Iteratorer.............................. 92 5 Kø og stakk 97 5.1 Kø.................................. 98 5.1.1 Implementasjon...................... 98 5.2 Stakk................................ 100 5.2.1 Implementasjon...................... 100 5.3 Eksempel: En enkel kalkulator................... 102

Innhold ix 6 Trær 111 6.1 Grafer og trær............................ 112 6.2 Binærtrær.............................. 115 6.2.1 Høyde og dybde...................... 117 6.2.2 Traversering........................ 119 6.2.3 Generelle trær representert som binærtrær......... 121 6.3 Binære søketrær........................... 122 6.3.1 Innsetting.......................... 123 6.3.2 Søking........................... 123 6.3.3 Sletting........................... 124 6.4 Tidskompleksitet for operasjoner på binærtrær........... 126 6.4.1 Dybde, høyde og traversering............... 127 6.4.2 Innsetting, søking og sletting i binært søketre....... 127 6.5 B-trær................................ 128 6.5.1 Operasjoner på B-trær................... 130 6.5.2 Kompleksitetsbetraktninger................ 134 7 Heapstrukturen og prioritetskøer 139 7.1 Innledning.............................. 140 7.1.1 Hva er en heap?....................... 140 7.1.2 Anvendelser......................... 141 7.2 Datastruktur og metoder...................... 141 7.2.1 Metoden fiks_heap..................... 142 7.2.2 Metoden lag_heap..................... 144 7.2.3 Metoden hent_maks.................... 146 7.2.4 Metoder for å forandre prioritet.............. 146 7.2.5 Metoden sett_inn...................... 147 7.2.6 Metoden heapsort...................... 148 7.2.7 Noen merknader til implementasjonen........... 149 8 Hashtabeller 153 8.1 Hva er en hashtabell?........................ 154 8.1.1 Noen anvendelser...................... 154 8.1.2 Lastfaktor.......................... 155 8.1.3 Problemer med hashtabeller................ 155 8.2 Hashfunksjoner........................... 156 8.2.1 Hashfunksjon basert på restdivisjon............ 157 8.2.2 Hashfunksjon basert på multiplikasjon........... 157 8.3 Kollisjonshåndtering........................ 160 8.3.1 Lenkede lister........................ 160 8.3.2 Åpen adressering...................... 160 9 Grafteori 169 9.1 Innledning.............................. 170 9.1.1 Hva en graf er........................ 170 9.1.2 Definisjoner......................... 170

x Innhold 9.2 Implementasjoner.......................... 171 9.2.1 Naboliste.......................... 171 9.2.2 Tabell............................ 172 9.2.3 Sammenlikning av naboliste og tabell........... 175 9.3 Bredde først-søk (BFS)....................... 176 9.3.1 Eksempel.......................... 179 9.3.2 Analyse........................... 179 9.4 Dybde først-søk (DFS)....................... 180 9.4.1 Metoden dfs........................ 180 9.4.2 Metoden dfs_init...................... 182 9.4.3 Metoden df_sok...................... 182 9.4.4 Eksempel.......................... 182 9.4.5 Analyse........................... 182 9.5 Topologisk sortering........................ 183 9.5.1 Metoden df_topo...................... 185 9.5.2 Metoden topologisort.................... 185 9.5.3 Litt mer forklaring, og et par eksempler.......... 186 9.5.4 Analyse........................... 186 9.6 Sammenhengende og sterkt sammenhengende grafer....... 187 9.6.1 Analyse........................... 189 9.7 Vektede grafer............................ 189 9.7.1 Datastruktur for vektet graf implementert som naboliste. 191 9.8 Korteste vei-problemet....................... 191 9.8.1 Innledning......................... 191 9.8.2 Felles metoder....................... 194 9.8.3 Dijkstras algoritme..................... 194 9.8.4 Bellman Ford-algoritmen.................. 197 9.9 Minimale spenntrær......................... 199 9.9.1 Kruskals algoritme..................... 200 9.9.2 Prims algoritme....................... 204 9.10 Maksimal flyt............................ 207 9.10.1 Flytnettverk......................... 207 9.10.2 Ford Fulkerson-metoden for maksimal flyt........ 209 9.10.3 Edmonds Karp-algoritmen................. 211 10 Noen avanserte programmeringsteknikker 215 10.1 Ulike optimaliseringsmetoder.................... 216 10.1.1 Rå kraft-algoritmer..................... 216 10.1.2 Splitt og hersk-algoritmer................. 217 10.1.3 Probabilistiske algoritmer................. 217 10.2 Dynamisk programmering..................... 219 10.2.1 To eksempler på dynamisk programmering........ 219 10.2.2 Å kombinere rekursjon med dynamisk programmering.. 223 10.3 Grådige algoritmer......................... 225 10.3.1 Huffman-koding...................... 225 10.4 Evolusjonære algoritmer...................... 229

Innhold xi 10.4.1 Gener, formering, mutasjon og utvelging......... 229 10.4.2 Genetisk algoritme og genetisk programmering...... 231 11 Bruk av ferdige klassebibliotek 235 11.1 Datastrukturene konteiner og iterator................ 236 11.1.1 Iteratorer.......................... 236 11.1.2 Konteinere......................... 237 11.2 Standard Template Library..................... 238 11.2.1 Konteinere......................... 239 11.2.2 Iteratorer.......................... 245 11.2.3 Algoritmer......................... 246 11.3 Java Collections Framework.................... 254 11.3.1 Konteinere......................... 254 11.3.2 Iteratorer.......................... 258 11.3.3 Algoritmer......................... 259 11.4 Eksempel: Frekvens av ord i en tekst................ 264 A Matematikk 271 A.1 Begreper............................... 272 A.2 Notasjon............................... 272 A.3 Formelsamling........................... 272 A.3.1 Logaritmer......................... 272 A.3.2 Rekker........................... 273 A.3.3 Geometriske rekker..................... 273 A.3.4 Den harmoniske rekka................... 273 A.3.5 Stirlings approksimasjon for n!............... 273 A.4 Litt sannsynlighetsregning..................... 274 A.4.1 Forventningsverdier.................... 274 A.5 Approksimere summer med integraler............... 274 A.6 Det greske alfabetet......................... 275 Litteratur 277 Algoritmer 279 Register 283