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

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

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

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

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

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

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

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

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

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

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 6. maj 0. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer Vægtning

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

28 Algoritmedesign. Noter. PS1 -- Algoritmedesign

28 Algoritmedesign. Noter. PS1 -- Algoritmedesign 28 Algoritmedesign. Algoritmeskabelon for Del og Hersk. Eksempler på Del og Hersk algoritmer. Binær søgning i et ordnet array. Sortering ved fletning og Quicksort. Maksimal delsums problem. Tætteste par

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 lukket kreds af kanter

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

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

Inspiration - London. Herunder inspiration til nogle af Londons mest spændende og lærerige seværdigheder.

Inspiration - London. Herunder inspiration til nogle af Londons mest spændende og lærerige seværdigheder. Inspiration - London. Herunder inspiration til nogle af Londons mest spændende og lærerige seværdigheder. Seværdigheder. Tower Bridge & Tower of London Tate museum of Modern Art British Museum Big Ben

Læs mere

Vægtede grafer. I en vægtet graf har enhver kant tilknyttet en numerisk værdi, kaldet kantens vægt

Vægtede grafer. I en vægtet graf har enhver kant tilknyttet en numerisk værdi, kaldet kantens vægt Korteste veje 1 Vægtede grafer HNL I en vægtet graf har enhver kant tilknyttet en numerisk værdi, kaldet kantens vægt Vægte kan repræsentere afstande, omkostninger, o.s.v. Eksempel: I en flyrutegraf repræsenterer

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

Førsteårsprojekt F2008 Flere grafalgoritmer, og visualisering SØGES

Førsteårsprojekt F2008 Flere grafalgoritmer, og visualisering SØGES Førsteårsprojekt F2008 Flere grafalgoritmer, og visualisering Peter Sestoft 2008-03-11* SØGES 1-2 studerende til Åbent Hus torsdag 10. april kl 1700-1800 Skal kunne fortælle 5-10 minutter om hvad hvordan

Læs mere

Grafer / Otto Knudsen 20-11-06

Grafer / Otto Knudsen 20-11-06 Grafer / Otto Knudsen -- Grafer Definition En graf er pr. definition et par G = (V, E). Grafen består af en mængde knuder V (eng: vertices) og en mængde kanter E (eng: edges), som forbinder knuderne. A

Læs mere

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET NSTTUT OR TO, RUS UNVRSTT Science and Technology SN lgoritmer og atastrukturer (00-ordning) ntal sider i opgavesættet (incl. forsiden): 11 (elleve) ksamensdag: redag den 1. august 015, kl. 9.00-.00 Tilladte

Læs mere

Førsteårsprojekt F2008. Nogle algoritmer på grafer

Førsteårsprojekt F2008. Nogle algoritmer på grafer Førsteårsprojekt F2008 Nogle algoritmer på grafer Peter Sestoft 2008-02-19 Oversigt for i dag Definition: graf og orienteret graf Repræsentation ved kantlister Bredde-først gennemløb Dybde-først gennemløb

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2012 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 29. april, 2012 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

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æ

Læs mere

Rolf Fagerberg. Forår 2012

Rolf Fagerberg. Forår 2012 Forår 2012 Mål for i dag Dagens program: 1 2 3 4 5 6 Forudsætninger: DM502 og DM503 Timer: 50% forelæsninger, 50% øvelser Forudsætninger: DM502 og DM503 Eksamenform: Skriftlig eksamen: Timer: 50% forelæsninger,

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

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

Inspiration - London. Herunder inspiration til nogle af Londons mest spændende og lærerige seværdigheder.

Inspiration - London. Herunder inspiration til nogle af Londons mest spændende og lærerige seværdigheder. Inspiration - London. Herunder inspiration til nogle af Londons mest spændende og lærerige seværdigheder. Seværdigheder. Tower Bridge & Tower of London Tate museum of Modern Art British Museum Big Ben

Læs mere

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET STTUT R T, RUS UVRSTT Science and Technology S lgoritmer og atastrukturer (00-ordning) ntal sider i opgavesættet (incl. forsiden): (elleve) ksamensdag: Tirsdag den. august 0, kl. 9.00-.00 Tilladte medbragte

Læs mere

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel:

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel: Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel: Opbyg løsningen skridt for skridt ved hele tiden af vælge lige

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

.. if L(u) + w(u, v) < L(v) then.. begin... L(v) := L(u) + w(u, v)... F (v) := u.. end. med længde L(z)}

.. if L(u) + w(u, v) < L(v) then.. begin... L(v) := L(u) + w(u, v)... F (v) := u.. end. med længde L(z)} Procedure Dijkstra(G = (V, E): vægtet sh. graf,. a, z: punkter) { Det antages at w(e) > 0 for alle e E} For alle v V : L(v) := L(a) := 0, S := while z / S begin. u := punkt ikke i S, så L(u) er mindst

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

Sommeren 2001, opgave 1

Sommeren 2001, opgave 1 Sommeren 2001, opgave 1 Vi antager at k 3, da det ellers er uklart hvordan trekanterne kan sættes sammen i en kreds. Vi ser nu at for hver trekant er der en knude i kredsen, og en spids. Derfor er n =

Læs mere

Oplæg og øvelser, herunder frugt og vand Gerth Stølting Brodal

Oplæg og øvelser, herunder frugt og vand Gerth Stølting Brodal Oplæg og øvelser, herunder frugt og vand Gerth Stølting Brodal Datalogisk Institut Aarhus Universitet MasterClass Matematik, Mærsk Mc-Kinney Møller Videncenter, Sorø, 29-31. oktober 2009 Algoritmer: Matricer

Læs mere

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jens Myrup Pedersen (JMP) Mm4: Sorting algorithms - October 23, 2009

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jens Myrup Pedersen (JMP) Mm4: Sorting algorithms - October 23, 2009 Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jens Myrup Pedersen (JMP) Mm4: Sorting algorithms - October 3, 009 Algorithms and Architectures II. Introduction to analysis and design of

Læs mere

Symmetrisk Traveling Salesman Problemet

Symmetrisk Traveling Salesman Problemet Symmetrisk Traveling Salesman Problemet Videregående Algoritmik, Blok 2 2008/2009, Projektopgave 2 Bjørn Petersen 9. december 2008 Dette er den anden af to projektopgaver på kurset Videregående Algoritmik,

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): 6 (seks) Eksamensdag: Fredag den 25. juni 200, kl. 9.00-.00

Læs mere

DATALOGISK INSTITUT, AARHUS UNIVERSITET

DATALOGISK INSTITUT, AARHUS UNIVERSITET DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Algoritmer og Datastrukturer (00-ordning) Antal sider i opgavesættet (incl. forsiden): 6 (seks) Eksamensdag:

Læs mere

Rolf Fagerberg. Forår 2015

Rolf Fagerberg. Forår 2015 Forår 2015 Dagens program 1 2 3 4 5 Underviser:, IMADA Forskningsområde: algoritmer og datastrukturer Underviser:, IMADA Forskningsområde: algoritmer og datastrukturer Deltagere: BA i Datalogi BA i Software

Læs mere

En karakteristik af de regulære sprog. Ugens emner. FA minimering [5.1-5.2] MyHill-Nerode-sætningen en algoritme til minimering af FA er

En karakteristik af de regulære sprog. Ugens emner. FA minimering [5.1-5.2] MyHill-Nerode-sætningen en algoritme til minimering af FA er Ugens emner FA minimering [.-.] MyHill-Nerode-sætningen en algoritme til minimering af FA er En karakteristik af de regulære sprog Et sprog L er regulært hvis og kun hvis L beskrives af et regulært udtryk

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

Løs til optimalitet i eksponentiel tid Find tilnærmet løsning i polynomielt tid Optimeringsproblemer kan ikke altid verificeres i polynomiel

Løs til optimalitet i eksponentiel tid Find tilnærmet løsning i polynomielt tid Optimeringsproblemer kan ikke altid verificeres i polynomiel I dag Løsning af NP -hårde optimeringsproblemer Repetition: branch-and-bound Flere begreber Konkret eksempel: TSP Lagrange relaxering Parallel branch-and-bound 1 Opsummering Løsning af NP -hårde optimeringsproblemer

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

TUREN GÅR TIL LONDON GUNHILD RISKE 24. UDGAVE

TUREN GÅR TIL LONDON GUNHILD RISKE 24. UDGAVE TUREN GÅR TIL LONDON GUNHILD RISKE 24. UDGAVE Hampstead Heath Holloway Road Hackney Marshes High Road Finchley Road Road CAMDEN Camden Westway NOTTING HILL Holland Avenue Earls Court KENSINGTON Fulham

Læs mere

Rolf Fagerberg. Forår 2015

Rolf Fagerberg. Forår 2015 Forår 2015 Dagens program 1 2 3 4 5 Underviser:, IMADA Forskningsområde: algoritmer og datastrukturer Deltagere: BA i Datalogi BA i Software Engineering BA i Matematik-Økonomi BA i Anvendt Matematik BA

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET INSTITUT FOR ATALOGI, AARHUS UNIVERSITET Science and Technology EKSAMEN Algoritmer og atastrukturer (00-ordning) Antal sider i opgavesættet (incl. forsiden): (elleve) Eksamensdag: Fredag den. august 0,

Læs mere

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528)

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528) Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM58) Institut for Matematik & Datalogi Syddansk Universitet Torsdag den 7 Januar 010, kl. 9 13 Alle sædvanlige hjælpemidler (lærebøger,

Læs mere

Reeksamen i Diskret Matematik

Reeksamen i Diskret Matematik Reeksamen i Diskret Matematik Første Studieår ved Det Teknisk-Naturvidenskabelige Fakultet 21. august 2015 Nærværende eksamenssæt består af 10 nummererede sider med ialt 17 opgaver. Tilladte hjælpemidler:

Læs mere

Binære søgetræer. Nærmeste naboer Binære søgetræer Indsættelse Predecessor og successor Sletning Algoritmer på træer og trægennemløb.

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

Læs mere

Induktive og rekursive definitioner

Induktive og rekursive definitioner Induktive og rekursive definitioner Denne note omhandler matematiske objekter, som formelt er opbygget fra et antal basale byggesten, kaldet basistilfælde eller blot basis, ved gentagen brug af et antal

Læs mere

Algoritmer og invarianter

Algoritmer og invarianter Algoritmer og invarianter Iterative algoritmer Algoritmen er overordnet set een eller flere while eller for-løkker. Iterative algoritmer Algoritmen er overordnet set een eller flere while eller for-løkker.

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

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

Rolf Fagerberg. Forår 2014

Rolf Fagerberg. Forår 2014 Forår 2014 Mål for i dag Dagens program: 1 2 3 4 5 6 Forudsætninger: Format: Programmering og Diskret matematik I (forelæsninger), TE (øvelser), S (arbejde selv og i studiegrupper) Eksamenform: Skriftlig

Læs mere

Regulære udtryk og endelige automater

Regulære udtryk og endelige automater Regulære udtryk og endelige automater Regulære udtryk: deklarative dvs. ofte velegnede til at specificere regulære sprog Endelige automater: operationelle dvs. bedre egnet til at afgøre om en given streng

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

Et udtrykstrç med de ære regnearter, heltalskonstanter og variabler beskrives. Type Expr = Sumèplus, minus, times, div: Args, const: Int, name: Textè

Et udtrykstrç med de ære regnearter, heltalskonstanter og variabler beskrives. Type Expr = Sumèplus, minus, times, div: Args, const: Int, name: Textè Opgave 1 è20èè Et udtrykstrç med de ære regnearter, heltalskonstanter og variabler beskrives af fçlgende rekursive Trine-type: Type Expr = Sumèplus, minus, times, div: rgs, const: Int, name: Textè Type

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter Skriftlig eksamen i Datalogi Modul 1 Vinter 1998/99 Opgavesættet består af 5 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 16% Opgave 2 12% Opgave 3 10% Opgave

Læs mere