Plan. Introduktion. Eks: Max i tabel. Algoritmer og datastrukturer. Algoritmer og datastrukturer. Toppunkter. Algoritme 1. Algoritme 2.

Størrelse: px
Starte visningen fra side:

Download "Plan. Introduktion. Eks: Max i tabel. Algoritmer og datastrukturer. Algoritmer og datastrukturer. Toppunkter. Algoritme 1. Algoritme 2."

Transkript

1 Plan Algoritmer og datastrukturer Toppunkter Introduktion Philip Bille Algoritme Algoritme Algoritme Algoritmer og datastrukturer Eks: Max i tabel Hvad er det? Algoritmisk problem: præcist defineret relation mellem input og output. Algoritme: metode til at løse et algoritmisk problem. Beskrevet i diskrete og entydige skridt. Matematisk abstraktion af program. Datastruktur: Metode til at organise data så det kan søges i eller manipuleres Maxproblemet: givet en tabel A[..n] find et tal i, således at A[i] er maksimal. Input: tabel A[..n]. Output: et tal i, i n, så A[i] A[j] for alle indgange j i. Algoritme til maxproblemet: Gennemløb A og vedligehold nuværende maximale indgang. Returner den til slut.

2 Beskrivelse af algoritmer Naturligt sprog. Program. public static int findmax(int[] A) { int max = 0; for(i=0; i< n; i++) if (A[i] > A[max]) max = i; return max; } int findmax(int* A, n) { int max = 0; for(i=0; i< n; i++) if (A[i] > A[max]) max = i; return max; } Pseudokode. def findmax(a): max = 0 for i in range(len(a)): if A[i] > A[max]: max = i return max fun findmax [] = raise Empty findmax [x] = x findmax (x::xs) = max(x, findmax xs) Pseudokode Beskrivelse af algoritmer FindMax(A, n) max = 0 for i = to n if (A[i] > A[max]) then max = i return max Naturligt sprog, pseudokode eller program? Som (imperativt) programmeringssprog men uden sprogspecifikke ting. Nemt at implementere og analysere.

3 Toppunkter Toppunkter Lad A[..n] være en tabel. En indgang A[i] er et toppunkt hvis det ikke er mindre end dets naboer: A[i-] A[i] A[i+] A[] toppunkt hvis A[] A[] og A[n] er toppunkt hvis A[n-] A[n]. (Tænk A[0] = A[n+] = - ) Toppunkter Algoritme Toppunktsproblemet: Givet en tabel A[..n] find et tal i, således at A[i] toppunkt. For hver indgang i A, check om den er et toppunkt. Returner det første toppunkt. Som input/output relation: Input: En tabel A[..n]. Output: Et tal i, i n, så A[i] er et toppunkt.

4 Pseudokode Teoretisk analyse Toppunkt(A, n) if A[] A[] return for i = to n- if A[i-] A[i] A[i+] return i if A[n-] A[n] return n T(n) = antallet af skridt som en algoritmen udfører på et input af størrelse n. Skridt = Læsning/skrivning til hukommelse (x := y, A[i], i++,...), aritmetiske/ boolske operationer (+,-,*,/,%,&&,, &,, ^,~), sammenligninger (<,>,,, =, ) og program-flow (if-then-else, while, for, goto, funktionskald,..) T(n) kaldes tidskompleksiten eller køretiden af algoritmen. Interesseret (næsten altid) i værstefaldstidskompleksitet = maksimal køretid over alle input af størrelse n. Køretid Eksperimentiel analyse Toppunkt(A, n) if A[] A[] return for i = to n- if A[i-] A[i] A[i+] return i if A[n-] A[n] return n c (n-) c c Hvordan opfører algoritmen sig i praksis? Passer den teoretisk analyse med den eksperimentielle analyse? T(n) = c + (n-) c + c T(n) er lineær funktion af n: T(n) = an + b, for passende konstanter a,b>0 I asymptotisk notation: T(n) = Θ(n)

5 0 Alg Algoritme Givet en tabel A[..n] løser Algoritme toppunktsproblemet i Θ(n) tid., Stemmer overens med praksis. sek. for 000 kørsler Kan vi gøre det bedre?, 0 00k 00k 00k 00k 900k.m.m.m.m.9m tabel str. Algoritme Algoritme findmax(a, n) max = for i = to n if A[i] > A[max] max = i return max c n c c Algoritme = FindMax Det maximale element er også et toppunkt. T(n) = c + n c + c = Θ(n) Samme asymptotisk køretid som algoritme. Bedre konstanter?

6 0 Alg Alg Algoritme Givet en tabel A[..n] løser Algoritme toppunktsproblemet i Θ(n) tid., Er hurtigere i praksis en algoritme. sek. for 000 kørsler Kan vi gøre det betydeligt bedre?, 0 00k 00k 00k 00k 900k.m.m.m.m.9m tabel str Algoritme Snedig ide: Kig på en vilkårligt indgang A[i] og dens naboer A[i-] og A[i+]. A[i] er et toppunkt => returner i. Ellers: A er lokalt voksende i mindst en retning. => Der findes et toppunkt i den voksende retning Kig på miderste indgang A[m] og dens naboer A[m-] og A[m+]. A[m] er et toppunkt => returner m. Ellers: A er lokalt voksende i mindst en retning. Find toppunkt i en lokalt voksende retning rekursivt. => Vi kan smide resten af tabellen væk og stå tilbage med enten A[..i-] eller A[i+..n].

7 Toppunkt(A,i,j) m = floor((i+j)/) if A[m-] A[m] A[m+] return m elseif A[m-] > A[m] return Toppunkt(A,i,m-) elseif A[m] < A[m+] return Toppunkt(A,m+,j) Kig på miderste indgang A[m] og dens naboer A[m-] og A[m+]. A[m] er et toppunkt => returner m. Ellers: A er lokalt voksende i mindst en retning. Find toppunkt i en lokalt voksende retning rekursivt. Køretid Et rekursivt kald tager konstant tid. Hvormange rekursive kald laver vi? Et rekursivt kald halverer størrelsen af tabellen vi kigger på. Vi stopper når tabellen har størrelse.. rekursive kald: n/. rekursive kald: n/. k te. rekursive kald: n/ k. => Efter log n rekursive kald har tabellen størrelse. => Køretiden er Θ(log n) 0 Alg Alg Alg Algoritme Givet en tabel A[..n] løser Algoritme toppunktsproblemet i Θ(log n) tid. sek. for 000 kørsler, Meget, meget hurtigere end algoritme og., 0 00k 00k 00k 00k 900k.m.m.m.m.9m tabel str.

8 Opsummering Algoritmer og datastrukturer Toppunkter Algoritme Algoritme Algoritme Søgning og Sortering Philip Bille Plan Søgning Linæer søgning Binær søgning Sortering Indsættelsesortering Søgning Flettesortering

9 Søgning Lineær søgning En tabel A[..n] er sorteret (i ikke-faldende rækkefølge) hvis A[] A[] A[n] Søgningsproblemet: Givet en sorteret tabel A og et tal x, afgør om der findes indgang i, så A[i] = x. Undersøg for alle indgange A[i] om A[i] = x. Tid: Θ(n) Binær søgning Analyse Kig på midterste indgang m i A. A[m] = x: færdig A[m] < x: fortsæt rekursivt på højre halvdel. A[m] > x: fortsæt rekursivt på venstre halvdel. Stopper når tabellen har størrelse Hvor hurtigt kører den? Analog til analyse af rekursiv toppunktsalgoritme. Et rekursivt kald tager konstant tid. I hver rekursion halverer vi tabellen vi kigger på. Vi stopper når tabellen har størrelse. Køretiden er Θ(log n)

10 Alternativ analyse T (n) = ( T (n/) + c hvis n> d hvis n = Lad T(n) være køretiden for binær søgning. Opskriv og udregn rekursionsligningen for T(n). T (n) = ( T (n/) + c hvis n> d hvis n = n T (n) =T + c n = T + c + c n = T + c + c + c. n = T k + ck. n = T log n + c log n = T () + c log n = d + c log n = (log n) Søgning Lineær søgning løser søgningsproblemet i Θ(n) tid. Binær søgning løser søgningsproblemet i Θ(log n) tid. Sortering

11 Sortering Anvendelser 0 0 Sorteringsproblemet: Givet en tabel A[..n] returner en tabel B[..n] med samme indhold som A men i sorteret orden. Oplagte: Sortere en liste af navne, organisere et MP bibliotek, vise Google PageRank resultater, vise Facebook feed i kronologisk rækkefølge. Ikke oplagte: Datakompression, computergrafik, bioinformatik, anbefalingssystemer (film på Netflix, bøger på Amazon, reklamer på Google,..). Nemme problemer for sorteret data: Binær søgning, find median, identificer duplikater, find tætteste par, find statiske perifere observationer (outliers). Indsættelsessortering (insertion-sort) Korrekthed Start med en ikke sorteret tabel. Kig på indgangene fra venstre til højre. Ved indgang i: Indsæt A[i] i rækkefølge blandt deltabellen A[..i-]. For at finde rette sted sammenligner vi med indgangene fra højre til venstre. Hvorfor virker det? Før iteration i består deltabellen A[..i-] af de tal der oprindeligt var i A[..i-] i sorteret rækkefølge. Iteration i indsætter A[i] i deltabellen A[..i-] Efter iteration i består deltabellen A[..i] af de tal der oprindeligt var i A[..i]

12 Analyse Analyse Hvor hurtigt kører den? Indsættelsessortering kører i Θ(n ) tid. Hvor lang tid tager det at indsætte A[i] i korrekt position? Samlet tid = Θ(tid for at indsætte alle indgangene i korrekt position) Flettesortering (mergesort) Fletning (merge) Hurtigere sorteringsalgoritme. Ide: Rekursiv sortering vha. fletning af sorterede deltabeller. Mål. Kombiner to sorterede tabeller til én sorteret tabel i lineær tid Ide: Hold styr på mindste element i hver sorteret tabel. Indsæt mindste af de to elementer i en ekstra tabel. Gentag indtil færdig.

13 Analyse Flettesortering Hvert skridt i algoritmen tager Θ() tid. I hvert skridt flytter vi en indgang frem i en af tabellerne. Linæer tid i sum af længde af tabellerne. Del A i to halvdele. Sorter hver halvdel rekursivt. Flet de to halvdele sammen. Stop når tabel har størrelse

14 Analyse Lad T(n) være køretiden af flettesortering. Hvor hurtigt kører den? Ide: T(n) = Θ(total tid brugt på fletning) Fletning tager lineær tid. T(n) = Θ(total længde af tabeller over alle rekursive kald)

15 Analyse Flettesorting kører i Θ(nlog n) tid. Del og hersk (divide-and-conquer) Sortering Flettesortering er eksempel på en del-og-hersk algoritme. Del-og-hersk: algoritmisk designparadigme Del: Opdel problemet i et eller flere delproblemer Indsættelsessortering i Θ(n ) tid. Flettesortering i Θ(nlog n) tid. Fletning i Θ(n) tid. Hersk: Løs delproblemerne rekursivt Kombiner: Sæt løsningerne til delproblemerne sammen til en samlet løsning for problemet. Flettesortering: Del: Del A i to halvdele. Hersk: Sorter hver halvdel rekursivt. Kombiner: Flet de to halvdele sammen.

16 Opsummering Søgning Linæer søgning Binær søgning Sortering Indsættelsesortering Flettesortering Analyse af algoritmer Philip Bille Plan Teoretisk analyse af algoritmer Køretid Pladsforbrug Asymptotisk notation O, Θ og Ω-notation. Analyse af algoritmer Eksperimentiel analyse af algoritmer

17 Analyse af algoritmer Analyse af algoritmer Hvorfor virker min algoritme ikke? Hvorfor kører min algoritme så langsomt? Hvorfor løber min algoritme tør for hukommelse? Analyser om en algoritme er korrekt. Robusthed + sikkerhed Analyser hvor mange resourcer en algoritme bruger. Tid Plads Cache-misses Båndbredde... Primært fokus er tid og plads. Analyse af algoritmer Køretid Teoretisk analyse Eksperimentiel analyse T(n) = antallet af skridt som en algoritmen udfører på et input af størrelse n. Skridt: Læsning/skrivning til hukommelse (x := y, A[i], i = i +,...) Arithmetiske/boolske operationer (+,-,*,/,%,&&,, &,, ^,~) Sammenligninger (<,>,=<, =>, =, ) Programflow (if-then-else, while, for, goto, funktionskald,..) T(n) kaldes tidskompleksiten eller køretiden af algoritmen.

18 Køretid Pladsforbrug Værstefalds-køretid (eng: worst-case running time): maksimal køretid over alle input af størrelse n. Bedstefalds-køretid (eng: best-case running time): minimal køretid over alle input af størrelse n. Gennemsnitlige-køretid (eng: average-case running time): gennemsnitlig køretid over alle input af størrelse n. S(n) = antallet af lagerpladser som algoritmen bruger. Variable og pointere = lagerplads. Tabel af længde x = x lagerpladser. S(n) kaldes pladskompleksiten eller pladsforbruget af algoritmen. Køretid = værstefaldskøretid (medmindre vi eksplicit skriver andet). Findes også amortiseret, randomiseret, etc. køretider. Asymptotisk notation O, Θ og Ω-notation. Notation til at give grænser for funktioners asymptotiske vækst. Velegnet til analyse af algoritmer. Asymptotisk notation

19 O-notation f(n) er O(g(n)) hvis f(n) cg(n) for store n Eksempel: f(n) er O(n ) hvis f(n) cn for store n. n er O(n )? n n for store n. n + er O(n )? n + n for store n. n + n er O(n )? cg(n) f(n) n + n n for store n. n + n er O(n )? n + n = n n for store n. n er O(n )? n cn for alle konstanter c for store n. f(n) er O(g(n)) hvis der findes konstanter c, n0 > 0, således at for alle n n0 gælder at f(n) cg(n) Notation Hvis f(n) er O(g(n)) skriver vi f(n) = O(g(n)). O(g(n)) er en mængde af funktioner. cg(n) Tænk på = som eller. Man kan skrive f(n) = O(n ) men ikke O(n ) = f(n). f(n) n0

20 Opgaver f(n) er Ω(g(n)) hvis der findes konstanter c, n0 > 0, således at for alle n n0 gælder at f(n) cg(n) f(n) = n + n - n f(n) = O(n)? f(n) = O(n )? f(n) = O(n )? g(n) = n + log n g(n) = O(n log n)? g(n) = O(n )? g(n) = O(f(n))? f(n) cg(n) f(n) = O(g(n))? n0 f(n) er Θ(g(n)) hvis f(n) er både O(g(n)) og Ω(g(n)) Flere opgaver Hvilke påstande gælder? n log n = O(n ) c g(n) f(n) c g(n) n + n = Ω(n ) n (n - )/ = Θ(n ) n /00 = Ω(n) n /00 + log n = Θ(n ) log n = O(n) log n + n + = Ω(log n)

21 Egenskaber Typiske køretider a 0 + a n + a n + + a d n d = (n d ) log a (n) = log b n log b a = (log c(n)) for alle konstanter a, b > 0 log(n) =O(n d ) for alle d>0 n d = O(r n ) for alle d>0 og r> for i = to n < Θ() tids operation > for i = to n for j = to n < Θ() tids operation > for i = to n for j = i to n < Θ() tids operation > Typiske køretider T (n) = ( T (n/) + () hvis n> () hvis n = T (n) = ( T (n/) + (n) hvis n> () hvis n = Eksperimentiel analyse T (n) = ( T (n/) + (n) hvis n> () hvis n = T (n) = ( T (n/) + () hvis n> () hvis n =

22 Eksperimentiel analyse Eksempel Hvad hvis man ikke kender teoretisk køretid. Kan man finde den eksperimentielt? Kør programmet for forskellige størrelser og mål køretiden (manuelt eller automatisk). Fordoblingsteknik: Kig på hvilken faktor køretiden vokser med når man fordobler størrelsen af input. Tid vokser med en faktor ~ når input vokser med faktor. Passer med kvadratisk køretid: T(n) = cn T(n) = c(n) = c n = cn T(n)/T(n) = n tid (sekunder) ratio ? Opsummering Teoretisk analyse af algoritmer Køretid Pladsforbrug Asymptotisk notation O, Θ og Ω-notation. Eksperimentiel analyse af algoritmer Introduktion til datastrukturer Philip Bille

23 Plan Datastrukturer Stakke og køer Hægtede lister Dynamiske tabeller Datastrukturer Datastrukturer Datastruktur: Metode til at organise data så det kan søges i/tilgås/ manipuleres effektivt. Mål: kompakt og hurtig. Dynamisk vs. statisk datastruktur. Abstrakt vs. konkret datastruktur. Stakke og køer

24 Stak Implementation med tabel Vedligehold en dynamisk sekvens X af elementer under følgende operationer. Push(x): tilføj et nyt element x til X Pop(): fjern og returner det seneste tilføjede element i X. isempty(): returner sand hvis X ikke indeholder nogle elementer. Implementer en stak med maksimalt N elementer. Datastruktur: Tabel X[..N] Position top i X. Operationer: Push(x): Tilføj x på X[top+], sæt top = top + Pop(): returner X[top], sæt top = top - isempty(): returner sand hvis og kun hvis top =. Tjek for overløb og underløb i Push og Pop. Analyse Kø Hvor hurtigt kører Push, Pop, isempty? Push, Pop, isempty bruger Θ() tid. Hvor meget plads bruger vi? Θ(N) Vedligehold en dynamisk sekvens X af elementer under følgende operationer. Enqueue(x): tilføj et nyt element x til X Dequeue(): fjern og returner det tidligst tilføjede element i X. isempty(): returner sand hvis X ikke indeholder nogle elementer. Den dårlige nyhed: Vi skal kende den maksimale størrelse af stakken fra start. Vi spilder plads når antal elementer i stakken er < N.

25 Implementation med tabel Implementer en kø med maksimalt N elementer. Datastruktur: Tabel X[..N] Positioner head (tidligst indsatte element) og tail (næste ledige element) i X og tæller count (antal elementer i kø). Operationer: Enqueue(x): Tilføj x på X[tail], opdater count og tail cyclisk. Dequeue(): returner X[head], opdater count og head cyclisk. count= count= count= dequeue() dequeue() head tail head tail head tail count= count= count= enqueue() enqueue(9) 9 dequeue() 9 tail head tail head tail head isempty(): returner sand hvis og kun hvis count = 0. Tjek for overløb og underløb i Dequeue og Enqueue. Analyse Stakke og køer Hvor hurtigt kører Dequeue, Enqueue, isempty? Dequeue, Enqueue, isempty bruger Θ() tid. Hvor meget plads bruger vi? Θ(N) Den dårlige nyhed: Vi skal kende den maksimale størrelse af køen fra start. Vi spilder plads når antal elementer i køen er < N. Stak implementeret med tabel Køretid: Push, Pop, isempty i Θ() tid. Pladsforbrug: Θ(N) Kø implementeret med tabel Køretid: Enqueue, Dequeue, isempty i Θ() tid. Pladsforbrug: Θ(N) Kan vi komme ned på lineær plads med samme tid?

26 Hægtede lister Datastruktur til at vedligeholde en sekvens af elementer i lineær plads. Rækkefølge af elementer bestemt af referencer/pegere kaldet hægter. Effektiv at indsætte og fjerne elementer eller delsekvenser af elementer. Hægtede lister Dobbelt-hægtede eller enkelt-hægtede. head null Dobbelt-hægtede lister i Java Hvordan implementerer man dobbelt-hægtede lister i Java? head null null

27 class Node { int key; Node next; Node prev; } Node head = new Node(); Node b = new Node(); Node c = new Node(); head.key = ; b.key = ; c.key = ; head.prev = null; head.next = b; b.prev = head; b.next = c; c.prev = b; c.next = null; head null head null null b b null null c c null null null Node Insert(Node head, Node x) { x.prev = null; x.next = head; head.prev = x; return x; } Node Search(Node head, int value) { Node x = head; while (x = null) { if (x.key == value) return x; x = x.next; } return null; } Node Delete(Node head, Node x) { if (x.prev = null) x.prev.next = x.next; else head = x.next; if (x.next = null) x.next.prev = x.prev; return head; } Analyse Stak og kø implementation med hægtede lister Hvor hurtigt kører Search, Insert og Delete på liste af længde n? Θ(n) for Search Θ() for Insert og Delete Hvor meget plads bruger en hægtet liste af størrelse n? Θ(n) Hvordan kan man implementere stakke og køer med hægtede lister? Stak Push Pop isempty Kø Enqueue Dequeue isempty

28 Stakke og køer Hægtede lister Stak implementeret med hægtet liste Køretid: Push, Pop, isempty i Θ() tid. Pladsforbrug: Θ(n) Fleksibel datastruktur til at vedligeholde en sekvens af elementer i lineær plads. Eksempel på hægtet datastruktur. Findes også cykliske lister, træer, grafer, Kø implementeret med hægtet liste Køretid: Enqueue, Dequeue, isempty i Θ() tid. Pladsforbrug: Θ(n) root null null null 0 null null null null Dynamiske tabeller null null

29 Stak med dynamisk tabel Første forsøg Kan vi implementere en stak effektivt med tabel(ler)? Behøver vi fastsætte en øvre grænse på antallet af elementer? Kan vi komme ned på lineær plads og konstant tid? Mål: Vi vil kun bruge Θ(n) plads for stak med n elementer Ignorer Pop og isempty indtil videre. Datastruktur: Tabel X[..n] Operationer: Push(x): Opret ny tabel af størrelse n+. Flyt alle elementer til ny tabel. Slet gammel tabel. Analyse Andet forsøg Hvor hurtigt kører det? n Push-operationer tager n = Θ(n ) tid. Plads: Θ(n) plads. Ide: Undgå at bygge en tabel og flytte elementer for ofte. Fordobling: Start med tabel af størrelse. Hvis tabel er fuld (antallet af elementer i stak er lig tabellens størrelse). Opret ny tabel af dobbelt størrelse. Flyt elementer over i ny tabel. Slet gammel tabel.

30 Analyse Stak Hvor hurtigt kører det? n Push-operationer tager n/ + n < n = Θ(n) tid. Plads: Θ(n) plads. Stak implementeret med dynamisk tabel Køretid: n Push operationer tager Θ(n) tid. Pladsforbrug: Θ(n) Muligt at opnå n Push, pop og isempty operationer i Θ(n) tid. Tilsvarende resultat for køer Køretiden er amortiseret Θ() per operation. Med snedige tricks: Muligt at deamortisere løsning og opnå Θ() værstefaldskøretid per operation. Opsummering Datastrukturer Stakke og køer Hægtede lister Dynamiske tabeller Prioritetskøer og hobe Philip Bille

31 Plan Prioritetskøer Træer Hobe Repræsentation Prioritetskøoperationer Prioritetskøer Konstruktion af hob Hobsortering Prioritetskø Anvendelser Vedligehold en dynamisk mængde S af elementer. Hver element x er tilknyttet en nøgle x.key. Insert(x): sæt S = S cup {x}. Max(): returner element med største nøgle. Extract-Max(): fjern og returner element med største nøgle. Increase-Key(x, k): sæt x.key = k (vi antager k er større end x.key). Hvad kan vi bruge en prioritetskø til? Skedulering Korteste veje i grafer (Dijkstras algoritme + venner) Mindste udspændende træer i grafer (Prims algoritme) Kompression (Huffmans algoritme)

32 Implementation Hvordan kan vi implementere en prioritetkø med nuværende teknikker? Med hægtet liste: O(n) for Insert, Max, Extract-Max og Increase-Key Med sorteret hægtet liste: O() for Max, Extract-Max Træer O(n) for Insert og Increase-Key. Kan vi gøre det betydeligt bedre? Kræver nye teknikker Rodfæstet træ T. Består af knuder og kanter. Børn, forælder, efterkommer, forfader, blade, interne knuder. Acyklisk sammenhængende graf. Lad v være en knude i T. dybden af v = længden af sti fra v til roden. højden af v = længden af længste sti fra v til en bladefterkommer. dybden af T = højden af T = længden af længste sti fra rod til et blad.

33 Binært træ = alle knuder har børn, kaldet venstre barn og højre barn. Komplet binært træ = alle interne knuder netop børn. Næsten komplet binært træ = komplet binært træ hvor 0 eller flere blade er fjernet fra højre mod venstre. Hvad er sammenhæng mellem antallet af knuder og højden af (næsten) komplet binært træ? 0 k 0 k k 9 n = antal knuder, h = højden. Antal blade = h Antal interne knuder = h- = h - n = h + h - = h+ - h = Θ(log n) (gælder også for næsten komplet binært træ) En hob (heap) er et næsten komplet binært træ så hver knude indeholder et element hver knudes nøgle et højst ligeså stor som dens forælders (hob-orden) Kaldes en max-hob. Tilsvarende kan man definere min-hob.

34 Repræsentation af hobe 0 Hvordan kan vi repræsentere en hob? Vi har brug for effektivt at kunne navigere mellem børn og forælder. 0 9 root null 0 null 0 null null null null null null null null 9 null null null null Prioritetskøoperationer Hvordan kan vi implementere prioritetskøoperationerne? Insert(x): sæt S = S {x}. Max(): returner element med største nøgle. Extract-Max(): fjern og returner element med største nøgle. Increase-Key(x, k): sæt x.key = k (vi antager k er større end x.key) Tabel H[..n]. H[] er rod, H[n] er blad længst til højre. Knude i har venstre barn på i, højre barn på i+ og forælder på i/

35 Insert(x): Indsæt x på næste ledige plads i tabel. Bobl op. Max(): Returner toppen af hob i A[] Extract-Max() r = top af hob. Flyt blad længst til højre til top af hob. Bobl ned (Max-Heapify) Analyse Køretid: Insert, Extract-Max, Increase-Key i O(log n) tid Max i O() tid. Pladsforbrug: O(n) plads. Eksempel på implicit datastruktur. Returner r. Increase-Key(x,k) Sæt x.key = k Bobl op. Konstruktion af hob Lav A[..n] være en tabel af heltal. Hvordan kan vi effektivt bygge en hob ud af tallene i A? (præprocessering) Konstruktion af hob

36 Første forsøg Andet forsøg Sæt alle elementer i A ind i hoben med n Insert operationer. Tid: Θ(n log n) Bygger hoben "oppefra og ned". Kan vi gøre det bedre? Opfat A som næsten komplet binært træ og Etabler hoborden nedefra og op for alle knuder Blade er allerede hobe af størrelse. For hver intern knude, bobl ned. Hvor hurtigt kører det? Konstruktion af hob Givet en tabel A[..n] kan vi bygge en hob i Θ(n) tid. Bruger kun O() ekstra plads. For hver knude af højde h: O(h) tid. ~ n/ knuder af højde, n/ knuder af højde, n/ knuder af højde,..., knude af højde h. n/ + n/ + n/ h = O(n) O(n) tid

37 Hobsortering Lad A[..n] være en tabel. Hobsortering: Byg hob af A. Hobsortering Lav n Extract-Max. Indsæt resultater sidst i tabel i stedet for at slette. Analyse. Byg en hob i Θ(n) tid n Extract-Max i Θ(nlog n) tid. i alt Θ(nlog n) tid. Hobsortering Opsummering Givet en tabel A[..n] kan vi sortere i Θ(n log n) tid. Bruger kun O() ekstra plads. Ækvivalens af sortering og prioritetskøer. Prioritetskøer Træer Hobe Repræsentation Prioritetskøoperationer Konstruktion af hob Hobsortering

38 Plan Uorienterede grafer Anvendelse og modellering med grafer Introduktion til grafer Philip Bille Søgning i grafer Dybdeførst søgning Sammenhængskomponenter Breddeførst søgning Korteste vej Todelte grafer Uorienterede grafer 9 Uorienterede grafer 0 (Uorienterede) grafer består af knuder forbundet med kanter. Hvorfor studere grafer? Modellerer naturligt mange problemer i mange forskellige områder. Tusindvis af praktiske anvendelser. Hundredevis af kendte grafalgoritmer.

39 "Visualizing friendships", Paul Butler Tube map Chesham 9 Chalfont & Latimer Amersham Watford Rickmansworth Uxbridge Ruislip Manor Ickenham Harrow & Wealdstone Harrowon-the-Hill West Harrow South Harrow South Ruislip B Edgware Stanmore Kenton Queensbury Preston Road Kingsbury North Wembley Neasden Wembley Park Kensal Rise Willesden Junction Queen s Park Kilburn High Road Kilburn Park C Maida Vale Warwick Avenue Westbourne Park Park Royal East Acton Ealing Broadway West Acton North Acton Acton Central Ealing Common South Acton D South Ealing Boston Manor Acton Town Chiswick Park Shepherd s Bush White City Wood Lane Shepherd s Bush Market West Kensington Kew Gardens Hounslow Central Richmond Heathrow Terminals,, Heathrow Terminal Baker Street Bond Street Gloucester Road Cannon Street Mansion House Charing Cross Blackfriars Imperial Wharf East Putney Vauxhall Clapham Junction Wandsworth Road Wimbledon Tooting Bec Tooting Broadway Colliers Wood South Wimbledon MAYOR OF LONDON Rotherhithe Morden Bermondsey Heron Quays South Quay East Ham West Ham Devons Road Star Lane Langdon Park Canning Town All Saints Blackwall Poplar C Upton Park Plaistow Royal Victoria East India Custom House for ExCeL Emirates Royal Docks Prince Regent Royal Albert West Silvertown D Beckton Park Cyprus North Greenwich Emirates Greenwich Peninsula Pontoon Dock Gallions Reach London City Airport Beckton King George V Queens Road Peckham Peckham Rye Stockwell New Cross Greenwich Brockley Woolwich Arsenal E Elverson Road Lewisham Hammersmith & City Jubilee Metropolitan Sydenham Northern Penge West Piccadilly Anerley Crystal Palace London metro, London Transport F Norwood Junction West Croydon Central Circle Forest Hill Brixton Bakerloo District District open weekends, public holidays and some Olympia events Deptford Bridge Honor Oak Park Denmark Hill Cutty Sark for Maritime Greenwich New Cross Gate Bank Waterloo & City line open between Bank and Waterloo Mondays to Fridays and Saturdays. Between Waterloo and Bank Mondays to Fridays and Saturdays. Closed Sundays and Public Holidays Camden Town Sunday 00-0 open for interchange and exit only Canary Wharf Step-free interchange between Underground, Canary Wharf DLR and Heron Quays DLR stations at street level Cannon Street Open until 00 Mondays to Fridays and Saturdays. Closed Sundays Embankment Bakerloo and Northern line trains will not stop at this station from early January 0 until early November Emirates Greenwich Peninsula and Emirates Royal Docks Special fares apply. Open Mondays to Fridays, Saturdays, Sundays and Public Holidays. Opening hours are extended by one hour in the evening after April 0 and may be extended on certain events days. Please check close to the time of travel Heron Quays Step-free interchange between Heron Quays and Canary Wharf Underground station at street level Hounslow West Step-free access for manual wheelchairs only Kilburn No step-free access from late January 0 until mid May Stanmore Step-free access via a steep ramp Turnham Green Served by Piccadilly line trains until 00 Mondays to Saturdays, 0 Sundays and after 0 every evening. At other times use District line Waterloo Waterloo & City line open between Bank and Waterloo Mondays to Fridays and Saturdays. Between Waterloo and Bank Mondays to Fridays and Saturdays. Closed Sundays and Public Holidays. No step-free access from late January 0 until late July West India Quay Not served by DLR trains from Bank towards Lewisham before 00 on Mondays to Fridays Key to lines Island Gardens Borough Kennington Upney Barking Canary Wharf Canada Water Crossharbour Elephant & Castle Oval Dagenham Heathway Abbey Road Bromleyby-Bow West India Quay Wapping Mudchute Lambeth North Clapham North F Westferry Limehouse Tower Gateway Surrey Quays Clapham Common Balham Tower Hill Southwark Stepney Green Whitechapel Shadwell River Thames London Bridge Waterloo Pimlico Pudding Mill Lane Elm Park Becontree Woodgrange Park Bow Road Aldgate Fenchurch Street Embankment Clapham South Monument Aldgate East Wanstead Park Mile End B Hornchurch Dagenham East Stratford Bow Church Temple Westminster Clapham High Street Transport for London Bank Upminster Upminster Bridge Leyton Stratford High Street Bethnal Green St. Paul s Holborn Gants Hill Leytonstone High Road Hackney Wick Shoreditch High Street Moorgate Chancery Lane Leicester Square St. James s Park Hoxton Liverpool Street Barbican Piccadilly Circus Victoria Canonbury Dalston Junction Fairlop Barkingside Newbury Park Wanstead Stratford International Homerton Farringdon Russell Square Leytonstone Leyton Midland Road A Redbridge Walthamstow Central Hackney Central Old Street Euston Square Snaresbrook Walthamstow Queen s Road Haggerston Covent Garden Putney Bridge Wimbledon Park Caledonian Road & Barnsbury Tottenham Hale Dalston Kingsland King s Cross St. Pancras Tottenham Court Road Sloane Square South Kensington South Woodford Grange Hill Chigwell Hainault Blackhorse Road Euston Green Park Southfields Mornington Crescent Goodge Street Marble Arch Hyde Park Corner Finsbury Park Highbury & Islington Angel Oxford Circus Fulham Broadway Parsons Green Arsenal Holloway Road Kentish Town Camden Road Camden Town Warren Street Knightsbridge Earl s Court Chalk Farm Great Portland Street West Brompton Hounslow East Hatton Cross Heathrow Terminal Queensway Seven Sisters South Tottenham Tufnell Park Regent s Park Lancaster Gate High Street Kensington Barons Court Hammersmith Turnham Stamford Ravenscourt Brook Park Green Gunnersbury E Holland Park Harringay Green Lanes Manor House Upper Holloway Kentish Town West Bayswater Notting Hill Gate Kensington (Olympia) Goldhawk Road Osterley Hounslow West St. John s Wood Edgware Road Ladbroke Grove Latimer Road North Ealing Northfields Swiss Cottage Edgware Marylebone Road Royal Oak Hanger Lane Paddington Finchley Road South Hampstead Woodford Turnpike Lane Caledonian Road West Hampstead Brondesbury Kensal Green Alperton Roding Valley Crouch Hill Archway Gospel Oak Hampstead Heath Belsize Park Kilburn Brondesbury Park Greenford Perivale Hampstead Finchley Road & Frognal Willesden Green Harlesden Finchley Central Highgate Dollis Hill Stonebridge Park Check before you travel Buckhurst Hill Arnos Grove Bounds Green Wood Green Golders Green Wembley Central Sudbury Hill Loughton Southgate West Finchley East Finchley Brent Cross 9 Debden Oakwood Woodside Park Mill Hill East Colindale Hendon Central South Kenton Northolt Sudbury Town Burnt Oak Canons Park Northwick Park Epping Theydon Bois Hatch End North Harrow Rayners Lane Cockfosters Totteridge & Whetstone Headstone Lane Pinner Eastcote Ruislip Gardens High Barnet Carpenders Park Northwood Northwood Hills Ruislip Bushey Moor Park West Ruislip Hillingdon Watford Junction Watford High Street Croxley Chorleywood A Special fares apply Victoria Waterloo & City DLR London Overground This diagram is an evolution of the original design conceived in 9 by Harry Beck Correct at time of going to print, December 0 Emirates Air Line 9 Protein-protein interaktionsnetværk, Jeong et al, Nature Review Genetics

Orienterede grafer. Orienterede grafer. Orienterede grafer. Orienterede grafer

Orienterede grafer. Orienterede grafer. Orienterede grafer. Orienterede grafer Philip Bille Orienteret graf. Mængde af knuder forbundet parvis med orienterede kanter. deg + (7) =, deg - (7) = Lemma. v V deg - (v) = v V deg + (v) = m. Bevis. Hver kant har netop en startknude og slutknude.

Læs mere

Orienterede grafer. Introduktion Repræsentation Søgning Topologisk sortering og DAGs Stærke sammenhængskomponenter Implicitte grafer.

Orienterede grafer. Introduktion Repræsentation Søgning Topologisk sortering og DAGs Stærke sammenhængskomponenter Implicitte grafer. Orienterede grafer Introduktion Repræsentation Søgning Topologisk sortering og DAGs Stærke sammenhængskomponenter Implicitte grafer Philip Bille Orienterede grafer Introduktion Repræsentation Søgning Topologisk

Læs mere

Orienterede grafer. Orienterede grafer. Orienterede grafer. Vejnetværk

Orienterede grafer. Orienterede grafer. Orienterede grafer. Vejnetværk Philip Bille Orienteret graf (directed graph). Mængde af knuder forbundet parvis med orienterede kanter. Vejnetværk Knude = vejkryds, kant = ensrettet vej. deg + (6) =, deg - (6) = sti fra til 6 8 7 9

Læs mere

Mindste udspændende træ. Mindste udspændende træ. Introduktion. Introduktion

Mindste udspændende træ. Mindste udspændende træ. Introduktion. Introduktion Philip Bille Introduktion (MST). Udspændende træ af minimal samlet vægt. Introduktion (MST). Udspændende træ af minimal samlet vægt. 0 0 Graf G Ikke sammenhængende Introduktion (MST). Udspændende træ af

Læs mere

Korteste veje. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs. Philip Bille

Korteste veje. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs. Philip Bille Korteste veje Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs Philip Bille Korteste veje Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje

Læs mere

Korteste veje. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs. Philip Bille

Korteste veje. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs. Philip Bille Korteste veje Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs Philip Bille Korteste veje Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje

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

Mindste udspændende træ

Mindste udspændende træ Mindste udspændende træ Introduktion Repræsentation af vægtede grafer Egenskaber for mindste udspændende træer Prims algoritme Kruskals algoritme Philip Bille Mindste udspændende træ Introduktion Repræsentation

Læs mere

Mindste udspændende træ. Mindste udspændende træ. Introduktion. Introduktion

Mindste udspændende træ. Mindste udspændende træ. Introduktion. Introduktion Philip Bille Introduktion (MST). Udspændende træ af minimal samlet vægt. Introduktion (MST). Udspændende træ af minimal samlet vægt. 0 0 Graf G Ikke sammenhængende Introduktion (MST). Udspændende træ af

Læs mere

Mindste udspændende træ

Mindste udspændende træ Mindste udspændende træ Introduktion Repræsentation af vægtede grafer Egenskaber for mindste udspændende træer Prims algoritme Kruskals algoritme Philip Bille Mindste udspændende træ Introduktion Repræsentation

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

Introduktion til grafer. Philip Bille

Introduktion til grafer. Philip Bille Introduktion til grafer Philip Bille Plan Uorienterede grafer Anvendelse og modellering med grafer Søgning i grafer Dybdeførst søgning Sammenhængskomponenter Breddeførst søgning Korteste vej Todelte grafer

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. Philip Bille

Introduktion. Philip Bille Introduktion Philip Bille Plan Algoritmer og datastrukturer Toppunkter Algoritme 1 Algoritme 2 Algoritme 3 Algoritmer og datastrukturer Hvad er det? Algoritmisk problem: præcist defineret relation mellem

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

Søgning og Sortering. Philip Bille

Søgning og Sortering. Philip Bille Søgning og Sortering Philip Bille Plan Søgning Linæer søgning Binær søgning Sortering Indsættelsesortering Flettesortering Søgning Søgning 1 4 7 12 16 18 25 28 31 33 36 42 45 47 50 1 2 3 4 5 6 7 8 9 10

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 grafer

Introduktion til grafer Introduktion til grafer Uorienterede grafer Repræsentation Dybdeførst søgning Sammenhængskomponenter Breddeførst søgning Todelte grafer Philip Bille Introduktion til grafer Uorienterede grafer Repræsentation

Læs mere

Søgning og Sortering. Søgning og Sortering. Søgning. Linæer søgning

Søgning og Sortering. Søgning og Sortering. Søgning. Linæer søgning Søgning og Sortering Søgning og Sortering Philip Bille Søgning. Givet en sorteret tabel A og et tal x, afgør om der findes indgang i, så A[i] = x. Sorteret tabel. En tabel A[0..n-1] er sorteret hvis A[0]

Læs mere

Introduktion. Algoritmer og datastrukturer Toppunkter Algoritme 1 Algoritme 2 Algoritme 3. Philip Bille

Introduktion. Algoritmer og datastrukturer Toppunkter Algoritme 1 Algoritme 2 Algoritme 3. Philip Bille Introduktion Algoritmer og datastrukturer Toppunkter Algoritme 1 Algoritme 2 Algoritme 3 Philip Bille Introduktion Algoritmer og datastrukturer Toppunkter Algoritme 1 Algoritme 2 Algoritme 3 Algoritmer

Læs mere

Korteste veje. Korteste veje. Introduktion. Introduktion. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs

Korteste veje. Korteste veje. Introduktion. Introduktion. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs Kortete veje Egenkaber for kortete veje Dijktra algoritme Kortete veje på DAG Kortete veje Egenkaber for kortete veje Dijktra algoritme Kortete veje på DAG Philip Bille Introduktion Kortete veje. Givet

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

Introduktion. Introduktion. Algoritmer og datastrukturer. Eksempel: Maksimalt tal

Introduktion. Introduktion. Algoritmer og datastrukturer. Eksempel: Maksimalt tal Philip Bille Algoritmer og datastrukturer Algoritmisk problem. Præcist defineret relation mellem input og output. Algoritme. Metode til at løse et algoritmisk problem. Beskrevet i diskrete og entydige

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

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

Søgning og Sortering. Søgning Linæer søgning Binær søgning Sortering Indsættelsessortering Flettesortering. Philip Bille

Søgning og Sortering. Søgning Linæer søgning Binær søgning Sortering Indsættelsessortering Flettesortering. Philip Bille Søgning og Sortering Søgning Linæer søgning Binær søgning Sortering Indsættelsessortering Flettesortering Philip Bille Søgning og Sortering Søgning Linæer søgning Binær søgning Sortering Indsættelsessortering

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

Analyse af algoritmer

Analyse af algoritmer Analyse af algoritmer Analyse af algoritmer Køretid Pladsforbrug Asymptotisk notation O, Θ og Ω-notation. Eksperimentiel analyse af algoritmer Philip Bille Analyse af algoritmer Analyse af algoritmer Køretid

Læs mere

Analyse af algoritmer. Analyse af algoritmer. Analyse af algoritmer. Køretid

Analyse af algoritmer. Analyse af algoritmer. Analyse af algoritmer. Køretid Philip Bille Mål. At bestemme og forudsige resourceforbrug og korrekthed af algoritmer Eks. Virker min algoritme til at beregne korteste veje i grafer? Hvor hurtigt kører min algoritme til at søge efter

Læs mere

Korteste veje. Korteste veje. Introduktion. Introduktion. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs

Korteste veje. Korteste veje. Introduktion. Introduktion. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs Kortete veje Egenkaber for kortete veje Dijktra algoritme Kortete veje på DAG Kortete veje Egenkaber for kortete veje Dijktra algoritme Kortete veje på DAG Philip Bille Introduktion Kortete veje. Givet

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

Korteste veje. Korteste veje. Introduktion. Introduktion. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs

Korteste veje. Korteste veje. Introduktion. Introduktion. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs Kortete veje Egenkaber for kortete veje Dijktra algoritme Kortete veje på DAG Kortete veje Egenkaber for kortete veje Dijktra algoritme Kortete veje på DAG Philip Bille Introduktion Kortete veje. Givet

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

Introduktion til grafer. Introduktion til grafer. Uorienterede grafer. Visualisering af internettet. Uorienterede grafer Repræsentation

Introduktion til grafer. Introduktion til grafer. Uorienterede grafer. Visualisering af internettet. Uorienterede grafer Repræsentation Dybdeført øgning Dybdeført øgning Philip Bille Uorienterede grafer Viualiering af internettet Uorienteret graf (undirected graph). Mængde af knuder (vertice) forbundet parvi med kanter (edge). knude kant

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 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

Grafer og graf-gennemløb

Grafer og graf-gennemløb Grafer og graf-gennemløb Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges). Dvs. ordnede par af knuder. Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges).

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

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

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

DM02 Kogt ned. Kokken. Januar 2006

DM02 Kogt ned. Kokken. Januar 2006 DM02 Kogt ned Kokken Januar 2006 1 INDHOLD Indhold 1 Asymptotisk notation 2 2 Algoritme analyse 2 3 Sorterings algoritmer 2 4 Basale datastrukturer 3 5 Grafer 5 6 Letteste udspændende træer 7 7 Disjunkte

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

Grafer og graf-gennemløb

Grafer og graf-gennemløb Grafer og graf-gennemløb Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges). Dvs. ordnede par af knuder. Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges).

Læs mere

Grafer og graf-gennemløb

Grafer og graf-gennemløb Grafer og graf-gennemløb Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges). Dvs. ordnede par af knuder. Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges).

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

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

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

Grafer og graf-gennemløb

Grafer og graf-gennemløb Grafer og graf-gennemløb Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges). Dvs. ordnede par af knuder. Figur: Terminologi: n = V, m = E (eller V og E (mis)bruges som V og E ).

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

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti.

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti. Korteste veje Korteste veje i vægtede grafer Længde af sti = sum af vægte af kanter på sti. Korteste veje i vægtede grafer Længde af sti = sum af vægte af kanter på sti. δ(u, v) = længden af en korteste

Læs mere

Grafer og graf-gennemløb

Grafer og graf-gennemløb Grafer og graf-gennemløb Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges). Dvs. ordnede par af knuder. Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges).

Læs mere

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti.

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti. Korteste veje Korteste veje i vægtede grafer Længde af sti = sum af vægte af kanter på sti. Korteste veje i vægtede grafer Længde af sti = sum af vægte af kanter på sti. δ(u, v) = længden af en korteste

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

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

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

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

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. 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

Minimum udspændende Træer (MST)

Minimum udspændende Træer (MST) Minimum udspændende Træer (MST) Træer Et (frit/u-rodet) træ er en uorienteret graf G = (V, E) som er Sammenhængende: der er en sti mellem alle par af knuder. Acyklisk: der er ingen kreds af kanter. Træer

Læs mere

Forén og find. Introduktion Hurtig find Hurtig forening Vægtet forening Stikompression Dynamiske sammenhængskomponenter.

Forén og find. Introduktion Hurtig find Hurtig forening Vægtet forening Stikompression Dynamiske sammenhængskomponenter. Forén og find Introduktion Hurtig find Hurtig forening Vægtet forening Stikompression Dynamiske sammenhængskomponenter Philip Bille Forén og find Introduktion Hurtig find Hurtig forening Vægtet forening

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

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

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti.

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti. Korteste veje Korteste veje i vægtede grafer Længde af sti = sum af vægte af kanter på sti. Korteste veje i vægtede grafer Længde af sti = sum af vægte af kanter på sti. δ(u, v) = længden af en korteste

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

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

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

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

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

Forén og find. Introduktion Hurtig find Hurtig forening Vægtet forening Stikompression Dynamiske sammenhængskomponenter.

Forén og find. Introduktion Hurtig find Hurtig forening Vægtet forening Stikompression Dynamiske sammenhængskomponenter. Forén og find Introduktion Hurtig find Hurtig forening Vægtet forening Stikompression Dynamiske sammenhængskomponenter Philip Bille Forén og find Introduktion Hurtig find Hurtig forening Vægtet forening

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

Dynamisk programmering

Dynamisk programmering Dynamisk programmering Dynamisk programmering Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Har en hvis lighed med divide-and-conquer: Begge opbygger løsninger til større problemer

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

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 Tirsdag den 24. juni 2014, kl. 10:00 14:00 Besvarelsen skal afleveres elektronisk. Se

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

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

Danmarks Tekniske Universitet

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

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet ksamen 06, F side af sider anmarks Tekniske Universitet Skriftlig prøve, den 9. maj 0. ursusnavn: lgoritmer og datastrukturer ursus nr. 06. jælpemidler: Skriftlige hjælpemidler. et er ikke tilladt at medbringe

Læs mere

Divide-and-Conquer algoritmer

Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer (af samme type). 2. Løs delproblemerne ved rekursion (dvs. kald algoritmen

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

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

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

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

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

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

Divide-and-Conquer algoritmer

Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer

Læs mere

Sammenhængskomponenter i grafer

Sammenhængskomponenter i grafer Sammenhængskomponenter i grafer Ækvivalensrelationer Repetition: En relation R på en mængde S er en delmængde af S S. Når (x, y) R siges x at stå i relation til y. Ofte skrives x y, og relationen selv

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

Divide-and-Conquer algoritmer

Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer

Læs mere

BRP Sortering og søgning. Hægtede lister

BRP Sortering og søgning. Hægtede lister BRP 18.10.2006 Sortering og søgning. Hægtede lister 1. Opgaver 2. Selection sort (udvælgelsessortering) 3. Kompleksitetsanalyse 4. Merge sort (flettesortering) 5. Binær søgning 6. Hægtede lister 7. Øvelser:

Læs mere

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET INSTITUT FOR DTLOGI, RHUS UNIVERSITET Science and Technology EKSEN lgoritmer og Datastrukturer (00-ordning) ntal sider i opgavesættet (incl. forsiden): 11 (elleve) Eksamensdag: Torsdag den 1. juni 01,

Læs mere

Divide-and-Conquer algoritmer

Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer

Læs mere

Dynamisk programmering

Dynamisk programmering Dynamisk programmering Dynamisk programmering Optimeringsproblem: man ønsker at finde bedste den kombinatoriske struktur blandt mange mulige. Dynamisk programmering Optimeringsproblem: man ønsker at finde

Læs mere

DM507 - Algoritmer og datastrukturer

DM507 - Algoritmer og datastrukturer - Algoritmer og datastrukturer Køretid g(n) Udtryk Beskrivelse lim n f(n) o(f) Vokser langsommere end f = 0 O(f) Vokser højst så hurtigt som f < Θ(f) Vokser som f = c(c > 0) Ω(f) Vokser mindst så hurtigt

Læs mere

Introduktion til grafer. Introduktion til grafer. Visualisering af internettet. Uorienterede grafer

Introduktion til grafer. Introduktion til grafer. Visualisering af internettet. Uorienterede grafer Philip Bille Uorienterede grafer Viualiering af internettet Uorienteret graf (undirected graph). Mængde af knuder (vertice) forbundet parvi med kanter (edge). knude kant Hvorfor grafer? Modellerer naturligt

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET INSTITUT FOR DTOI, RUS UNIVERSITET Science and Technology ESEN lgoritmer og Datastrukturer (00-ordning) ntal sider i opgavesættet (incl. forsiden): (elleve) Eksamensdag: Fredag den. juni 0, kl. 9.00-.00

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

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

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

Dynamisk programmering

Dynamisk programmering Dynamisk programmering Dynamisk programmering Optimeringsproblem: man ønsker at finde bedste den kombinatoriske struktur (struktur opbygget af et endeligt antal enkeltdele) blandt mange mulige. Eksempler:

Læs mere