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

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

Pensum: fra boken (H-03)+ forelesninger

Innhold. Innledning 1

PQ: HEAP. Heap. Er disse heap er? Hvordan implementere heap:

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Vi skal se på grafalgoritmer for:

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

... Når internminnet blir for lite. Dagens plan: Løsning: Utvidbar hashing. hash(x) katalog. O modellen er ikke lenger gyldig ved

PG4200 Algoritmer og datastrukturer Forelesning 10

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

Datastrukturer for rask søking

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

Øvingsforelesning Korteste vei: Alle til alle

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

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

Oppgave 1. Sekvenser (20%)

All good things. Fjortende forelesning

AlgDat 12. Forelesning 2. Gunnar Misund

PG4200 Algoritmer og datastrukturer Forelesning 7

Definisjon av binært søketre

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

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

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

for bare trær Andre forelesning

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

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

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

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Tillatte hjelpemidler: alle skrevne og trykte. Antall sider: 2 (+ 1 side vedlegg, bakerst). Oppgave 1 [25%]

IN Algoritmer og datastrukturer

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Dagens tema. INF Algoritmer og datastrukturer. Binærtrær. Generelle trær

PrioritetsKøer I. ADGANG TIL ELEMENTER I EN SAMLING II. TOTALE ORDNINGER OG NØKLER III.PRIORITETSKØ ADT IV. IMPLEMENTASJON MED SEQUENCE ADT

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen

INF2220: Time 12 - Sortering

Repetisjon: Binære. Dagens plan: Rød-svarte trær. Oppgave (N + 1)!

Binære trær: Noen algoritmer og anvendelser

Vi skal se på grafalgoritmer for:

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

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

Ordbøker I. ORDBOK /PRIORITETSKØ = SEKVENS /LIFI II. IMPLEMENTASJON MED SEQUENCE III.IMPLEMENTASJON MED HASH TABELL

Definisjon: Et sortert tre

Binære søketrær. En ordnet datastruktur med raske oppslag. Sigmund Hansen

UNIVERSITETET I OSLO

EKSAMENSOPPGAVE. NB! Det er ikke tillatt å levere inn kladd sammen med besvarelsen

Grunnleggende Grafteori

Lenkelister, iteratorer, indre klasser. Repetisjonskurs våren 2018 kristijb

IN Algoritmer og datastrukturer

ALGORITMER OG DATASTRUKTURER

Oppgave 1. Stabler og Køer (30%)

INF Algoritmer og datastrukturer

Datastrukturer. Algoritmer og datastrukturer. Øvingsforelesning 2

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

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

Algdat Oppsummering, eksamen-ting. Jim Frode Hoff

INF Algoritmer og datastrukturer

Evt. forklar på tavla. Diskuter kjøretid (best-/ worst-case). Innsetting og søk. Rekursjon igjen. A C E G

INF2220: Forelesning 3

AlgDat 10. Forelesning 2. Gunnar Misund

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

INF2220: Forelesning 3. Map og hashing Abstrakte datatyper (kapittel 3.1) Map (kapittel 4.8) Hashing (kapittel 5)

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

Definisjon. I et binært tre har hver node enten 0, 1 eller 2 barn

UNIVERSITETET I OSLO

-Påmelding til disse Fredag 31/8 10:15 i Auditorium A. -Første møte neste uke. -For aktive studenter, med diskusjon om ukentlige øvelser.

Python: Rekursjon (og programmering av algoritmer) Python-bok: Kapittel 12 + teoribok om Algoritmer

København 20 Stockholm

INF2810: Funksjonell Programmering. Oppsummering og eksamensforberedelser

Norges teknisk-naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap

INF Algoritmer og datastrukturer

Algdat Eksamensforelesning. Nils Barlaug

INF2810: Funksjonell Programmering. Oppsummering og eksamensforberedelser

Innhold uke 10. Objektorientert programmering i Python. Oblig 7 og 8. IN1000 Seminar! IN1000 Høst 2018 uke 10 Siri Moe Jensen

INF2810: Funksjonell Programmering. Oppsummering og eksamensforberedelser

UNIVERSITETET I OSLO

Oppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

deeegimnoorrrsstt Sjette forelesning

PrioritetsKøer. i-120 : h98 8. PrioritetsKøer: 1. Samling. n-te/vilkårlig. FiLi. PosSamling. Sequence

PG4200 Algoritmer og datastrukturer Forelesning 12

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Magnus Moan (Undertegnede) Enkle datastrukturer, trær, traversering og rekursjon

UNIVERSITETET I OSLO

Øvingsforelesning 2 - TDT4120. Grafer og hashing. Benjamin Bjørnseth

Notater til INF2220 Eksamen

Container ADT. Sekvenser. int size(); antall elementer i samlingen */ boolean isempty(); true hviss samlingen er tom */

TDT4105 Informasjonsteknologi, grunnkurs

ALGORITMER OG DATASTRUKTURER

EKSAMEN. Algoritmer og datastrukturer. Eksamensoppgaven: Oppgavesettet består av 11 sider inklusiv vedlegg og denne forsiden.

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

INF2810: Funksjonell Programmering. Oppsummering og eksamensforberedelser

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

INF Algoritmer og datastrukturer

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

Transkript:

Oppsummering I. HVA VAR DET? I.1 ADTer og Programutvikling I.2 Datastrukturer I.3 Algoritmer II. PENSUM III.EKSAMEN IV. ØNSKER i-120 : h-99 11. Oppsummering: 1

Hva oppnår vi med ADT-modul begrepet? 1. utvider programmeringsspråket med nye primitive typer typer med tilhørende operasjoner 2. ulike implementasjoner av en ADT kan erstatte hverandre ulike implementasjoner har ulike plass- og tidsforbruk (og kan velges avhengig av behov) enkelte moduler kan vedlikeholdes uten at det krever endringer i resten av systemet (ingen ekstra integrering av ny implementasjon) 3. implementasjon = konfigurasjon + koding konfigurasjon blir en egen gren av programmering på lik linje med vanlig (tradisjonell) implementering En ADT-modul oppfyller krav til en god modularisering (Parnas) 1. den utgjør en logisk enhet hver ADT definerer et begrep 2. den har et klart grensesnitt mot omverden (enkapsling) gitt ved grensesnittsmetoder beskrevet i dokumentasjon 3. den er gjenbrukbar i alle kontekster der det er behov for begrepet som ADT definerer i-120 : h-99 11. Oppsummering: 2

Implementasjon av en ADT-modul 1. Ta utgangspunkt i spesifikasjon (interface & dokumentasjon) 2. Se om det finnes noen moduler i standard eller i din lokale bibliotek som kan brukes 3. Implementer typen finn datastruktur som kan lagre nok og relevant informasjon beskriv datainvarianten beskriv abstraksjonsfunksjonen hvordan konkrete instanser av datastrukturen som oppfyller datainvarianten representerer abstrakte verdier analyser plassbehovet til datastrukturen 4. Implementer metodene finn passende algoritmer (ofte modifiser en eksisterende en) vis at den er korrekt at algoritmen gjenetablerer datainvarianten forutsatt at denne var oppfylt ved start at dersom inndata oppfyller forkravene så vil algoritmen returnere en verdi som tilsvarer den abstrakte verdien som kreves av spesifikasjonen (løkke- og rekursjonsinvarianter) analyser tidsforbruket til algoritmen 5. Skriv kode Programutvikling, i likhet med ethvert kreativt arbeid, foregår ikke som en rettlinjet prosess. i-120 : h-99 11. Oppsummering: 3

Programutvikling krever men er ikke det samme som koding Gamle Vannfallsmodellen ADT-basert livssyklusmodell (ADT-programmering) orientert mot enkeltprosjekt gjenbruk er fraværende vedlikehold er ikke integrert akseptansetest design koding integrering (A)DT utvikling akseptansetest enkeltprosjekt/ underprosjekt spesifikasjon koding/konfigurevalidering vedlikehold funksjons- feil- spesifikasjon koding/konfigurering validering vedlikehold funksjons- feilendring retting aksep- aksep- spesifikasjon koding/konfigurevalidering vedlikehold spesifikasjon koding/konfigurevalidering funkaksepvedlikehold funksjons- feil- preventivt vedlikehold ytelsesbedring ADT bibliotek vedlikehold i-120 : h-99 11. Oppsummering: 4

Abstarkte DataTyper og DataTyper Abstrakte DataTyper LiFi Container PosContainer Position Comparator Enumeration Locator Stack Queue PosSequence RankSequence Tree BinaryTree PriorityQueue Dictionary Graph DiGraph implements DataTyper Lenkede Lister Array Sorted Sequence = Sequence + di Heap = BT + di BST = BT + di kjennskap til alle ADT er og DT er kjennskap til forskjellige implementasjoner av ADT er evnen til å vurdere alternative implementasjoner posisjoner, samt objekter uten vs. med nøkler HashTabell = Array +? + di bruker extends implements i-120 : h-99 11. Oppsummering: 5

Algoritmer enkel korrekthets- og kompleksitetsanalyse av algoritmer design av rekursive algoritmer sorteringsalgoritmer ( in-place eller ikke?) prioritetskø-sortering: instikk- / seleksjon- / haugsort (heapsort) flettesortering (mergesort) / kvikksort (quicksort) boblesortering (bubblesort) trealgoritmer traversering: DFS, BFS DFS: preorder, postorder (innorder for Binære Trær) heap (implementasjon av PriorityQueue) innsetting og fjerning med opprettholdelse av heap-invarianten binære søketrær (implementasjon av Dictionary) søk i BST: innsetting og fjerning med opprettholdelse av BST-invarianten (multiple nøkler) hashtabeller litt om hashfunksjoner og kollisjonshåndtering grafalgoritmer graftraversering: DFS og BFS transitiv tillukking (n*dfs / Floyd-Warshall) rettede grafer: topologisk sortering (samt forskjeller i DFS / BFS fra ikke-rettede grafer) vektede grafer: SS-SP (Dijkstra / Ford-Bellman) vektede grafer: minimum utspennende tre, MST (Kruskal) i-120 : h-99 11. Oppsummering: 6

Pensum: fra boken (H-99) unntatt kursorisk poenger KAP. 1 1.4.2 OO, ABSTRAKSJON... KAP. 2 O-NOTASJON KAP. 3 3.2.4, 3.5 3.1.3, 3.2.3, 3.4 STABEL, KØ, LISTE, ADAPTER KAP. 4 SEKVENS; RANK, POSITION; ENUMERATION-ITERATOR KAP. 5 5.5 5.4.4 TRÆR, B-TRÆR + BSF/DFS (PRE/POST/IN-ORDER) KAP. 6 6.3.4 PRIORITETSKØ, HEAP; TOTALORDNING/COMPARATOR KAP. 7 7.4, 7.5 7.6.2, 7.6.3, 7.7 ORDBOK, BST, HASHTAB KAP. 8 8.1.3, 8.2, 8.6 8.4, 8.5 QUICKSORT (MERGESORT); RANDOMISERING KAP. 9 9.4.5 GRAF, DIGRAF, DFS/BFS, FW KAP. 10 10.2.2-10.2.4, SS-SP (DIJKSTRA,BELLMAN-FORD), MST (KRUSKAL) 10.3 i-120 : h-99 11. Oppsummering: 7

Eksamen skal sjekke at 1. en kan bruke kjente datastrukturer og algoritmer 2. evt. gjennom tilpassing, modifikasjon og abstraksjon 3. til å lage selvstendige og effektive løsninger på nye problemer kjennskap til definisjoner, invarianter, algoritmer er en opplagt forutsetning 1. Algoritmer, effektivitet (O-notasjon) og rekursjon (oblig. 1 og 2) 2. DataStrukturer (oblig. 2) 3. Implementasjon og ADT (modulær) programmering (oblig. 2) typiske eksempler: gitt et problem: deklarer datastruktur og design en algoritme (med evt. krav til datastrukt/kompleksitet) gitt flere problemer av liknende karakter: lag en generisk algoritme som løser hvert problem når passelig instansiert (design et grensesnitt som abstraherer forskjeller) gitt en ADT: design/beskriv en implementasjon som tilfredstiller visse (kompleksistets)krav bruk kjente interface (disse er ofte gitt i vedlegg, men man må kjenne til deres intenderte virkemåte) NB! Ved bruk av andre interface i en implementasjon, vil kompleksiteten avhenge av implementasjon av disse interface ne man snakke om kompleksitet relativt til implementasjon av andre interface. se tidligere eksamener på kurssiden (prøv å løse de selv, se på løsningsforslag, sammenlign og se hva som evt. kunne forbedres i begge) i-120 : h-99 11. Oppsummering: 8

På eksamen (15 desember) prosentsatsene ved enkle oppgaver angir forventet og omtrentlig tidsforbruk disse trenger ikke å stemme for hver person! Les hele eksamensettet Løs først alle de oppgavene du kan For de oppgavene du ikke ser en løsning på disponer tiden!!! begynn med en som virker enklest har du brukt for mye tid på denne uten å lykkes, forsøk heller å løse en annen oppgave istedenfor å bli stående ved den ene (du kan komme tilbake til denne dersom du får tid senere) løkke- og rekursjonsinvarianter, forbetingelser, dokumentasjon kan du skrive først når du er ferdig med alle dine løsninger klarer man ikke å vurdere kompleksiteten, er det naturlig å lage så effektive algoritmer som mulig det er bedre å skrive noe selv om veldig lite riktig enn ingenting det er bedre å skrive ingenting enn masse tull i-120 : h-99 11. Oppsummering: 9