Løsningsforslag for Obligatorisk Oppgave 3. Algoritmer og Datastrukturer ITF20006
|
|
- Turid Arntsen
- 7 år siden
- Visninger:
Transkript
1 Løsningsforslag for Obligatorisk Oppgave 3 Algoritmer og Datastrukturer ITF20006 Lars Vidar Magnusson Frist Den tredje obligatoriske oppgaven tar for seg forelesning 9 til 13, som dreier seg om datastrukturer. Løsningsforslaget inneholder ikke analyse av faktisk kjøretid. Dette ble gjort fordi poenget med disse var primært å la studentene få erfare forskjellen mellom faktisk kjøretid og asymptotisk kjøretid på egen hånd. Praktisk Informasjon Det er med disse oppgavene dere skal få den nødvendige erfaringen dere trenger, så det kreves at alle innleveringer skal være individuelt arbeid. Det er selvsagt til lov å hjelpe hverandre, men den endelige besvarn skal være et resultat av eget arbeid. Besvarr som viser tegn plagiering vil bli underkjente. Dere kan selv velge hvilket språk dere vil implementere algoritmene i, men hvis dere skulle trenge hjelp kan det være greit å holde seg til enten Java, C# eller C (eller SML for spesielt interesserte). Både kode og tekst skal samles i en enkel rapport som så sendes til meg på lars.v.magnusson@hiof.no. Rapporten skal være i pdf-format og skal være strukturert i henhold til oppgavene. Dere står fritt i om koden legges direkte inn i besvarsteksten som figurer eller om dere legger den til som appendix og bruker refaranser. Oppgave 1 - Stakker og Køer Denne oppgaven dreier som om stakker og køer. A - FIFO vs. LIFO Forklar forskjellen mellom FIFO og LIFO og hvordan begrepene er relatert til stakker og køer. FIFO står for First In First Out i.e. elementer som blir satt inn først kommer først ut. LIFO står for Last In First Out i.e. elementer som blir satt inn sist kommer først ut. 1
2 B - Applikasjonsområder Gi minst et konkret eksempel på et applikasjonsområde for både en stakk og en kø. En stakk kan anvendes til: Sjekke balanse i paranteser Sjekke gyldig XML Postfix kalkulator Dybdeførst søk... En kø kan anvendes til: Diverse køsystemer e.g. betalingskø, taxikø Enkel oppgavehåndtering Breddeførst søk... Oppgave 2 - Dictionaries Vi har i forelesningene presentert en rekke datastrukturer som implementerer dictionary grensesnittet/operasjonene Insert, Delete og Search. A - Beskriv Gi en kort beskriv av de ulike datastrukturene med fokus på kjøretiden til de ulike operasjonene. Direkteadresserte tabeller Insert - O(1). Delete - O(1). Search - O(1). Hashtabeller med chaining med dobbeltlenket liste Insert - O(1). Delete - O(1). Search - O(1 + α), α er belastningsfaktoren. Lenkede lister (dobbeltlenket) 2
3 Insert - O(1). Delete - O(1). Search - O(n). Binære søketrær Insert - O(h), h varierer mellom log n og n. Delete - O(h). Search - O(h). Rødsvarte søketrær Insert - O(h), h er alltid log n. Delete - O(h). Search - O(h). B-trær Insert - O(h), h er alltid log t n, t er branchfaktoren. Delete - O(h). Search - O(h). B - Applikasjonsområder Diskuter i hvilke situasjoner de ulike datastrukturene passer inn med fokus på fordelene den hver av datastrukturene tilbyr i forhold til de andre i en gitt situasjon. Ideelt sett ville vi aller heltst ta i bruk direkteadresserte tabeller siden alle operasjonene er konstante, men problemet er at dette ville kreve enorme mengder minne i mange tilfeller. Hashtabeller er et godt alternativ når antall nøkler i bruk er mye mindre enn det maksimalt mulige antallet. De gir konstant kjøretid på både innsetting og sletting, og søketiden kan til en viss grad kontrolleres ved å sørge for fornuftig belastningsfaktor. Lenkede lister er nyttige hvis man ikke vet hvor mange elementer de vil inneholde. De gir konstant innsetting og sletting uansett antall elementer i en liste, men søketiden er avhengig av størrn. De er derfor best egnet i situasjoner hvor det ikke må utføre mange søk. Binære søketrær og rødsvarte trær er anvendelige i situasjoner hvor søk er viktigere enn innsetting og sletting. Hvis vi vet at input er uniformt distribuert (eller i nærheten) er det best å ta i bruk binære søketrær siden konstantleddet 3
4 er minst. Hvis derimot man ikke er trygg på input distribusjonen er rødsvarte trær best, siden de garanterer en logaritmisk høyde på treet. B-trær er som binære og rødsvarte søketrær egnet for søk. De er spesielt egnet for lagring til fil siden de minimerer antall diskoperasjoner som trengs for utføre operasjonene. Oppgave 3 - Implementasjon av Søketrær I denne oppgaven skal dere implementere to av de ulike søketrærne vi har presentert i forelesningene, og dere skal sammenligne resultatet. A - Binære Søketrær Implementer binære søketrær i henhold til pseudokoden gitt i forelesningen. Det holder at dere implementerer dictionary operasjonene Insert, Delete og Search. De binære søketre operasjonene er implementert med følgende Node-klasse. class Node { int key ; Node l e f t, r i g h t, p ; public Node ( int key ) { this. key = key ; public S t r i n g t o S t r i n g ( ) { return ( key : + key + l e f t : + l e f t + r i g h t : + r i g h t + ) ; Alle operasjonene er implementert direkte utifra pseudokoden. Metodene er implementerte som statiske metoder i en java-klasse, så roten på treet holdes i en statisk variabel root. s t a t i c Node s e a r c h ( Node x, int key ) { i f ( x == null key == x. key ) return x ; i f ( key < x. key ) return s e a r c h ( x. l e f t, key ) ; return s e a r c h ( x. r i g h t, key ) ; s t a t i c void i n s e r t ( Node z ) { 4
5 Node y = null ; Node x = r o o t ; while ( x!= null ) { y = x ; i f ( z. key < x. key ) x = x. l e f t ; x = x. r i g h t ; z. p = y ; i f ( y == null ) r o o t = z ; i f ( z. key < y. key ) y. l e f t = z ; y. r i g h t = z ; s t a t i c void t r a n s p l a n t ( Node u, Node v ) { i f ( u. p == null ) r o o t = v ; i f ( u == u. p. l e f t ) u. p. l e f t = v ; u. p. r i g h t = v ; i f ( v!= null ) v. p = u. p ; s t a t i c Node minimum( Node x ) { while ( x. l e f t!= null ) x = x. l e f t ; return x ; s t a t i c void d e l e t e ( Node z ) { i f ( z. l e f t == null ) t r a n s p l a n t ( z, z. r i g h t ) ; i f ( z. r i g h t == null ) t r a n s p l a n t ( z, z. l e f t ) ; { Node y = minimum( z. r i g h t ) ; i f ( y. p!= z ) { t r a n s p l a n t ( y, y. r i g h t ) ; y. r i g h t = z. r i g h t ; y. r i g h t. p = y ; 5
6 t r a n s p l a n t ( z, y ) ; y. l e f t = z. l e f t ; y. l e f t. p = y ; B - Rød-Svarte Trær Implementer rød-svarte trær i henhold til pseudokoden gitt i forelesningen. Det holder også her at dere implementerer dictionary operasjonene Insert, Delete og Search. Rød-Svarte trær implementasjonen er basert på følgende Node-klasse. s t a t i c class Node { int key ; Node l e f t, r i g h t, p ; boolean c o l o r ; // f a l s e = s v a r t, t r u e = ørd public Node ( int key ) { this. key = key ; i f ( n i l!= null ) l e f t = r i g h t = p = n i l ; l e f t = r i g h t = p = this ; c o l o r = f a l s e ; public S t r i n g t o S t r i n g ( ) { return ( + ( c o l o r? red : black ) + key : + key + l e f t : + l e f t + r i g h t : + r i g h t + ) ; Operasjonene er også her implementerte som statiske metoder. nil refererer til en statisk node som brukes i stedet for null for å forenkle koden. Vi begynner med hjelpeoperasjonene. s t a t i c void t r a n s p l a n t ( Node u, Node v ) { i f ( u. p == n i l ) r o o t = v ; i f ( u == u. p. l e f t ) u. p. l e f t = v ; u. p. r i g h t = v ; 6
7 v. p = u. p ; s t a t i c Node minimum( Node x ) { while ( x. l e f t!= n i l ) x = x. l e f t ; return x ; s t a t i c void l e f t R o t a t e ( Node x ) { Node y = x. r i g h t ; x. r i g h t = y. l e f t ; i f ( y. l e f t!= n i l ) y. l e f t. p = x ; y. p = x. p ; i f ( x. p == n i l ) r o o t = y ; i f ( x == x. p. l e f t ) x. p. l e f t = y ; x. p. r i g h t = y ; y. l e f t = x ; x. p = y ; s t a t i c void r i g h t R o t a t e ( Node x ) { Node y = x. l e f t ; x. l e f t = y. r i g h t ; i f ( y. r i g h t!= n i l ) y. r i g h t. p = x ; y. p = x. p ; i f ( x. p == n i l ) r o o t = y ; i f ( x == x. p. r i g h t ) x. p. r i g h t = y ; x. p. l e f t = y ; y. r i g h t = x ; x. p = y ; Søkeoperasjonen er implementert på samme måte som i binære søketrær, bortsett fra nil. s t a t i c Node s e a r c h ( Node x, int key ) { 7
8 i f ( x == n i l key == x. key ) return x ; i f ( key < x. key ) return s e a r c h ( x. l e f t, key ) ; return s e a r c h ( x. r i g h t, key ) ; Insert er avhengig av en hjelpefunksjon for å rydde opp etter innsetting. Begge metodene kommer her. s t a t i c void i n s e r t F i x u p ( Node z ) { while ( z. p. c o l o r == true ) { i f ( z. p == z. p. p. l e f t ) { Node y = z. p. p. r i g h t ; i f ( y. c o l o r == true ) { z. p. c o l o r = f a l s e ; y. c o l o r = f a l s e ; z. p. p. c o l o r = true ; z = z. p. p ; { i f ( z == z. p. r i g h t ) { { z = z. p ; l e f t R o t a t e ( z ) ; z. p. c o l o r = f a l s e ; z. p. p. c o l o r = true ; r i g h t R o t a t e ( z. p. p ) ; Node y = z. p. p. l e f t ; i f ( y. c o l o r == true ) { z. p. c o l o r = f a l s e ; y. c o l o r = f a l s e ; z. p. p. c o l o r = true ; z = z. p. p ; { i f ( z == z. p. l e f t ) { z = z. p ; r i g h t R o t a t e ( z ) ; 8
9 z. p. c o l o r = f a l s e ; z. p. p. c o l o r = true ; l e f t R o t a t e ( z. p. p ) ; r o o t. c o l o r = f a l s e ; s t a t i c void i n s e r t ( Node z ) { Node y = n i l ; Node x = r o o t ; while ( x!= n i l ) { y = x ; i f ( z. key < x. key ) x = x. l e f t ; x = x. r i g h t ; z. p = y ; i f ( y == n i l ) r o o t = z ; i f ( z. key < y. key ) y. l e f t = z ; y. r i g h t = z ; z. l e f t = n i l ; z. r i g h t = n i l ; z. c o l o r = true ; i n s e r t F i x u p ( z ) ; Delete er også avhengig av en hjelpefunksjon for å rydde. s t a t i c void d e l e t e F i x u p ( Node x ) { while ( x!= r o o t && x. c o l o r == f a l s e ) { i f ( x == x. p. l e f t ) { Node w = x. p. r i g h t ; i f (w. c o l o r == true ) { w. c o l o r = f a l s e ; x. p. c o l o r = true ; l e f t R o t a t e ( x. p ) ; w = x. p. r i g h t ; 9
10 i f (w. l e f t. c o l o r == f a l s e && w. r i g h t. c o l o r == f a l s e ) { w. c o l o r = true ; x = x. p ; { i f (w. r i g h t. c o l o r == f a l s e ) { { w. l e f t. c o l o r = f a l s e ; w. c o l o r = true ; r i g h t R o t a t e (w) ; w = x. p. r i g h t ; w. c o l o r = x. p. c o l o r ; x. p. c o l o r = f a l s e ; w. r i g h t. c o l o r = f a l s e ; l e f t R o t a t e ( x. p ) ; x = r o o t ; Node w = x. p. l e f t ; i f (w. c o l o r == true ) { w. c o l o r = f a l s e ; x. p. c o l o r = true ; r i g h t R o t a t e ( x. p ) ; w = x. p. l e f t ; i f (w. r i g h t. c o l o r == f a l s e && w. l e f t. c o l o r == f a l s e ) { w. c o l o r = true ; x = x. p ; { i f (w. l e f t. c o l o r == f a l s e ) { w. r i g h t. c o l o r = f a l s e ; w. c o l o r = true ; l e f t R o t a t e (w) ; w = x. p. l e f t ; w. c o l o r = x. p. c o l o r ; x. p. c o l o r = f a l s e ; w. l e f t. c o l o r = f a l s e ; 10
11 r i g h t R o t a t e ( x. p ) ; x = r o o t ; x. c o l o r = f a l s e ; s t a t i c void d e l e t e ( Node z ) { Node y = z ; Node x = n i l ; boolean y O r i g i n a l C o l o r = y. c o l o r ; i f ( z. l e f t == n i l ) { x = z. r i g h t ; t r a n s p l a n t ( z, z. r i g h t ) ; i f ( z. r i g h t == n i l ) { x = z. l e f t ; t r a n s p l a n t ( z, z. l e f t ) ; { y = minimum( z. r i g h t ) ; y O r i g i n a l C o l o r = y. c o l o r ; x = y. r i g h t ; i f ( y. p == z ) x. p = y ; { t r a n s p l a n t ( y, y. r i g h t ) ; y. r i g h t = z. r i g h t ; y. r i g h t. p = y ; t r a n s p l a n t ( z, y ) ; y. l e f t = z. l e f t ; y. l e f t. p = y ; y. c o l o r = z. c o l o r ; i f ( y O r i g i n a l C o l o r == f a l s e ) d e l e t e F i x u p ( x ) ; 11
12 C - Sammenligning I denne oppgaven skal implementasjonene testes opp i mot hverandre. Den faktiske kjøretiden for de ulike operasjonene skal måles for ulike input og inputstørrr. Resultatene skal presenteres i en tabell og/eller en graf, og de skal diskuteres opp i mot kjøretidsanalysen gitt i forelesningene. Lykke til! 12
Løsningsforslag for Obligatorisk Oppgave 2. Algoritmer og Datastrukturer ITF20006
Løsningsforslag for Obligatorisk Oppgave 2 Algoritmer og Datastrukturer ITF20006 Lars Vidar Magnusson Frist 28.02.14 Den andre obligatoriske oppgaven tar for seg forelesning 5, 6, og 7 som dreier seg om
DetaljerLars Vidar Magnusson
Binære Søketrær Lars Vidar Magnusson 14.2.2014 Kapittel 12 Binære Søketrær Søking Insetting Sletting Søketrær Søketrær er datastrukturer som støtter mange dynamiske sett operasjoner. Kan bli brukt både
DetaljerEKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00
EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 9. mai 2016 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet består
DetaljerGrunnleggende Datastrukturer
Grunnleggende Datastrukturer Lars Vidar Magnusson 7.2.2014 Kapittel 10 Stakker og køer Lenkede lister Pekere og objekter Trerepresentasjoner Datastrukturer Vi er i gang med tredje del av kurset hvor vi
DetaljerLars Vidar Magnusson
B-Trær Lars Vidar Magnusson 5.3.2014 Kapittel 18 B-trær Standard operasjoner Sletting B-Trær B-trær er balanserte trær som er designet for å fungere bra på sekundære lagringsmedium e.g. harddisk. Ligner
DetaljerEKSAMEN Løsningsforslag. med forbehold om bugs :-)
1 EKSAMEN Løsningsforslag med forbehold om bugs :-) Emnekode: ITF20006 000 Dato: 20. mai 2011 Emne: Algoritmer og datastrukturer Eksamenstid: 09:00 til 13:00 Hjelpemidler: 8 A4-sider (4 ark) med egne notater
DetaljerAlgoritmer og Datastrukturer
Eksamen i Algoritmer og Datastrukturer IAI 21899 Høgskolen i Østfold Avdeling for informatikk og automatisering Lørdag 15. desember 2001, kl. 09.00-14.00 Hjelpemidler: Alle trykte og skrevne hjelpemidler.
DetaljerRepetisjon: Binære. Dagens plan: Rød-svarte trær. Oppgave (N + 1)!
Repetisjon: Binære søketrær Dagens plan: Rød-svarte trær (kap. 12.2) B-trær (kap. 4.7) bstrakte datatyper (kap. 3.1) takker (kap. 3.3) For enhver node i et binært søketre gjelder: lle verdiene i venstre
DetaljerEKSAMEN. Dato: 28. mai 2018 Eksamenstid: 09:00 13:00
EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 28. mai 2018 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet
Detaljer... Når internminnet blir for lite. Dagens plan: Løsning: Utvidbar hashing. hash(x) katalog. O modellen er ikke lenger gyldig ved
Dagens plan: Utvidbar hashing (kapittel 5.6) B-trær (kap. 4.7) Abstrakte datatyper (kap. 3.1) Stakker (kap. 3.3) Når internminnet blir for lite En lese-/skriveoperasjon på en harddisk (aksesstid 7-12 millisekunder)
DetaljerINF Algoritmer og datastrukturer
INF2220 - Algoritmer og datastrukturer HØSTEN 2009 Institutt for informatikk, Universitetet i Oslo INF2220, forelesning 5: Prioritetskø og Heap Bjarne Holen (Ifi, UiO) INF2220 H2009, forelesning 5 1 /
DetaljerNy/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00
Ny/utsatt EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 6. januar 2017 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet
DetaljerLenkelister, iteratorer, indre klasser. Repetisjonskurs våren 2018 kristijb
Lenkelister, iteratorer, indre klasser Repetisjonskurs våren 2018 kristijb Lenket liste av objekter Vi lager en lenke ved at objekter refererer til hverandre. Vanlige er ofte å ha Node-objekter som har
DetaljerINF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak
LISTER Vanligste datastruktur Mange implementasjonsmåter (objektkjeder, array...) Operasjoner på listen definerer forskjellige typer lister (LIFO, FIFO,...) På norsk bruker vi vanligvis ordet «liste» for
DetaljerLars Vidar Magnusson Kapittel 13 Rød-Svarte (Red-Black) trær Rotasjoner Insetting Sletting
Rød-Svarte Trær Lars Vidar Magnusson 21.2.2014 Kapittel 13 Rød-Svarte (Red-Black) trær Rotasjoner Insetting Sletting Rød-Svarte Trær Rød-Svarte trær (red-black trees) er en variasjon binære søketrær som
DetaljerEKSAMENSOPPGAVE. INF-1101 Datastrukturer og algoritmer. Adm.bygget, rom K1.04 og B154 Ingen
Fakultet for naturvitenskap og teknologi EKSAMENSOPPGAVE Eksamen i: Dato: 15.mai 2018 Klokkeslett: 09:00 13:00 Sted: Tillatte hjelpemidler: Adm.bygget, rom K1.04 og B154 Ingen Type innføringsark (rute/linje):
DetaljerHashtabeller. Lars Vidar Magnusson Kapittel 11 Direkte adressering Hashtabeller Chaining Åpen-adressering
Hashtabeller Lars Vidar Magnusson 12.2.2014 Kapittel 11 Direkte adressering Hashtabeller Chaining Åpen-adressering Dictionaries Mange applikasjoner trenger dynamiske sett som bare har dictionary oparsjonene
DetaljerUNIVERSITETET I OSLO
Eksamen i UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamensdag: 15. desember 2010 Tid for eksamen: 14.30 18.30 Oppgavesettet er på 8 sider. Vedlegg: Tillatte hjelpemidler: INF2220
DetaljerINF2220: Forelesning 2
INF2220: Forelesning 2 Mer om analyse av algoritmer Analyse av binære søketrær Balanserte søketrær Rød-svarte trær (kapittel12.2) B-trær (kapittel 4.7) ANALYSE AV ALGORITMER 2 Analyse av tidsforbruk Hvor
DetaljerOppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.
Høgskoleni Østfold EKSAMEN Emnekode: Emnenavn: ITF20006 Algoritmer og datastrukturer Dato: Eksamenstid: 9. mai 2016 9.00 13.00 Hjelpemidler: Faglærer: Alle trykte og skrevne Jan Høiberg Om eksamensoppgaven
DetaljerDatastrukturer. Stakker (Stacks) Hva er en datastruktur? Fordeler / Ulemper. Generelt om Datastrukturer. Stakker (Stacks) Elementære Datastrukturer
Hva er en datastruktur? Datastrukturer Elementære Datastrukturer En datastruktur er en systematisk måte å lagre og organisere data på, slik at det er lett å aksessere og modifisere dataene Eksempler på
DetaljerOppgave 1. Sekvenser (20%)
Det matematisk-naturvitenskapelige fakultet UNIVERSITETET I BERGEN Eksamen i emnet I 20 - Algoritmer, datastrukturer og programmering Mandag 2.Mai 200, kl. 09-5. Ingen hjelpemidler tillatt. Oppgavesettet
DetaljerINF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )
INF2220: Forelesning 1 Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel 4.1-4.3 + 4.6) PRAKTISK INFORMASJON 2 Praktisk informasjon Kursansvarlige Ragnhild Kobro Runde (ragnhilk@ifi.uio.no)
DetaljerEKSAMEN. Dato: 18. mai 2017 Eksamenstid: 09:00 13:00
EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 18. mai 2017 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Kalkulator Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet
DetaljerINF2220: Forelesning 2
INF2220: Forelesning 2 Balanserte søketrær Rød-svarte trær (kapittel12.2) B-trær (kapittel 4.7) REPETISJON: BINÆRE SØKETRÆR 2 Binære søketrær 8 4 12 2 7 9 15 6 11 13 16 For enhver node i et binært søketre
DetaljerINF2220: Forelesning 2. Balanserte søketrær Rød-svarte trær (kapittel12.2) B-trær (kapittel 4.7)
INF2220: Forelesning 2 Balanserte søketrær Rød-svarte trær (kapittel12.2) B-trær (kapittel 4.7) REPETISJON: BINÆRE SØKETRÆR 2 Binære søketrær 8 4 12 2 7 9 15 6 11 13 16 For enhver node i et binært søketre
DetaljerLøsningsforslag til eksamen i PG4200 Algoritmer og datastrukturer 10. desember 2014
Løsningsforslag Dette er et utbygd løsningsforslag. D.v.s at det kan forekomme feil og at løsningene er mer omfattende enn det som kreves av studentene på eksamen. Oppgavesettet består av 5 (fem) sider.
DetaljerHeap og prioritetskø. Marjory the Trash Heap fra Fraggle Rock
Heap og prioritetskø Marjory the Trash Heap fra Fraggle Rock Binær heap En heap er et komplett binært tre: Alle nivåene i treet, unntatt (muligens) det nederste, er alltid helt fylt opp med noder Alle
DetaljerINF Algoritmer og datastrukturer
INF2220 - Algoritmer og datastrukturer HØSTEN 2015 Ingrid Chieh Yu Institutt for informatikk, Universitetet i Oslo Forelesning 4: Prioritetskø og Heap Ingrid Chieh Yu (Ifi, UiO) INF2220 H2015, forelesning
DetaljerINF Algoritmer og datastrukturer
INF2220 - Algoritmer og datastrukturer HØSTEN 2015 Ingrid Chieh Yu Institutt for informatikk, Universitetet i Oslo Forelesning 4: Prioritetskø og Heap Ingrid Chieh Yu (Ifi, UiO) INF2220 H2015, forelesning
DetaljerHva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først
Køer Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Et nytt element legges alltid til sist i køen Skal vi ta ut et element, tar vi alltid
DetaljerNy/utsatt EKSAMEN. Dato: 5. januar 2018 Eksamenstid: 09:00 13:00
Ny/utsatt EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 5. januar 2018 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet
DetaljerLøsningsforslag. Oppgave 1.1. Oppgave 1.2
Løsningsforslag Oppgave 1.1 7 4 10 2 5 9 12 1 3 6 8 11 14 13 Oppgave 1.2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 Oppgave 1.3 Rekursiv løsning: public Node settinn(person ny, Node rot) if (rot == null) return
DetaljerINF Algoritmer og datastrukturer
INF2220 - Algoritmer og datastrukturer HØSTEN 2016 Ingrid Chieh Yu Institutt for informatikk, Universitetet i Oslo Forelesning 4: Prioritetskø og Heap Ingrid Chieh Yu (Ifi, UiO) INF2220 H2016, forelesning
DetaljerInf 1020 Algoritmer og datastrukturer
Inf 1020 Algoritmer og datastrukturer Et av de mest sentrale grunnkursene i informatikkutdanningen... og et av de vanskeligste! De fleste 3000-kursene i informatikk bygger på Inf1020 Kurset hever programmering
DetaljerIN Algoritmer og datastrukturer
IN2010 - Algoritmer og datastrukturer HØSTEN 2018 Ingrid Chieh Yu Institutt for informatikk, Universitetet i Oslo Forelesning 3: Prioritetskø og Heap Ingrid Chieh Yu (Ifi, UiO) INF2010 H2018, forelesning
DetaljerPG4200 Algoritmer og datastrukturer Forelesning 7
PG4200 Algoritmer og datastrukturer Forelesning 7 Lars Sydnes, NITH 19. mars 2014 I. TERMINOLOGI FOR TRÆR TRÆR Lister: Lineære Trær: Hierarkiske Modell / Språk: Bestanddeler: Noder, forbindelser. Forbindelse
DetaljerStack. En enkel, lineær datastruktur
Stack En enkel, lineær datastruktur Hva er en stack? En datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist Et nytt element legges alltid på toppen av stakken Skal vi
DetaljerAlgoritmer og Datastrukturer
Eksamen i Algoritmer og Datastrukturer IAI 20102 Høgskolen i Østfold Avdeling for informatikk og automatisering Tirsdag 3. desember 2002, kl. 09.00-14.00 Hjelpemidler: Alle trykte og skrevne hjelpemidler.
DetaljerOppgave 1. Oppgave 2. Høgskolen i Østfold Avdeling for informasjonsteknologi
Høgskolen i Østfold Avdeling for informasjonsteknologi Løsningsforslag til ny/utsatt eksamen i ITF20006 Algoritmer og datastrukturer 05.01.2018 Oppgave 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
DetaljerEnkle datastrukturer. Lars Greger Nordland Hagen. Introduksjon til øvingsopplegget og gjennomgang av python
1 Enkle datastrukturer Lars Greger Nordland Hagen algdat@idi.ntnu.no Introduksjon til øvingsopplegget og gjennomgang av python 2 I dag Stack Kø (queue) Lenkede lister (linked list) Trær Binære søketrær
DetaljerHva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først
Køer Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Et nytt element legges alltid til sist i køen Skal vi ta ut et element, tar vi alltid
DetaljerLøsningsforslag for Obligatorisk Oppgave 1. Algoritmer og Datastrukturer ITF20006
Løsningsforslag for Obligatorisk Oppgave 1 Algoritmer og Datastrukturer ITF20006 Lars Vidar Magnusson Frist 310114 Den første obligatoriske oppgaven tar for seg de fem første forelesningene, som i hovedsak
DetaljerDatastrukturer. Algoritmer og datastrukturer. Øvingsforelesning 2
Datastrukturer Algoritmer og datastrukturer Øvingsforelesning 2 Datastrukturer Algoritmer og datastrukturer Øvingsforelesning 2 av Henrik Grønbech Datastrukturer Algoritmer og datastrukturer Øvingsforelesning
DetaljerEKSAMEN. Emne: Algoritmer og datastrukturer
1 EKSAMEN Emnekode: ITF20006 000 Dato: 18. mai 2012 Emne: Algoritmer og datastrukturer Eksamenstid: 09:00 til 13:00 Hjelpemidler: 8 A4-sider (4 ark) med egne notater Faglærer: Gunnar Misund Oppgavesettet
DetaljerDagens plan: INF2220 - Algoritmer og datastrukturer. Repetisjon: Binære søketrær. Repetisjon: Binære søketrær
Dagens plan: INF2220 - lgoritmer og datastrukturer HØTEN 2007 Institutt for informatikk, Universitetet i Oslo (kap. 4.7) (kap. 12.2) Interface ollection og Iterator (kap. 3.3) et og maps (kap. 4.8) INF2220,
DetaljerINF Algoritmer og datastrukturer
INF2220 - Algoritmer og datastrukturer HØSTEN 2017 Ingrid Chieh Yu Institutt for informatikk, Universitetet i Oslo Forelesning 4: Prioritetskø og Heap Ingrid Chieh Yu (Ifi, UiO) INF2220 H2017, forelesning
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1020 Algoritmer og datastrukturer Eksamensdag: 15. desember 2004 Tid for eksamen: 14.30 17.30 Oppgavesettet er på 6 sider.
DetaljerGrunnleggende Grafalgoritmer II
Grunnleggende Grafalgoritmer II Lars Vidar Magnusson March 17, 2015 Kapittel 22 Dybde-først søk Topologisk sortering Relasjonen til backtracking Dybde-Først Søk Dybde-først søk i motsetning til et bredde-først
DetaljerINF januar 2015 Stein Michael Storleer (michael) Lenkelister
INF1010 29. januar 2015 Stein Michael Storleer (michael) Lenkelister Lenke + lister = lenkelister Vi starter med lenkeobjektene Lager en kjede av objekter ved hjelp av pekere class { ; Legger Jl data innholdet
DetaljerHeap* En heap er et komplett binært tre: En heap er også et monotont binært tre:
Heap Heap* En heap er et komplett binært tre: Alle nivåene i treet, unntatt (muligens) det nederste, er alltid helt fylt opp med noder Alle noder på nederste nivå ligger til venstre En heap er også et
DetaljerBinære trær: Noen algoritmer og anvendelser
Binære trær: Noen algoritmer og anvendelser Algoritmer / anvendelser: Søking i usortert binært tre Telling av antall noder og nivåer i treet Traversering av binære trær Binære uttrykkstrær Kunstig intelligens(?):
DetaljerUNIVERSITETET I OSLO
Eksamen i UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamensdag: 14. desember 2015 Tid for eksamen: 14.30 18.30 Oppgavesettet er på 6 sider. Vedlegg: Tillatte hjelpemidler: INF2220
DetaljerUNIVERSITETET I OSLO
Eksamen i UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamensdag: 13. desember 2011 Tid for eksamen: 14.30 18.30 Oppgavesettet er på 7 sider. Vedlegg: INF2220 lgoritmer og datastrukturer
DetaljerNITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 2013
NITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 20 ette løsningsforslaget er til tider mer detaljert enn det man vil forvente av en eksamensbesvarelse. et er altså ikke et eksempel
DetaljerPrioritetskøer. Prioritetskøer. Binære heaper (vanligst) Prioritetskøer
Binære heaper (Leftist) Prioritetskøer Prioritetskøer er viktige i bla. operativsystemer (prosesstyring i multitaskingssystemer), og søkealgoritmer (A, A*, D*, etc.), og i simulering. Prioritetskøer Prioritetskøer
DetaljerDagens tema. INF Algoritmer og datastrukturer. Binærtrær. Generelle trær
Dagens tema INF2220 - Algoritmer og datastrukturer HØSTEN 2007 Institutt for informatikk, Universitetet i Oslo INF2220, forelesning 2: Binærtrær og abstrakte datatyper (ADT) Kort repetisjon Generelle trær
DetaljerPG4200 Algoritmer og datastrukturer Forelesning 5 Implementasjon av lister
PG4200 Algoritmer og datastrukturer Forelesning 5 Implementasjon av lister Lars Sydnes, NITH 5. februar 2014 I. Implementasjoner Tabell-implementasjon av Stakk Tabellen er den lettest tilgjengelige datastrukturen
DetaljerEks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk
Godkjent oblig 1? Les e-post til din UiO-adresse Svar på e-post fra lablærer Ingen godkjenning før avholdt møte med lablærer Godkjentlistene brukes ikke til å informere om status for obligene Ta vare på
DetaljerDefinisjon: Et sortert tre
Binære søketrær Definisjon: Et sortert tre For alle nodene i et binært søketre gjelder: Alle verdiene i nodens venstre subtre er mindre enn verdien i noden Alle verdiene i nodens høyre subtre er større
DetaljerINF1010 Binære søketrær ++
INF1010 Binære søketrær ++ Programeksempler med insetting, gjenfinning av noder i et binært søketre samt eksempler på hvordan lage en liste av et binærtre. Hva må du kunne om binære søketrær i INF1010
DetaljerHva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først
Køer Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Et nytt element legges alltid til sist i køen Skal vi ta ut et element, tar vi alltid
DetaljerBinær heap. En heap er et komplett binært tre:
Heap Binær heap En heap er et komplett binært tre: Alle nivåene i treet, unntatt (muligens) det nederste, er alltid helt fylt opp med noder Alle noder på nederste nivå ligger så langt til venstre som mulig
DetaljerUNIVERSITETET I OSLO
Eksamen i UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamensdag: 14. desember 2012 Tid for eksamen: 14:30 18:30 Oppgavesettet er på 7 sider. Vedlegg: Tillatte hjelpemidler: INF2220
DetaljerAlgoritmer og Datastrukturer
Eksamen i Algoritmer og Datastrukturer IAI 20102 Høgskolen i Østfold Avdeling for informatikk og automatisering Lødag 5. juni 2004, kl. 09.00-13.00 Hjelpemidler: Alle trykte og skrevne hjelpemidler. Kalkulator.
DetaljerEKSAMEN. Algoritmer og datastrukturer. Eksamensoppgaven: Oppgavesettet består av 11 sider inklusiv vedlegg og denne forsiden.
EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: Eksamenstid: 20. mai 2008 kl 09.00 til kl 13.00 Hjelpemidler: 4 A4-sider (2 ark) med valgfritt innhold Kalkulator Faglærer: Mari-Ann
DetaljerBalanserte binære søketrær
Balanserte trær Balanserte binære søketrær Balanserte binære søketrær høyden (l treet er O(log 2 n) AVL trær rød-svarte trær svake AVL trær splaytrær heaps AVL trær rød-svarte trær svake AVL trær splaytrær
DetaljerINF2220: Gruppe me 2. Mathias Lohne Høsten 2017
INF0: Gruppe me Mathias Lohne Høsten 0 1 Rød-svarte trær Vanlige binære søketrær blir fort veldig ubalanserte. røv å sett inn 1,,, 4, 5,, 7,... (i den rekkefølgen) i et binært søketre. Da vil vi i praksis
DetaljerINF1010 Rekursive metoder, binære søketrær. Algoritmer: Mer om rekursive kall mellom objekter Ny datastruktur: binært tre
INF1010 Rekursive metoder, binære søketrær Algoritmer: Mer om rekursive kall mellom objekter Ny datastruktur: binært tre public void skrivutmeg ( ) { System. out. println (navn + " er venn med " + minbestevennheter
DetaljerINF1020 Algoritmer og datastrukturer. Dagens plan
Dagens plan Prioritetskø ADT Motivasjon Operasjoner Implementasjoner og tidsforbruk Heap-implementasjonen Strukturkravet Heap-ordningskravet Insert DeleteMin Tilleggsoperasjoner Build Heap Anvendelser
DetaljerGjøre noe i hele treet = kalle på samme metode i alle objekten. Java datastruktur Klassestruktur
Godkjent oblig 1? Les e-post til din UiO-adresse Svar på e-post fra lablærer Ingen godkjenning før avholdt møte med lablærer Godkjentlistene brukes ikke til å informere om status for obligene Ta vare på
DetaljerAlgoritmer og Datastrukturer IAI 21899
Eksamen i Algoritmer og Datastrukturer IAI 21899 Høgskolen i Østfold Avdeling for informatikk og automatisering Torsdag 30. november 2000, kl. 09.00-14.00 LØSNINGSFORSLAG 1 Del 1, Binære søketrær Totalt
DetaljerFra Kap.10 Binære søketre (BS-tre) Sist oppdatert 20.03.10 Definere en abstrakt datastruktur binært søketre. Vise hvordan binær søketre kan brukes
Fra Kap.10 Binære søketre (BS-tre) Sist oppdatert 20.03.10 Definere en abstrakt datastruktur binært søketre. Vise hvordan binær søketre kan brukes til å løse problemer. Undersøke ulike implementasjoner
DetaljerPrioritetskøer. Binære heaper Venstrevridde heaper (Leftist) Binomialheaper Fibonacciheaper
Prioritetskøer Binære heaper Venstrevridde heaper (Leftist) Binomialheaper Fibonacciheaper Prioritetskøer er viktige i bla. operativsystemer (prosesstyring i multitaskingssystemer), og søkealgoritmer (A,
DetaljerEKSAMEN med løsningsforslag
EKSAMEN med løsningsforslag Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: Eksamenstid: 20. mai 2009 kl 09.00 til kl 13.00 Hjelpemidler: 8 A4-sider (4 ark) med egne notater Kalkulator Faglærer:
DetaljerPG 4200 Algoritmer og datastrukturer Innlevering 2
PG 4200 Algoritmer og datastrukturer Innlevering 2 Frist: Mandag 21.april 2014 kl 23.55 Utdelt materiale: Se zip-filen innlevering2.zip. Innlevering: Lever en zip-fil som inneholder følgende: PG4200_innlevering_2.pdf:
DetaljerHeapsort. Lars Vidar Magnusson Kapittel 6 Heaps Heapsort Prioritetskøer
Heapsort Lars Vidar Magnusson 24.1.2014 Kapittel 6 Heaps Heapsort Prioritetskøer Sorterings Problemet Sorterings problemet er et av de mest fundementalske problemene innen informatikken. Vi sorterer typisk
DetaljerMagnus Moan (Undertegnede) Enkle datastrukturer, trær, traversering og rekursjon
1 Enkle datastrukturer, trær, traversering og rekursjon Magnus Moan (Undertegnede) algdat@idi.ntnu.no Enkle datastrukturer, trær, traversering og rekursjon 2 Dagens plan Praktisk Enkle datastrukturer Stack
DetaljerDefinisjon av binært søketre
Binære søketrær Definisjon av binært søketre For alle nodene i et binært søketre gjelder: Alle verdiene i nodens venstre subtre er mindre enn verdien i noden Alle verdiene i nodens høyre subtre er større
DetaljerHøgskoleni østfold EKSAMEN. 4 dobbeltsidige ark med notater Lars Magnusson
Høgskoleni østfold EKSAMEN Emnekode: ITF 20006 Emne: Algoritmer og Datastrukturer Dato: 22.05.2015 Eksamenstid: kl 09.00 til kl 13.00 Hjelpemidler: Faglærer: 4 dobbeltsidige ark med notater Lars Magnusson
DetaljerObligatorisk oppgave 1 INF1020 h2005
Obligatorisk oppgave 1 INF1020 h2005 Frist: fredag 7. oktober Oppgaven skal løses individuelt, og må være godkjent for å kunne gå opp til eksamen. Før innlevering må retningslinjene Krav til innleverte
DetaljerBinære søketrær. En ordnet datastruktur med raske oppslag. Sigmund Hansen
Binære søketrær En ordnet datastruktur med raske oppslag Sigmund Hansen Lister og trær Rekke (array): 1 2 3 4 Lenket liste (dobbelt-lenket): 1 2 3 4 Binært søketre: 3 1 4 2 Binære
DetaljerKap 9 Tre Sist oppdatert 15.03
Kap 9 Tre Sist oppdatert 15.03 Definere et tre som en datastruktur. Definere begreper knyttet til tre. Diskutere mulige implementasjoner av tre Analysere implementasjoner av tre som samlinger. Diskutere
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 12. desember 2008 Tid for eksamen: 9.00 12.00 Oppgavesettet er på 7 sider. Vedlegg: Tillatte hjelpemidler: INF2220
DetaljerINF2220: Forelesning 1
INF2220: Forelesning 1 Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel 4.1-4.3 + 4.6) Praktisk informasjon 2 Praktisk informasjon Kursansvarlige Ingrid Chieh Yu de Vibe (ingridcy@ifi.uio.no)
DetaljerØvingsforelesning 2 - TDT4120. Grafer og hashing. Benjamin Bjørnseth
Øvingsforelesning 2 - TDT4120 Grafer og hashing Benjamin Bjørnseth Informasjon Studasser algdat@idi.ntnu.no Program Presentasjon av øving 2 Grafer og traverseringsalgoritmer BFS, DFS Hashing Gjennomgang
DetaljerMinimum Spenntrær - Kruskal & Prim
Minimum Spenntrær - Kruskal & Prim Lars Vidar Magnusson 4.4.2014 Kapittel 23 Kruskal algoritmen Prim algoritmen Kruskal Algoritmen Kruskal algoritmen kan beskrives med følgende punkter. Vi har en en sammenkoblet
DetaljerNITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 2013
NITH PG00 Algoritmer og datastrukturer Løsningsforslag Eksamen.juni 0 Dette løsningsforslaget er til tider mer detaljert enn det man vil forvente av en eksamensbesvarelse. Det er altså ikke et eksempel
DetaljerNorges Informasjonsteknologiske Høgskole
Oppgavesettet består av 6 (seks) sider. Norges Informasjonsteknologiske Høgskole PG4200 Algoritmer og datastrukturer Side 1 av 6 Tillatte hjelpemidler: Ingen Varighet: 3 timer Dato: 4. juni 2014 Fagansvarlig:
DetaljerINF2220: Forelesning 3
INF2220: Forelesning 3 Map og hashing Abstrakte datatyper (kapittel 3.1) Map (kapittel 4.8) Hashing (kapittel 5) REPETISJON: ALGORITMER OG STOR O 2 REPETISJON RØD-SVARTE TRÆR 7 Rød-svarte trær Et rød-svart
Detaljer... Dagens plan. Prioritetskø ADT
Dagens plan Prioritetskø ADT Motivasjon Operasjoner Implementasjoner og tidsforbruk Heap-implementasjonen Strukturkravet Heap-ordningskravet Insert DeleteMin Tilleggsoperasjoner Build Heap Anvendelser
DetaljerINF2220: Forelesning 1
INF2220: Forelesning 1 Praktisk informasjon Analyse av algoritmer (kapittel 2) Rekursjon (kapittel 1.3) (Binær)trær (kapittel 4.1-4.3 + 4.6) Praktisk informasjon 2 Praktisk informasjon Kursansvarlige Ingrid
DetaljerListe som abstrakt konsept/datatype
Lister Liste som abstrakt konsept/datatype Listen er en lineær struktur (men kan allikevel implementeres ikke-lineært bak kulissene ) Hvert element har en forgjenger, unntatt første element i listen Hvert
DetaljerHva 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
Lister Hva er en liste? Listen er en lineær datastruktur Hvert element har en forgjenger, unntatt første element i listen Hvert element har en etterfølger, unntatt siste element i listen I motsetning til
DetaljerINF110 Algoritmer og datastrukturer TRÆR. Vi skal i denne forelesningen se litt på ulike typer trær:
TRÆR Vi skal i denne forelesningen se litt på ulike typer trær: Generelle trær (kap. 4.1) Binærtrær (kap. 4.2) Binære søketrær (kap. 4.3) Den siste typen trær vi skal behandle, B-trær (kap. 4.7) kommer
DetaljerINF Algoritmer og datastrukturer
INF2220 - Algoritmer og datastrukturer HØSTEN 2009 Institutt for informatikk, Universitetet i Oslo INF2220, forelesning 13: Eksamensgjennomgang Bjarne Holen (Ifi, UiO) INF2220 H2009, forelesning 13 1 /
DetaljerKøbenhavn 20 Stockholm
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i IN 115 Algoritmer og datastrukturer Eksamensdag: 26. mai 2001 Tid for eksamen: 9.00 15.00 Oppgavesettet er på 7 sider. Vedlegg:
DetaljerDagens tema INF1010 INF1010 INF1010 INF1010
I eksemplene om lister og binære trær har vi hittil hatt pekerne inne i objektene i strukturen. ( Innbakt struktur ).Eksempel: Dagens tema Implementasjon av strukturer (lister, binære trær) class { ; ;
DetaljerNORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer
Oppgavesettet består av 7 (syv) sider. NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer Tillatte hjelpemidler: Ingen Side av 7 Varighet: 3 timer Dato:.august 203 Fagansvarlig:
DetaljerINF1010 siste begreper før oblig 2
INF1010 siste begreper før oblig 2 Sammenligning. Mer lenkede lister. Forskjellige listeimplementasjoner. Binære trær. Bittelitt om grensesnitt (interface). Dagens forelesning Flere temaer på grunn av
Detaljer