Elementære datastrukturer

Størrelse: px
Starte visningen fra side:

Download "Elementære datastrukturer"

Transkript

1 Elementære datastrukturer Stak ADT Stakke, køer og lister Træer Prioritetskøer Hashing Den abstrakte datatype (ADT) stak indeholder vilkårlige objekter. Indsættelse og fjernelse følger sidst-ind-først-ud princippet. Centrale operationer: push(object): indsætter et objekt object pop(): fjerner og returnerer det sidst indsatte objekt Hjælpeoperationer: object top(), integer size(), boolean isempty() Anvendelser af stakke Direkte anvendelser Besøgte sider i en Web-browser Fortryd-sekvens i et tekstredigeringsprogram Kæde af metodekald i et køretidssystem (f.eks. JVM) Indirekte anvendelser Hjælpedatastruktur i algoritmer Komponent i andre datastrukturer 3 Objekter tilføjes fra venstre mod højre. En variabel t holder rede på indekset af topelementet (størrelsen er t + ). S Array-baseret stak Algorithm push(o) if t = S.length " then throw FullStackException else t! t + S[t]! o Algorithm pop() if isempty() then throw EmptyStackException else t! t " return S[t + ] 0 t

2 Dynamisk array-baseret stak I push kan vi - i stedet for at kaste en undtagelse, hvis arrayet er fyldt op - erstatte arrayet med et større array Hvor stort skal det nye array være? Inkrementel strategi: øg størrelsen med en konstant, c Fordoblingsstrategi: fordobl størrelsen Algorithm push(o) if t = S.length " then A! new array of size for i! 0 to t do A[i]! S[i] S! A t! t + S[t]! o Sammenligning af strategier Vi sammenligner de to strategier ved at analysere den samlede køretid T(n), der skal benyttes for at udføre en serie af af n push-operationer Det antages, at stakken fra starten er tom, og at arrayet har størrelsen Ved den amortiserede tid for en push-operation vil vi forstå operationens gennemsnitlige tidsforbrug, d.v.s. T(n)/n Analyse af den inkrementelle strategi Vi erstatter arrayet k = n/c gange Det samlede tidsforbrug T(n) for en serie af n push-operationer er proportionalt med n + c + c + 3c + c + + kc = n + c( k) = n + ck(k + )/ Da c er en konstant, har vi, at T(n) er O(n + k ), og dermed O(n ) Den amortiserede tid for en push-operation er O(n) Direkte analyse af fordoblingsstrategien Vi erstatter arrayet k = log n gange Det samlede tidsforbrug T(n) for en serie af n pushoperationer proportional med n k = n + k + " = n + n " = 3n " T(n) er O(n) Den amortiserede tid for en push-operation er O() kvotientrække = =

3 Bogholdermetoden Bogholdermetoden (fortsat) Bogholdermetoden bestemmer amortiseret køretid ved brug af et system af indtægter og udgifter Computeren betragtes som en betalingsautomat, der kræver et fast beløb ( krone) for at udføre en konstant mængde af beregninger Der opstilles et skema for betalingen. Skemaet, der kaldes for amortiseringsskemaet, skal være konstrueret sådan, at der altid er penge nok til at betale for den aktuelle operation Amortisering: tilbagebetaling af lån Den enkelte operation må gerne prissættes højere end antallet af primitive operationer tilsiger De enkelte operationer kan således låne til/fra hinanden, dog ikke mere end der er likviditet til I praksis betyder det, at nogle operationer forudbetaler for andre (amortiseret tid) # (samlet betaling i kroner) / (# operationer) 0 Amortiseringsskema for fordoblingsstrategien Betragt igen de k faser, hvor hver fase indeholder dobbelt så mange pushoperationer som den forrige Ved afslutningen af hver fase skal vi sørge for at have sparet nok op til, at pushkaldene i næste fase kan betales. Når en fase afsluttes, bør vi have opsparet tilstrækkeligt til, at vi kan betale for array-kopieringen i starten af næste fase 0 3 push Vi tager 3 kroner for en push-operation. De overskydende kroner gemmes i sidste halvdel af arrayet. Ved afslutningen af en fase, hvor stakken indeholder i elementer, vil der være gemt (i/) = i kroner. Derfor udføres hver push-operation i O() amortiseret tid. Kø ADT En kø indeholder vilkårlige objekter. Indsættelse og fjernelse følger førstind-først-ud princippet. Centrale operationer: enqueue(object): indsætter et objekt bagest object dequeue(): fjerner og returnerer det forreste objekt Hjælpeoperationer: object front(), integer size(), boolean isempty() Undtagelser: Forsøg på at udføre dequeue eller front på en tom kø kaster en EmptyQueueException

4 Anvendelser af køer Enkelthægtet liste Direkte anvendelser Ventelister Tilgang til delte ressourcer (f.eks. en printer) Multiprogrammering En enkelthægtet liste er en konkret datastruktur, der indeholder en sekvens af knuder Hver knude lagrer et element en hægte til den næste knude elem next knude Indirekte anvendelser Hjælpe-datastruktur i algoritmer Komponent i andre datastrukturer A B C D 3 Kø implementeret med en enkelthægtet liste Det forreste element lagres i den første knude Det bageste element lagres i den sidste knude Liste ADT En liste modellerer en sekvens af positioner, der kan lagre vilkårlige objekter Den tillader indsættelse i og fjernelse fra midten f Pladsforbruget er O(n), og hver operation tager O() tid. r knuder elementer Forespørgelsesmetoder: isfirst(p), islast(p) Tilgangsmetoder: first(), last(), before(p), after(p) Opdateringsmetoder: replaceelement(p, o), swapelements(p, q) insertbefore(p, o), insertafter(p, o), insertfirst(o), insertlast(o), remove(p)

5 Dobbelthægtet liste Træer Knuder implementer positioner og lagrer: et element en hægte til den foregående knude en hægte til den efterfølgende knude Desuden kan der være specielle hoved- og haleknuder. hoved prev next elem knuder knuder/positioner hale I datalogi er et træ en abstrakt model af en hierarkisk struktur Et træ består af knuder med en forældre/barn-relation Anvendelser: Organisationsdiagrammer Filsystemer Indholdsfortegnelser Computers R Us Sales Manufacturing R&D US International Laptops Desktops Europe Asia Canada elementer Terminologi for træer Træ ADT Rod: knude uden forælder (A) Intern knude: knude med mindst et barn (A, B, C, F) Ekstern knude (også kaldet et blad): knude uden børn (E, I, J, K, G, H, D) Forfædre til en knude: forælder, bedsteforælder, oldeforælder o.s.v. Dybden af en knude: antallet af forfædre Højden af et træ: maksimale dybde for træets knuder (3) Efterkommere af en knude: børn, børnebørn o.s.v. Undertræ: et træ bestående af en knude og dennes efterkommere E B F I J K A G C H undertræ D Positioner benyttes til at abstrahere knuder Generiske metoder: integer size() boolean isempty() objectiterator elements() positioniterator positions() swapelements(p, q) object replaceelement(p, o) Tilgangsmetoder: position root() position parent(p) positioniterator children(p) Forespørgselsmetoder: boolean isinternal(p) boolean isexternal(p) boolean isroot(p) Opdateringsmetoder: defineres ikke her 0

6 Preorder-traversering En traversering besøger knuderne i et træ på en systematisk måde Ved preorder-traversering besøges en knude før sine efterkommere Anvendelse: udskriv et struktureret dokument Make Money Fast! 3 Algorithm preorder(v) visit(v) for each child w of v preorder(w). Motivations. Methods References. Greed. Avidity. Stock Fraud. Ponzi Scheme.3 Bank Robbery Postorder-traversering Ved en postorder-traversering besøges en knude efter sine efterkommere Anvendelse: beregn pladsforbruget for filer i et katalog og dettes underkataloger. hc.doc 3K 3 homeworks/ hnc.doc K DDR.java 0K cs/ Algorithm postorder(v) for each child w of v postorder(w) visit(v) programs/ Stocks.java K Robot.java 0K todo.txt K Amortiseret analyse af træ-traversering Den tid, der bruges til preorder- og postorder-traversering af et træ med n knuder, er proportional med summen - taget over enhver knude v i træet - af tiden, der anvendes til et rekursivt kald for v Kaldet for v koster (c v + ) kroner, hvor c v er antallet af børn for v Betal krone for v, og krone for hver af v s børn. Dermed betales der for enhver knude gange, en gang for dens eget kald, og en gang for dens fars kald Derfor er traverseringstiden O(n) Binære Træer Et binært træ er et træ med følgende egenskaber: Hver interne knude har to børn Børnene for en knude er et ordnet par De to børn kaldes for henholdsvis venstre og højre barn Alternativ rekursiv definition: Et binært træ er enten et træ bestående af en enkelt knude, eller et træ, hvis rod har et ordnet par af børn, som hver er et binært træ Anvendelser: Søgning Beslutningsprocesser Repræsentation af aritmetiske udtryk D B H E I A F C G 3

7 Beslutningstræ Interne knuder: spørgsmål med ja/nej-svar Eksterne knuder: beslutninger Eksempel: Valg af spisested Aritmetisk udtryktrykstræ Interne knuder: operatorer Eksterne knuder: operander Eksempel: Aritmetisk udtrykstræ for udtrykket ( % (a " ) + (3 % b)) Want a fast meal? + Yes No % % How about coffee? On expense account? - 3 b Yes No Yes No Starbucks In N Out Antoine's Denny s a Egenskaber ved binære træer Inorder-traversering Notation n antal knuder e antal eksterne knuder i antal interne knuder h højde Egenskaber: e = i + n = e " h # i h # (n " )/ e & h + e # h h & log e h & log (n + ) " Ved en inorder-traversering besøges en knude efter sit venstre undertræ, men før sit højre undertræ Anvendelse: Tegning af et binært træ x(v) = inorder-rangen af v y(v) = dybden af v Algorithm inorder(v) if isinternal(v) then inorder(leftchild(v)) visit(v) if isinternal(v) then inorder(rightchild(v)) 3

8 Euler-tur-traversering Udskrivning af aritmetiske udtryk Generisk traversering af et binært træ Indeholder preorder-, postorder- og inorder-traversering som specialtilfælde Gå rundt i træet og besøg hver knude 3 gange: første besøg, L (preorder) andet besøg, B (inorder) tredje besøg, R (postorder) + L % B R - % 3 Specialisering af inorder-traversering. Udskriv ( inden traversering af venstre undertræ Udskriv operand eller operator, når en knude besøges Udskriv ) efter traversering af højre undertræ % - a + % 3 b Algorithm printexpression(v) if isinternal(v) then print( ( ) printexpression(leftchild(v)) print(v.element ()) if isinternal(v) then printexpression(rightchild(v)) print( ) ) (( % (a - )) + (3 % b)) 30 Hægtet datastruktur til repræsentation af træer Hægtet datastruktur til repræsentation af binære træer En knude repræsenteres ved et objekt, der indeholder Element Hægte til forældreknude Sekvens af børneknuder B B A D F En knude repræsenteres ved et objekt, der indeholder Element Hægte til forældreknude Hægte til venstre barn Hægte til højre barn B A B D A D F A D C E C E 3 C E C E 3

9 Array-baseret repræsentation af binære træer Prioritetskø ADT Knuder lagres i et array Lad rank(node) være defineret således: rank(root) = hvis node er venstre barn af parent(node), rank(node) = *rank(parent(node)) hvis node er højre barn af parent(node), rank(node) = *rank(parent(node)) + A 3 B D E F C J 0 G H En prioritetskø lagrer en samling af emner Hvert emne er et par (nøgle, element) Centrale metoder: insertitem(k, o) indsætter et emne med nøglen k og elementet o removemin() fjerner det emne, der har den mindste nøgle og returnerer det tilhørende element Yderligere metoder: minkey() returnerer, men fjerner ikke, den mindste nøgle minelement() returnerer, men fjerner ikke, det element, der har mindst nøgle size(), isempty() Anvendelser: Opgaveplanlægning Grafalgoritmer 33 3 Total ordningsrelation Sortering med en prioritetskø Nøglerne i en prioritetskø kan være vilkårlige objekter, for hvilke der er defineret en total ordningsrelation To forskellige emner i en prioritetskø kan have samme nøgle Total ordningsrelation # Refleksivitet: x # x Antisymmetri: x # y ' y # x ( x = y Transitivitet: x # y ' y # z ( x # z Vi kan benytte en prioritetskø til at sortere en mængde af sammenlignelige objekter Indsæt elementerne et efter et med en serie af insertitem(e, e)-operationer Udtag elementerne i sorteret orden med en serie af removemin()- operationer Køretiden for denne sorteringsmetode afhænger af implementeringen af prioritetskøen Algorithm PQ-Sort(S, C) Input sequence S, comparator C for the elements of S Output sequence S sorted in increasing order according to C P! empty priority queue with comparator C while S.isEmpty() do e! S.remove(S. first()) P.insertItem(e, e) while P.isEmpty() do e! P.removeMin() S.insertLast(e) 3 3

10 Sekvens-baseret prioritetskø Sortering ved udvælgelse Implementering med en usorteret sekvens: Gem emnerne i en liste-baseret sekvens i vilkårlig rækkefølge 3 Effektivitet: insertitem tager O() tid, da vi kan indsætte emnet i starten eller slutningen af listen removemin, minkey og minelement tager O(n) tid, da vi skal gennemløbe hele sekvensen for at finde den mindste nøgle Implementering med en sorteret sekvens: Gem emnerne i en liste-baseret sekvens i sorteret rækkefølge 3 Effektivitet: insertitem tager O(n) tid, da vi skal finde den plads, hvor emnet skal indsættes removemin, minkey og minelement tager O() tid, da den mindste nøgle er forrest i listen Sortering ved udvælgelse er den udgave af PQ-sort, hvor prioritetskøen er implementeret ved brug af en usorteret sekvens. 3 Køretid: Indsættelse af elementerne i prioritetskøen med n insertitemoperationer tager O(n) tid Fjernelse af elementerne i sorteret rækkefølge fra prioritetskøen med n removemin-operationer tager tid proportional med n Metoden kører i O(n ) tid 3 3 Sortering ved indsættelse Sortering ved indsættelse på stedet (in-place) Sortering ved indsættelse er den udgave af PQ-sort, hvor prioritetskøen er implementeret ved brug af en sorteret sekvens 3 Køretid: Indsættelse af elementerne i prioritetskøen med n insertitemoperationer tager tid proportional med n Fjernelse af elementerne i sorteret rækkefølge fra prioritetskøen med n removemin-operationer tager O(n) tid Metoden kører i O(n ) tid I stedet for at bruge en ekstern datastruktur, kan vi implementere både sortering ved udvælgelse og sortering ved indsættelse på stedet En del af input-sekvensen tjener som prioritetskø For sortering ved indsættelse holdes den første del af sekvensen sorteret, og swapelementsoperationen benyttes til at udvide denne del af sekvensen

11 Hvad er en hob? Højden af en hob En hob er et binært træ, der lagrer nøglerne i de interne knuder, og som opfylder følgende betingelser: Hob-orden: For enhver intern knude, v, med undtagelse af roden, gælder key(v) & key(parent(v)) Komplet binært træ: Lad h være højden af hoben () for i = 0,, h " er der i knuder med dybde i () på dybden h " er de interne knuder til venstre for de eksterne knuder Sætning: En hob, der indeholder n nøgler har højden O(log n) Bevis: (vi anvender egenskaben for et komplet binært træ) Lad h være højden af en hob, der indeholder n nøgler Da der er i nøgler på dybden i = 0,, h ", og mindst en nøgle på dybden h ", har vi, at n & h" + Og dermed n & h", d.v.s. h # log n + dybde 0 h- h- nøgler h- Hobe og prioritetskøer Vi kan bruge en hob til at implementere en prioritetskø I hver intern knude gemmes et (nøgle, element)-par Der holdes rede på den sidste knude (, Per) (, Jens) (, Anna) (, Søs) (, Mads) Indsættelse i en hob Indsættelses-algoritmen består at af 3 trin: () Find indsættelsesknuden z (den nye sidste knude) () Gem k i z og omdan z til en intern knude (3) Genskab hob-ordens-egenskaben z Indsættelsesknude z sidste knude 3

12 upheap Fjernelse fra en hob Efter indsættelse af en nøgle k kan hob-ordens-egenskaben blive ødelagt Algoritmen upheap genskaber egenskaben ved at ombytte k på en opadgående vej fra indsættelsesknuden. Algoritmen terminerer, når k når op til roden eller til en knude, hvis forældre har en nøgle, der er mindre end eller lig med k Da en hob har højden O(log n), kører upheap i O(log n) tid z z Fjernelses-algoritmen består at af 3 trin: () Erstat roden med nøglen i den sidste knude, w () Omdan w og dens børn til en ekstern knude (3) Genskab hob-ordens-egenskaben w w Sidste knude downheap Efter erstatning af rodens nøgle med k for den sidste knude, kan hob-ordensegenskaben være ødelagt. Algoritmen downheap genskaber egenskaben ved at ombytte k på en neadadgående vej fra roden. Algoritmen terminerer, når k når ned til en ekstern knude eller til en knude, hvis børn har nøgler, der er større end eller lig med k. Da en hob har højden O(log n), kører downheap i O(log n) tid. w w Heap-Sort Betragt en prioritetskø med n emner, der er implementeret ved hælp af en hob Pladsforbruget er O(n) Metoderne insertitem og removemin tager O(log n) tid Metoderne size, isempty, minkey og minelement tager O() tid Ved at bruge en hob-baseret prioritetskø kan vi sortere en sekvens i O(n log n) tid Denne algoritme, der kaldes Heap-sort, er meget hurtigere end kvadratiske sorteringsalgoritmer, som f.eks. sortering ved udvælgelse og sortering ved indsættelse

13 Array-baseret hob Fletning af to hobe Vi kan repræsentere en hob med n nøgler ved hjælp af et array af længden n + For knuden på indeks i er det venstre barn på indeks i det højre barn på indeks i + Hægterne imellem knuderne lagres ikke De eksterne knuder er ikke repræsenteret Cellen på indeks 0 bruges ikke Operationen insertitem svarer til indsættelse på indeks n Lad der være givet to hobe og en nøgle k Vi kan skabe et nyt træ, hvor roden indeholder k og har de to hobe som undertræer Hob-ordenen retableres ved at udføre downheap Operationen removemin svarer til fjernelse på indeks 0 Bund-til-top hob-konstruktion Eksempel Vi kan konstruere en hob med n givne nøgler i log n faser ved at benytte bund-til-top hobkonstruktion i " i " 3 0 I fase i flettes hobe med i " nøgler til hobe med i+ " nøgler i+ " 3 0

14 Eksempel (fortsat) Eksempel (fortsat) Eksempel (slut) Analyse Vi visualiserer det værste tilfælde for en downheap-operation med veje, der først går til højre og derefter gentagne gange til venstre, indtil bunden af hoben nås Da en knude højst gennemløbes af sådanne veje, er antallet af knuder på disse veje O(n) Derfor udføres bund-til-top hob-konstruktion i O(n) tid 0 0 3

15 Ordbog ADT (Dictionary) Logfil En ordbog lagrer en samling af emner, der kan søges i Hvert emne er et par (nøgle, element) De centrale operationer for en ordbog er søgning, indsættelse og fjernelse af emner Anvendelser: Adressebog Kontokort-autorisering Afbildning fra værtsnavne (f.eks. akira.ruc.dk) til internetadresser (f.eks ) Metoder: findelement(k): Hvis ordbogen indeholder et emne med nøgle k, så returneres dets element. Ellers returneres det specielle element NO_SUCH_KEY insertitem(k, o): Indsætter emnet (k, o) i ordbogen removeelement(k): Hvis ordbogen har et emne med nøglen k, så fjernes det, og dets element returneres. Ellers returneres det specielle element NO_SUCH_KEY size(), isempty() keys(), elements() En logfil er en ordbog, der er implementeret ved hjælp af en usorteret sekvens Emnerne lagres i vilkårlig orden i en sekvens (baseret på en dobbelt-hægtet liste eller et cirkulært array) Effektivitet: insertitem tager O() tid, da vi kan indsætte det nye emne forrest eller bagest i sekvensen findelement og removeelement tager O(n) tid, da vi i værste tilfælde skal gennemløbe hele sekvensen for at lede efter et emne med den givne nøgle En logfil er kun effektiv for små ordbøger, eller for hvilke indsættelse er den mest almindelige operation, mens søgning og sletning er sjældne operationer (f.eks. registrering af login) Hashfunktioner og hashtabeller Eksempel En hashfunktion afbilder nøgler af en given type til heltal i et fast interval [0, N - ] Eksempel: h(x) = x mod N er en hashfunktion for heltalsnøgler Heltallet h(x) kaldes for hashværdien for nøglen x En hashtabel for en given nøgletype består af En hashfunktion h Et array (kaldet tabellen) af størrelse N En hashtabel for en ordbog, der indeholder emner (cpr, navn), hvor cpr er et 0-cifret positivt heltal. Hashtabellen benytter et array af størrelse N = 0000 og hashfunktionen h(x) = de sidste cifre i x 0 3 Jørgen Clevin Lotte Heise Tove Fergo Pia Kjærsgaard Når en ordbog implementeres ved hjælp af en hashtabel, er målet at lagre emnet (k, o) på indeks i = h(k) 0

16 Hashfunktioner Hashkode-afbildninger En hashfunktion specificeres sædvanligvis som sammensætningen af to funktioner: Hashkode-afbildningen: h : nøgler) heltal Komprimerings-afbildningen: h : heltal ) [0, N " ] Hashkode-afbildningen anvendes først. Derefter anvendes komprimeringsafbildningen på resultatet h(x) = h (h (x)) Målet for hashfunktionen er at sprede nøglerne på en tilsyneladende tilfældig måde Lageradresse: Vi fortolker lageradressen for nøgleobjektet som et heltal (standard hashkode for alle Java-objekter) Heltalskonvertering: Vi fortolker bittene i nøglen som et heltal Hensigtsmæssig for nøgler med en længde der er mindre end eller lig med antallet af bit i en heltalstype Komponentsum: Vi opdeler bittene i nøglen i komponenter af fast længde (f.eks., eller 3 bit), og vi summerer komponenterne (idet overløb ignoreres) Hensigtsmæssig for nøgler med en længde, der er større antallet af bit i en heltalstype Dog uhensigtsmæssig for tegnstrenge, hvor tegnenes rækkefølge har betydning ( post, stop og spot kolliderer) Hashkode-afbildninger (fortsat) Komprimerings-afbildninger Polynomiel akkumulation: Vi opdeler bittene i nøglen i komponenter af fast længde (f.eks., eller 3 bit) a 0 a a n" Vi evaluerer polynomiet p(z) = a 0 + a z + a z + + a n" z n" for en fast værdi z, idet overløb ignoreres Er særlig hensigtsmæssig for tekststrenge (for eksempel giver valget z = 33 kun kollisioner for en mængde af 0000 engelske ord) Værdien p(z) kan evalueres i O(n) tid ved hjælp af Horner s regel: Følgende værdier beregnes successivt, hver ud fra den foregående værdi i O() tid: p 0 (z) = a n" p i (z) = a n"i" + zp i" (z) (i =,,, n ") Vi har, at p(z) = p n" (z) p(z) = a 0 + z(a + z(a + + z a n" ))))))) Division: h (y) = y mod N Størrelsen N af hashtabellen vælges sædvanligvis som et primtal Multiply, Add and Divide (MAD): h (y) = (ay + b) mod N hvor a og b er ikke-negative heltal, således at a mod N * 0 (ellers ville ethvert heltal y blive afbildet til den samme værdi b) 3

17 Kollisioner Separat kædning Kollisioner optræder, når forskellige nøgler afbildes til samme celle Kollisioner er hyppige: Hvor mange personer skal være forsamlet i et selskab, for at der er mere end 0% sandsynlighed for, at mindst to personer har fødselsdag på samme dato? Svar:. Lad N være størrelsen af hashtabellen. Hvor mange indsættelser kan der da i gennemsnit foretages, før der opstår en kollision? N 00!N / Separat kædning: Lad hver celle i tabellen pege på en hægtet liste af de elementer, der afbildes til cellen Separat kædning er simpel, men kræver ekstra lagerplads, udover tabellen 0 3 Ole Olsen Birte Kjær Anisette Lineær afprøvning Åben adressering: Et kolliderende emne placeres i en anden celle i tabellen Linær afprøvning håndterer kollisioner ved at placere det kolliderende emne i den næste (cirkulært) ledige celle Hver celle, der undersøges, kaldes en afprøvning Kolliderende emner klumper sammen, hvilket bevirker, at fremtidige kollisioner skal bruge længere sekvenser af afprøvninger k h(k) 3 Eksempel: 3 h(k) = k mod 3 3 Indsæt nøglerne,,,,, 3, 3, 3 i nævnte rækkefølge Søgning med lineær afprøvning Betragt en hashtabel A, der benytter linær afprøvning findelement(k) Start i celle h(k) Prøv i konsekutive celler, indtil en af følgende hændelser indtræffer En tom celle er fundet Et emne med nøglen k er fundet N celler er blevet prøvet Algorithm findelement(k) i! h(k) p! 0 repeat c! A[i] if c = then return NO_SUCH_KEY else if c.key() = k then return c.element() else i! (i + ) mod N p! p + until p = N return NO_SUCH_KEY

18 Opdatering med lineær afprøvning For at håndtere fjernelse introduceres et specielt objekt, kaldet AVAILABLE, som erstatter fjernede elementer removeelement(k) Søg efter et emne med nøgle k Hvis et sådan emne (k, o) findes, så erstat det med det specielle emne AVAILABLE og returner elementet o Ellers returneres NO_SUCH_KEY insertitem(k, o) Kast en undtagelse, hvis tabellen er fuld Start i celle h(k) Prøv i konsekutive celler, indtil en af følgende hændelser indtræffer Der mødes en celle i, som er tom eller indeholder AVAILABLE N celler er blevet prøvet Gem emnet (k, o) in celle i Argumentation for tendens til klyngedannelse Antag, at alle positioner [i:j] indeholder poster, mens i-, j+ og j+ er tomme i- j+ j+ Så vil chancen for, at en ny post placeres på position j+ være lig med chancen for, at en ny post ønskes placeret i intervallet [i:j+] For at den nye post placeres på j+, skal dens hashværdi derimod være præcis j+ 0 Klyngedannelse Kvadratisk afprøvning (reducerer risikoen for klyngedannelse) Uheldigt fænomen Lange klynger har en tendens til at blive længere Søgelængen vokser drastisk, efterhånden som tabellen fyldes Lineær afprøvning er for langsom, når tabellen bliver 0-0% fuld Afprøvningssekvens (startende i pos = h(k)): Lineær prøvning: pos, pos +, pos +, pos + 3,... Kvadratisk prøvning: pos, pos +, pos +, pos + 3,... Kvadrering kan undgås Lad H i betegne den i te position (H 0 = pos er startpositionen) Idet fås H i- = pos + (i - ) = pos + i - i + = H i - i + H i = H i- + i -

19 Dobbelt hashing Eksempel på dobbelt hashing Dobbelt hashing benytter en sekundær hashfunktion d(k) og håndterer kollisioner ved at placere et emne på den første ledige celle i rækken (i + jd(k)) mod N for j = 0,,, N " Sædvanligt valg af komprimeringsafbildning for den sekundære hashfunktion: hvor d(k) = q - (k mod q) q < N, og q er et primtal Betragt en hashtabel af heltallige nøgler, som håndterer kollision ved dobbelt hashing N = 3 h(k) = k mod 3 d(k) = " (k mod ) k h(k) d(k) prøvning Den sekundære hashfunktion d(k) må ikke have 0-værdier De mulige værdier for d(k) er,,, q Indsæt nøglerne,,,,, 3, 3, 3 i nævnte rækkefølge Tabelstørrelsen skal være et primtal for at muliggøre afprøvning i alle celler Effektiviteten af hashing Fordele ved separat kædning Idiotsikker metode (bryder ikke sammen) Antallet af poster behøver ikke at være kendt på forhånd Sletning er simpel Tillader ens nøgler I værste tilfælde udføres søgning, indsættelse og fjernelse i O(n) tid. Det værste tilfælde optræder, når alle nøgler, der indsættes i hashtabellen, kolliderer Fyldningsgraden! = n/n har betydning for effektiviteten af en hashtabel Antag at hashværdierne er som tilfældige tal. Det kan da vises, at det forventede antal afprøvninger for indsættelse i en hashtabel med lineær afprøvning er / ( "!) Den forventede køretid for samtlige hashtabel-operationer er O() I praksis er hashing meget hurtig, forudsat at fyldningsgraden ikke er tæt på 00% Anvendelser: Databaser Oversættere Cache-lagre i browsere

20 Universel hashing Perfekt hashing En familie af hashfunktioner er universel, hvis det for ethvert 0! j,k! M- gælder, at Pr(h(j)=h(k))! /N Vælg et primtal p imellem M og M (et sådan findes altid) Vælg tilfældigt 0 < a < p og 0 < b < p, og definer h(k) = (ak + b mod p) mod N Sætning: Mængden af alle funktioner, h, som er defineret på denne måde, er universelle Sætning: Sandsynligheden for kollision ved brug en universel hashfunktion er mindre end eller lig med fyldningsgraden Universel hashing har O() gennemsnitlig effektivitet for ethvert sæt af nøgler Perfekt hashing garanterer O() værsttilfælde-effektivitet for et statisk sæt af nøgler Eksempler på statiske nøglesæt: reserverede ord i et programmeringssprog filnavnene på en CD-ROM. Ide: Brug en -niveau-struktur med universel hashing på hvert niveau Niveau : Brug hashing med kædning. De n nøgler hashes til tabellen T ved hjælp af en universel hashfunktion h Niveau : Hver plads j i T peger på en hashtabel S j med en tilknyttet universel hashfunktion h j, og med en størrelse, der er kvadratet på antallet af nøgler i S j. Grunde til ikke at bruge hashing Hvorfor bruge andre metoder? Der er ingen effektivitetsgaranti Hvis nøglerne er lange, kan hashfunktionen være for kostbar at beregne Bruger ekstra plads Understøtter ikke sortering

Binære søgetræer og skiplister

Binære søgetræer og skiplister Søgning 1 Binære søgetræer og skiplister < 6 S 3 + 2 > 9 S 2 15 + 1 4 = 8 S 1 15 23 + S 0 10 15 23 36 + 2 Ordbog ADT (Dictionary) En ordbog lagrer en samling af emner, der kan søges i Hvert emne er et

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer Vægtning

Læs mere

Sortering. Sortering ved fletning (merge-sort) Del-og-hersk. Merge-sort

Sortering. Sortering ved fletning (merge-sort) Del-og-hersk. Merge-sort Sortering Sortering ved fletning (merge-sort) 7 2 9 4! 2 4 7 9 7 2! 2 7 9 4! 4 9 7! 7 2! 2 9! 9 4! 4 1 2 Del-og-hersk Merge-sort Del-og-hersk er et generelt paradigme til algoritmedesign Del: opdel input-data

Læs mere

Algoritmisk geometri

Algoritmisk geometri Algoritmisk geometri 1 Intervalsøgning 2 Motivation for intervaltræer Lad der være givet en database over ansatte i en virksomhed Ansat Alder Løn Ansættelsesdato post i databasen Antag, at vi ønsker at

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer Kursus nr. 06. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer Vægtning

Læs mere

Intervalsøgning. Algoritmisk geometri. Motivation for intervaltræer. Intervalsøgning. Lad der være givet en database over ansatte i en virksomhed

Intervalsøgning. Algoritmisk geometri. Motivation for intervaltræer. Intervalsøgning. Lad der være givet en database over ansatte i en virksomhed Algoritmisk geometri Intervalsøgning 1 2 Motivation for intervaltræer Intervalsøgning Lad der være givet en database over ansatte i en virksomhed Ansat Alder Løn Ansættelsesdato post i databasen Vi kan

Læs mere

Sortering ved fletning (merge-sort)

Sortering ved fletning (merge-sort) Sortering 1 Sortering ved fletning (merge-sort) 7 2 9 4 2 4 7 9 7 2 2 7 9 4 4 9 7 7 2 2 9 9 4 4 2 Del-og-hersk Del-og-hersk er et generelt paradigme til algoritmedesign Del: opdel input-data S i to disjunkte

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af sider Danmarks Tekniske Universitet Skriftlig prøve, den. maj 00. Kursusnavn Algoritmer og datastrukturer Kursus nr. 06. Tilladte hjælpemidler: Alle hjælpemidler. Vægtning af opgaverne: Opgave

Læs mere

Datastrukturer (recap)

Datastrukturer (recap) Dictionaries Datastrukturer (recap) Data: Datastruktur = data + operationer herpå En ID (nøgle) + associeret data. Operationer: Datastrukturens egenskaber udgøres af de tilbudte operationer (API for adgang

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 3. maj 0. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 005. Varighed: timer Tilladte hjælpemidler: Alle skriftlige hjælpemidler.

Læs mere

Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo

Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo Philip Bille Nærmeste naboer. Vedligehold en dynamisk mængde S af elementer. Hvert element har en nøgle key[] og satellitdata data[]. operationer. PREDECESSOR(k): returner element med største nøgle k.

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 3 sider anmarks Tekniske Universitet Skriftlig prøve, den 29. maj 203. ursusnavn: lgoritmer og datastrukturer ursus nr. 02326. jælpemidler: Skriftlige hjælpemidler. et er ikke tilladt at medbringe

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 23. maj 20. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 0205. Varighed: 4 timer Tilladte hjælpemidler: Alle skriftlige hjælpemidler.

Læs mere

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer Philip Bille (priority-queues). Vedligehold en dynamisk mængde S af elementer. Hver element x er tilknyttet en nøgle x.key og satellitdata x.data. MAX(): returner element med største nøgle. EXTRACTMAX():

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet. Mandag den 22. marts 2004, kl

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet. Mandag den 22. marts 2004, kl Skriftlig Eksamen Algoritmer og Datastrukturer 1 Datalogisk Institut Aarhus Universitet Mandag den. marts 00, kl..00 11.00 Navn Gerth Stølting Brodal Årskort 1 Dette eksamenssæt består af en kombination

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet Eksamen 005, F side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed:

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 2. maj 200. Kursusnavn Algoritmer og datastrukturer Kursus nr. 02326. Tilladte hjælpemidler: Alle hjælpemidler. Vægtning af opgaverne:

Læs mere

Prioritetskøer. Prioritetskøer Træer og hobe Repræsentation af hobe Algoritmer på hobe Hobkonstruktion Hobsortering. Philip Bille

Prioritetskøer. Prioritetskøer Træer og hobe Repræsentation af hobe Algoritmer på hobe Hobkonstruktion Hobsortering. Philip Bille Prioritetskøer Prioritetskøer Træer og hobe Repræsentation af hobe Algoritmer på hobe Hobkonstruktion Hobsortering Philip Bille Prioritetskøer Prioritetskøer Træer og hobe Repræsentation af hobe Algoritmer

Læs mere

Datastrukturer (recap) Datastruktur = data + operationer herpå

Datastrukturer (recap) Datastruktur = data + operationer herpå Dictionaries Datastrukturer (recap) Datastruktur = data + operationer herpå Datastrukturer (recap) Data: Datastruktur = data + operationer herpå En ID (nøgle) + associeret data (ofte underforstået, også

Læs mere

1. Redegør for Lister, stakke og køer mht struktur og komplexitet af de relevante operationer

1. Redegør for Lister, stakke og køer mht struktur og komplexitet af de relevante operationer 1. Redegør for Lister, stakke og køer mht struktur og komplexitet af de relevante operationer på disse. Typer af lister: Array Enkelt linket liste Dobbelt linket Cirkulære lister Typer af køer: FILO FIFO

Læs mere

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer Philip Bille. Vedligehold en dynamisk mængde S af elementer. Hver element x er tilknyttet en nøgle x.key og satellitdata x.data. MAX(): returner element med største nøgle. EXTRACTMAX(): returner og fjern

Læs mere

22 Hobe. Noter. PS1 -- Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned.

22 Hobe. Noter. PS1 -- Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned. 22 Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned. Indsættelse i hobe. Sletning af minimalt element i hobe. Repræsentation. 327

Læs mere

Algoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012. May 15, 2012

Algoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012. May 15, 2012 Algoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012 May 15, 2012 1 CONTENTS 2012 CONTENTS Contents 1 Kompleksitet 3 1.1 Køretid................................................ 3 1.2 Asymptotisk

Læs mere

Datastrukturer (recap)

Datastrukturer (recap) Dictionaries Datastrukturer (recap) Data: Datastruktur = data + operationer herpå En ID (nøgle) + associeret data. Operationer: Datastrukturens egenskaber udgøres af de tilbudte operationer (API for adgang

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet ksamen 06, side af sider anmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. ursusnavn: lgoritmer og datastrukturer ursus nr. 06. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer

Læs mere

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 4 n n 3n n 2 /logn 5 n n (logn) 3n n 2 /logn 4 n n 5 n

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 4 n n 3n n 2 /logn 5 n n (logn) 3n n 2 /logn 4 n n 5 n Side af 0 sider Opgave (%) Ja Nej n er O(0n logn)? n er O(n )? n +n er O(n )? n logn er O(n )? n logn er O(n)? Opgave (%) Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n

Læs mere

Prioritetskøer og hobe. Philip Bille

Prioritetskøer og hobe. Philip Bille Prioritetskøer og hobe Philip Bille Plan Prioritetskøer Træer Hobe Repræsentation Prioritetskøoperationer Konstruktion af hob Hobsortering Prioritetskøer Prioritetskø Vedligehold en dynamisk mængde S af

Læs mere

Binære søgetræer. Nærmeste naboer Binære søgetræer Indsættelse Predecessor og successor Sletning Trægennemløb. Philip Bille

Binære søgetræer. Nærmeste naboer Binære søgetræer Indsættelse Predecessor og successor Sletning Trægennemløb. Philip Bille Binære søgetræer Nærmeste naboer Binære søgetræer Indsættelse Predecessor og successor Sletning Trægennemløb Philip Bille Binære søgetræer Nærmeste naboer Binære søgetræer Indsættelse Predecessor og successor

Læs mere

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 2 n (log n) 2. 3 n /n 2 n + (log n) 4

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 2 n (log n) 2. 3 n /n 2 n + (log n) 4 Eksamen. kvarter 00 Side 1 af sider Opgave 1 ( %) Ja Nej n log n er O(n / )? n 1/ er O(log n)? n + n er O(n )? n( n + log n) er O(n / )? n er Ω(n )? Opgave ( %) Opskriv følgende funktioner efter stigende

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 2 sider anmarks Tekniske Universitet Skriftlig prøve, den 23. maj 20. Kursusnavn: lgoritmer og datastrukturer Kursus nr. 02326. Varighed: 4 timer Tilladte hjælpemidler: lle skriftlige hjælpemidler.

Læs mere

Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo

Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo Philip Bille er. Vedligehold en dynamisk mængde S af elementer. Hvert element har en nøgle x.key og satellitdata x.data. operationer. PREDECESSOR(k): returner element x med største nøgle k. SUCCESSOR(k):

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet Eksamen 02105, F14 side 1 af 14 Danmarks Tekniske Universitet Skriftlig prøve, den 22. maj 2014. Kursusnavn: Algoritmer og datastrukturer 1 Kursusnummer: 02105 Hjælpemidler: Skriftlige hjælpemidler. Det

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af sider Danmarks Tekniske Universitet Skriftlig prøve, den. maj 00. Kursusnavn Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Alle skriftlige hjælpemidler. Vægtning af opgaverne:

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 2. maj 200. Kursusnavn Algoritmer og datastrukturer I Kursus nr. 0205. Tilladte hjælpemidler: Alle skriftlige hjælpemidler. Vægtning af

Læs mere

Hashing. Ordbøger Hægtet hashing Hashfunktioner Lineær probering. Philip Bille

Hashing. Ordbøger Hægtet hashing Hashfunktioner Lineær probering. Philip Bille Hashing Ordbøger Hægtet hashing Hashfunktioner Lineær probering Philip Bille Hashing Ordbøger Hægtet hashing Hashfunktioner Lineær probering Ordbøger Ordbøger. Vedligehold en dynamisk mængde S af elementer.

Læs mere

Sortering. Eksempel: De n tal i sorteret orden

Sortering. Eksempel: De n tal i sorteret orden Sortering 1 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 2 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden

Læs mere

Hashing. Hashing. Ordbøger. Ordbøger. Ordbøger Hægtet hashing Hashfunktioner Lineær probering. Ordbøger Hægtet hashing Hashfunktioner Lineær probering

Hashing. Hashing. Ordbøger. Ordbøger. Ordbøger Hægtet hashing Hashfunktioner Lineær probering. Ordbøger Hægtet hashing Hashfunktioner Lineær probering Philip Bille Ordbøger. Vedligehold en dynamisk mængde S af elementer. Hvert element har en nøgle key[x] fra et univers af nøgler U og satellitdata data[x]. Ordbogsoperationer. SEARCH(k): afgør om element

Læs mere

Hashing. Ordbøger Hægtet hashing Hashfunktioner Lineær probering. Philip Bille

Hashing. Ordbøger Hægtet hashing Hashfunktioner Lineær probering. Philip Bille Hashing Ordbøger Hægtet hashing Hashfunktioner Lineær probering Philip Bille Hashing Ordbøger Hægtet hashing Hashfunktioner Lineær probering Ordbøger Ordbøger. Vedligehold en dynamisk mængde S af elementer.

Læs mere

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 23n log n. 4 n (log n) log n

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 23n log n. 4 n (log n) log n Eksamen. kvarter 00 Algoritmer og Datastrukturer (00-ordning) Side af sider Opgave (%) Ja Nej n er O(n )? n er O(n )? n er O(n + 0 n)? n + n er O(n )? n log n er Ω(n )? Opgave (%) Opskriv følgende funktioner

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet ksamen 036, side af sider anmarks Tekniske Universitet Skriftlig prøve, den 3. maj 0. Kursusnavn: lgoritmer og datastrukturer Kursus nr. 036. Varighed: timer Tilladte hjælpemidler: lle skriftlige hjælpemidler.

Læs mere

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 7 n 1/2 2 n /n 3 2logn n 2 /logn

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 7 n 1/2 2 n /n 3 2logn n 2 /logn Eksamen august 0 Algoritmer og Datastrukturer (00-ordning) Side af sider Opgave (%) n er Ω(n)? n er O( n )? n er O(8logn)? + er O(n)? n er O(n / )? Opgave (%) Opskriv følgende funktioner efter stigende

Læs mere

Sortering. Eksempel: De n tal i sorteret orden

Sortering. Eksempel: De n tal i sorteret orden Sortering 1 / 32 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 2 / 32 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden

Læs mere

Sortering af information er en fundamental og central opgave.

Sortering af information er en fundamental og central opgave. Sortering 1 / 36 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 6, 9 Mange opgaver er hurtigere i sorteret information (tænk på ordbøger, telefonbøger,

Læs mere

Sortering af information er en fundamental og central opgave.

Sortering af information er en fundamental og central opgave. Sortering Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 Mange opgaver er hurtigere i sorteret information (tænk på ordbøger, telefonbøger,

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet Side af 1 sider Skriftlig Eksamen Algoritmer og Datastrukturer 1 Datalogisk Institut Aarhus Universitet Dette eksamenssæt består af en kombination af små skriftlige opgaver og multiplechoice-opgaver. Opgaverne

Læs mere

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3 02105 Eksamensnoter Lasse Herskind S153746 12. maj 2017 Indhold 1 Sortering 3 2 Analyse af algoritme 4 2.1 Køretid.......................................... 4 2.2 Pladsforbrug.......................................

Læs mere

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n n (log n) 2. n 2 + log n 3 n. n n (log n)

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n n (log n) 2. n 2 + log n 3 n. n n (log n) Eksamen august 00 Algoritmer og Datastrukturer (00-ordning) Side af sider Opgave ( %) n er O(n log n)? n n er O(n )? Ja Nej n er O(n log n)? n + n log n er O(n n)? n + n er O(n )? Opgave ( %) Opskriv følgende

Læs mere

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Institut for Matematik og Datalogi Syddansk Universitet, Odense Mandag den 6. juni 2016, kl. 15:00 19:00 Besvarelsen skal afleveres elektronisk. Se

Læs mere

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 1 (tretten) Eksamensdag: Tirsdag den 8. april 2008,

Læs mere

DATALOGISK INSTITUT, AARHUS UNIVERSITET

DATALOGISK INSTITUT, AARHUS UNIVERSITET DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 12 (tolv) Eksamensdag: Fredag den 1. april 200, kl..00-11.00

Læs mere

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi INSTITUT FOR DATALOGI, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 12 (tolv) Eksamensdag: Fredag den 16. august 2013,

Læs mere

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 5. 5n 2 5 logn. 2 logn

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 5. 5n 2 5 logn. 2 logn Eksamen august 0 Algoritmer og Datastrukturer (00-ordning) Side af sider Opgave (%) n +n er O(n )? Ja Nej n er O(n )? n+n er O(n. )? n+n er O(8n)? n logn er O(n )? Opgave (%) Opskriv følgende funktioner

Læs mere

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 3/2. n logn (3/2) n. 2 3logn (3/2) n

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 3/2. n logn (3/2) n. 2 3logn (3/2) n Side af 0 sider Opgave (4%) Ja Nej n er O(n / )? n +n er O(n )? (logn) er O( logn )? n er O()? /n er O(logn)? Opgave (4%) Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: logn

Læs mere

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 2 2 n 1/n (logn) n. n 2

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 2 2 n 1/n (logn) n. n 2 Side af sider Opgave (%) Ja Nej n er O(n n)? n er O(n+n )? ( n ) er O( n )? logn er O(n / )? n +n er O(n)? Opgave (%) Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn)

Læs mere

Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt.

Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt. Merging og hashing Mål Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer

Læs mere

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer Introduktion til datastrukturer Introduktion til datastrukturer Philip Bille Datastrukturer Datastruktur. Metode til at organise data så det kan søges i/tilgås/manipuleres effektivt. Mål. Hurtig Kompakt

Læs mere

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer Introduktion til datastrukturer Introduktion til datastrukturer Philip Bille Datastrukturer Datastruktur. Metode til at organise data så det kan søges i/tilgås/manipuleres effektivt. Mål. Hurtig Kompakt

Læs mere

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 5n 4. logn. n 4n 5 n/logn. n n/logn 5n

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 5n 4. logn. n 4n 5 n/logn. n n/logn 5n Algoritmer og Datastrukturer (-ordning) Side af sider Opgave (%) n er O(n 7 )? (logn) er O( n)? n(logn) er O(n)? n er O( n )? n er Ω(n )? Opgave (%) Opskriv følgende funktioner efter stigende orden med

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet Eksamen 005, F0 side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 00. Kursusnavn Algoritmik og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Alle skriftlige hjælpemidler.

Læs mere

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning)

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning) INSTITUT FOR DATALOGI, AARHUS UNIVERSITET EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 12 (tolv) Eksamensdag: Fredag den 10. august 2012, kl. 9.00-11.00 Eksamenslokale: Finlandsgade

Læs mere

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer.

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer. Merging og Hashing Tilgang til data To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer. API for sekventiel tilgang (API =

Læs mere

Introduktion til datastrukturer. Philip Bille

Introduktion til datastrukturer. Philip Bille Introduktion til datastrukturer Philip Bille Plan Datastrukturer Stakke og køer Hægtede lister Dynamiske tabeller Datastrukturer Datastrukturer Datastruktur: Metode til at organise data så det kan søges

Læs mere

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 12 (tolv) Eksamensdag: Fredag den 13. august 2010, kl.

Læs mere

Definition : Et træ er en sammenhængende ikke-orienteret graf uden simple kredse. Sætning : En ikke-orienteret graf er et træ hvis og kun hvis der er

Definition : Et træ er en sammenhængende ikke-orienteret graf uden simple kredse. Sætning : En ikke-orienteret graf er et træ hvis og kun hvis der er Definition : Et træ er en sammenhængende ikke-orienteret graf uden simple kredse. Sætning : En ikke-orienteret graf er et træ hvis og kun hvis der er en unik simpel vej mellem ethvert par af punkter i

Læs mere

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for

Læs mere

Algoritmeanalyse. Øvre grænse for algoritme. Øvre grænse for problem. Nedre grænse for problem. Identificer essentiel(le) operation(er)

Algoritmeanalyse. Øvre grænse for algoritme. Øvre grænse for problem. Nedre grænse for problem. Identificer essentiel(le) operation(er) Algoritmeanalyse Identificer essentiel(le) operation(er) Øvre grænse for algoritme Find øvre grænse for antallet af gange de(n) essentielle operation(er) udføres. Øvre grænse for problem Brug øvre grænse

Læs mere

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 7 n 1 7 7/n. 7nlogn. 7n 7nlogn n7

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 7 n 1 7 7/n. 7nlogn. 7n 7nlogn n7 Side af 0 sider Opgave (%) Ja Nej /n er O(n )? n (logn) er O(n 3 )? n + n er O(3 n )? n er O((logn) 3 )? nlogn er Ω(n)? Opgave (%) Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen:

Læs mere

Træer. Datastrukturer & Algoritmer, Datalogi C Forelæsning 9/

Træer. Datastrukturer & Algoritmer, Datalogi C Forelæsning 9/ Datastrukturer & Algoritmer, Datalogi C Forelæsning 9/11-2004 Træer En meget vigtig datastruktur Repræsentation af sprog (i meget generel betydning), syntakstræer: Java (i en compiler), SQL (i et databasesystem),

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 26. maj 2009. Kursusnavn Algoritmik og datastrukturer I Kursus nr. 0205. Tilladte hjælpemidler: Alle skriftlige hjælpemidler. Vægtning

Læs mere

Søgetræer: Generel repræsentation af (sorterede) mængder og funktioner Databasesystemer...

Søgetræer: Generel repræsentation af (sorterede) mængder og funktioner Databasesystemer... Datastrukturer & Algoritmer, Datalogi C Forelæsning 11/11-2003 Træer En meget vigtig datastruktur Repræsentation af sprog (i meget generel betydning), syntakstræer: Java (i en compiler), SQL (i et databasesystem),

Læs mere

Introduktion til datastrukturer

Introduktion til datastrukturer Introduktion til datastrukturer Datastrukturer Stakke og køer Hægtede lister Dynamiske tabeller Philip Bille Introduktion til datastrukturer Datastrukturer Stakke og køer Hægtede lister Dynamiske tabeller

Læs mere

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt.

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Merging og hashing Mål Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer (2. semester). Mål

Læs mere

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (key, nøgle) for dataelementer.

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (key, nøgle) for dataelementer. Merging og Hashing Tilgang til data To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (key, nøgle) for dataelementer. API for sekventiel tilgang (API = Application

Læs mere

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 7 n 1/ log n. (log n) 4

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 7 n 1/ log n. (log n) 4 Eksamen august 00 Algoritmer og Datastrukturer (00-ordning) Side af sider Opgave (%) n er O(n )? n(log n) er O(n )? n n + (log n) er O(n )? n er O(n )? n er Ω( n )? Opgave (%) Opskriv følgende funktioner

Læs mere

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n+logn logn (logn) 7 (3/2) n

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n+logn logn (logn) 7 (3/2) n Side af sider Opgave (%) Ja Nej n er O( n )? n er O(log n)? n er O(n )? n + er O(0n)? nlogn er O(n / )? Opgave (%) Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: nlogn logn

Læs mere

19 Hashtabeller. Noter. PS1 -- Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse.

19 Hashtabeller. Noter. PS1 -- Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse. 19 Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse. Sammenligning af hashtabeller og søgetræer. 281 Hashing-problemet (1). Vi ønsker at afbilde n objekter på en tabel

Læs mere

Grundlæggende køretidsanalyse af algoritmer

Grundlæggende køretidsanalyse af algoritmer Grundlæggende køretidsanalyse af algoritmer Algoritmers effektivitet Størrelse af inddata Forskellige mål for køretid Store -notationen Klassiske effektivitetsklasser Martin Zachariasen DIKU 1 Algoritmers

Læs mere

Stakke, køer og lidt om hægtede lister

Stakke, køer og lidt om hægtede lister Datastrukturer & Algoritmer, Datalogi C Forelæsning 4/11-2003 Henning Christiansen Stakke, køer og lidt om hægtede lister - kapitel 16 og 17 Hvorfor? Fundamentale datastrukturer man får brug for igen og

Læs mere

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi INSTITUT FOR DATALOGI, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 12 (tolv) Eksamensdag: Torsdag den 21. marts 2013,

Læs mere

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for

Læs mere

Sortering. De n tal i sorteret orden. Eksempel: Kommentarer:

Sortering. De n tal i sorteret orden. Eksempel: Kommentarer: Sortering Sortering Input: Output: n tal De n tal i sorteret orden Eksempel: Kommentarer: 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 Sorteret orden kan være stigende eller faldende. Vi vil i dette kursus

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Tirsdag den 27. maj 2003, kl. 9.00 3.00 Opgave (25%) For konstanten π = 3.4592... gælder identiteten π 2 6 =

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter Skriftlig eksamen i Datalogi Modul 1 Sommer 1999 Opgavesættet består af 5 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 15% Opgave 2 15% Opgave 3 8% Opgave

Læs mere

Opgave 1 (10%) I det følgende angiver log n 2-tals-logaritmen af n. Ja Nej. n+3n er O(2n)? n 6 er O(n 5 )? nlogn er O(n 2 /logn)? 4n 3 er O(3n 4 )?

Opgave 1 (10%) I det følgende angiver log n 2-tals-logaritmen af n. Ja Nej. n+3n er O(2n)? n 6 er O(n 5 )? nlogn er O(n 2 /logn)? 4n 3 er O(3n 4 )? Eksamen juni Algoritmer og Datastrukturer (-ordning) Side af sider Opgave (%) I det følgende angiver log n -tals-logaritmen af n. n+n er O(n)? n 6 er O(n )? nlogn er O(n /logn)? n er O(n )? n er O(n )?

Læs mere

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 12 (tolv) Eksamensdag: Torsdag den 11. august 2011,

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter side 1 af 11 sider Skriftlig eksamen i Datalogi Modul 1 Sommer 2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 10% Opgave 2 10%

Læs mere

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 12 (tolv) Eksamensdag: Onsdag den 31. marts 2010, kl.

Læs mere

Geometrisk skæring. Afgørelse af om der findes skæringer blandt geometriske objekter Bestemmelse af alle skæringspunkter

Geometrisk skæring. Afgørelse af om der findes skæringer blandt geometriske objekter Bestemmelse af alle skæringspunkter Planfejning 1 Skæring 2 Geometrisk skæring Afgørelse af om der findes skæringer blandt geometriske objekter Bestemmelse af alle skæringspunkter Løsningsmetoder: Rå kraft Planfejning (eng. plane sweep)

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Institut for Matematik og Datalogi Syddansk Universitet, Odense Mandag den 7. juni 00, kl. 9 Alle sædvanlige hjælpemidler (lærebøger, notater, osv.)

Læs mere

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 12 (tolv) Eksamensdag: Torsdag den 26. marts 2009, kl.

Læs mere

Abstrakte datatyper C#-version

Abstrakte datatyper C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype

Læs mere

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen (bemærk at log n betegner totals logaritmen): n 2 (log n) 2 2.

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen (bemærk at log n betegner totals logaritmen): n 2 (log n) 2 2. Eksamen august Algoritmer og Datastrukturer (-ordning) Side af sider Opgave (%) n + n er O(n )? n / er O(n / )? n er O(n log n)? n er O((log n) )? n er Ω(n )? Ja Nej Opgave (%) Opskriv følgende funktioner

Læs mere

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for

Læs mere

Algoritmedesign med internetanvendelser ved Keld Helsgaun

Algoritmedesign med internetanvendelser ved Keld Helsgaun Algoritmedesign med internetanvendelser ved Keld Helsgaun 1 Analyse af algoritmer Input Algoritme Output En algoritme er en trinvis metode til løsning af et problem i endelig tid 2 Algoritmebegrebet D.

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 20. marts, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 13. marts, 2018 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet Eksamen 0205, Forår 205 side af 5 Danmarks Tekniske Universitet Skriftlig prøve, den 22. maj 205. Kursusnavn: Algoritmer og datastrukturer Kursusnummer: 0205 Hjælpemidler: Skriftlige hjælpemidler. Det

Læs mere

16 Træer. Noter. Definition af et træ. Definitioner i tilknytning til træer. Repræsentation af træer. Binære træer. Den abstrakte datatype.

16 Træer. Noter. Definition af et træ. Definitioner i tilknytning til træer. Repræsentation af træer. Binære træer. Den abstrakte datatype. 16 Træer. Definition af et træ. Definitioner i tilknytning til træer. Repræsentation af træer. Binære træer. Den abstrakte datatype. Gennemløb af binære træer. Træer i Eiffel. 229 Definition af et træ.

Læs mere

Stakke, køer og lidt om hægtede lister - kapitel 16 og 17

Stakke, køer og lidt om hægtede lister - kapitel 16 og 17 Datastrukturer & Algoritmer, Datalogi C Forelæsning 2/11-2004 Henning Christiansen Stakke, køer og lidt om hægtede lister - kapitel 16 og 17 Fundamentale datastrukturer man får brug for igen og igen Et

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Institut for Matematik og Datalogi Syddansk Universitet, Odense Onsdag den 0. juni 009, kl. 9 Alle sædvanlige hjælpemidler (lærebøger, notater, osv.)

Læs mere