28 Algoritmedesign. Noter. PS1 -- Algoritmedesign

Størrelse: px
Starte visningen fra side:

Download "28 Algoritmedesign. Noter. PS1 -- Algoritmedesign"

Transkript

1 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 af punkter i et plan. Multiplikation af to heltal. Hanois Tårne. Dynamisk programmering. Algoritmeskabelon for Dynamisk Programmering. Beregning af Fibonaccital ved Dynamisk programmering. Knapsack problemet og veksleproblemet. 395

2 Algoritmeskabelon for Del og Hersk. Løsning af problemet P: Opdel P problemet i et antal delproblemer P1, P2,... Pn. Løs hver af delproblemerne Pi, og få del-løsningerne Li, i = 1.. n. Kombiner del-løsningerne Li, i = 1..n, til en løsning L af det samlede problem P. Løs-del-og-hersk(P: Problem_type): Løsning-type is do If P er et simpelt problem then returner den umiddelbare løsning af P else Opdel P i delproblemerne P1, P2,... Pn ; Let L1 be Løs-del-og-hersk(P1).. Ln be Løs-del-og-hersk(Pn) in Kombiner L1 og... og Ln til L ; returner L end --Løs I forbindelse med sortering har vi tidligere på kurset set to gode eksempler på del og hersk algoritmer: Sortering ved fletning og quicksort. Disse adskiller sig dog ved at quicksort bruger O(n) til på opdelingen af problemet i to delproblemer og at sortering ved fletning bruger O(n) tid på kombinationen af de to delløsninger til en samlet løsning på det store problem. Det er det mest almindelige og typiske at der betales en eller anden ikke konstant pris for kombinationen af delløsninger, og at problemopdelingen er billig (ofte af konstant køretid). Både quicksort og sortering ved fletning gav anledning til de samme rekursionsligninger for køretiden: T(1) = 1 T(n) = 2 T(n/2) + c n hvilke som bekendt har løsningen T(n) = n log(n). En stor delmængde af del-og-hersk algoritmer kan beskrivives ved et generaliseret ligningssystem: T(1) = 1 T(n) = a T(n/b) + c n k Denne ligning afspejler at der løses a delproblemer, som hver er 1/b-te del af n s størrelse. Løsningen på ligningerne fremgår af sætning 10.6 i Weiss. 396

3 Det maksimale delsumsproblem (1). Problemet: Givet et array med n heltal a 1,..., a n. Find den maksimale delsum j Σ a i k = i dog således, at resultatet er 0 hvis alle tal a 1,..., a n er negative. Simpel løsning: Systematisk gennemsøgning af alle mulige dellister: O(n 2 ) Del og Hersk løsning: Maks-venstre-midt Maks-højre-midt Venstre del Højre del En løsning på problemet er den største delsum i enten Den venstre del, eller Den højre del, eller En del, som krydser midten. Eksempel: i: a[i]: Arrayet a opdeles i en venstre del a[1..5] og en højre del a[6..10]. I den venstre del er a[1..4] den maksimale delsum (sum 10). I den højre del er a[7..9] en maksimal delsum (sum 6). Over midten er a[1..9] den maksimale delsum (sum 13). Det er klart at det her er midtersummet som bliver det samlede resultat. 397

4 Det maksimale delsumsproblem (2). Maksimal-delsum(a: array[integer]; v, h: integer): integer: if v = h then returner max(a[v], 0) else center := (v + h) div 2; venstre-sum := Maksimal-delsum(a, v, center); højre-sum := Maksimal-delsum(a, center+1, h); let maks-venstre-midt be den største delsum i venstre del som indeholder a[center] maks-højre-midt be den største delsum i højre del, som indeholder a[center+1] returner max(venstre-sum, højre-sum, maks-venstre-midt + maks-højre-midt) Køretidsfunktion: n = antal elementer i array. T(n) = n logn T(1) = 1 T(n) = 2 T(n/2) + n + 1 Løsning af midter problemet Kombinationsarbejdet Løsningen af de to delproblemer af den halve størrelse Der henvises til afsnit i Weiss, samt figur 2.7, for en mere præcis beskrivelse af ovenstående algoritme. 398

5 Den minimale afstand mellem to punkter i et plan. Problemet: Find den minimale afstand mellem to forskellig punkter i planen. d m d r y d l x Dette problem beskrives i detaljer i Weiss afsnit Ovenstående illustration vil tjene som udgangspunkt af en diskusion af en effektiv del og hersk løsning ved forelæsningen. 399

6 Multiplikation af to tal. Problemet: To store n-cifrede tal x og y ønskes multipliceret. Simpel løsning: Skolebogs multiplikation. Eksempel: Køretid: O(n 2 ) Ad A T(1) = 1 T(n) = 4 T(n/2) + cn T(n) = Θ(n 2 ) Del og Hersk løsning: x = x left. 10 i + x right y = y left. 10 i + y right Ad B T(1) = 1 T(n) = 3 T(n/2) + cn T(n) = Θ(n 1.59 ) x y = x left y left. 10 2i + (x left y right + x right y left ) 10 i + x right y right = x left y left. 10 2i + ((x left - x right ) (y right - y left ) + x left. y left + x right y right )10 i + x right y right (A) (B) Weiss behandler dette problem i afsnit

7 Towers of Hanoi (1). Venstre Midterste Højre Givet: Et antal skiver på venstre stang, hvor mindre skiver er placeret oven på større skiver. Problemet: Flytte stakken af skiver fra venstre til højre stang, således at skiverne flyttes én ad gangen. en større skive må aldrig placeres oven på en mindre skive undervejs i flytteprocessen. I Towers og Hanoi opdeles det oprindelige problem i to delproblemer, som begge er én mindre end det oprindelige problem. Dette fremgår klart af detaljerne på næste slide. Derved kan Towers of Hanoi siges at være en del og hersk algoritme, omend den er væsensforskellig fra de andre eksempler, vi har studeret. Det viser sig, at de to delproblemer er overlappende. Dette bliver årsagen til, at køretiden for Towers of Hanoi er eksponentiel. Dette er et iboende problem i Towers of Hanoi. I resten af dette kapitel vil vi imidlertid se på et antal tilsvarende overlappende del og hersk problemer, hvor vi kan høste en betydelig gevinst ved at tage hånd om overlappet i delproblemerne (og dermed også i løsningerne). 401

8 Towers of Hanoi (2). Hanoi (n: integer; A, B, C: stang) -- Et antal skiver >= n befinder sig på stang A. -- Flyt de n øverste af disse over på stang B, -- med brug af stang C som "mellemstation" If n = 1 then Flyt_én_skive(A, B) else Hanoi (n-1, A, C, B); Flyt_én_skive(A, B); Hanoi (n-1, C, B, A); Hanoi(3, venstre, højre, midten): 1: venstre -> højre 2: venstre -> midten 1: højre -> midten 3: venstre -> højre 1: midten -> venstre 2: midten -> højre 1: venstre -> højre Lad T(n) betegne antallet af "skive flytninger". T(1) = 1 T(n) = T(n - 1) T(n) = O(2 n ) Hanoi(4, venstre, højre, midten): 1: venstre -> midten 2: venstre -> højre 1: midten -> højre 3: venstre -> midten 1: højre -> venstre 2: højre -> midten 1: venstre -> midten 4: venstre -> højre 1: midten -> højre 2: midten -> venstre 1: højre -> venstre 3: midten -> højre 1: venstre -> midten 2: venstre -> højre 1: midten -> højre Der er ovenfor vist eksempler på Towers of Hanoi for n=3 og n=4. Hvert kald af proceduren Flyt-én-skive give anledning til et primitiv bidrag til løsningen på formen: i: x -> y hvor x og y er enten venstre, midten eller højre. Symbolet i er værdien af parameteren n i den inkarnation af Hanoi, som forårsagede trækket. 402

9 Towers of Hanoi (3). Hanoi(5, venstre, midter, højre): Hanoi 5 venstre midter højre Hanoi 4 venstre højre midter Hanoi 3 venstre midter højre Hanoi 2 venstre højre midter Hanoi 1 venstre midter højre Hanoi 1 midter højre venstre Hanoi 2 højre midter venstre Hanoi 1 højre venstre midter Hanoi 1 venstre midter højre Hanoi 3 midter højre venstre Hanoi 2 midter venstre højre Hanoi 1 midter højre venstre Hanoi 1 højre venstre midter Hanoi 2 venstre højre midter Hanoi 1 venstre midter højre Hanoi 1 midter højre venstre Hanoi 4 højre midter venstre Hanoi 3 højre venstre midter Hanoi 2 højre midter venstre Hanoi 1 højre venstre midter Hanoi 1 venstre midter højre Hanoi 2 midter venstre højre Hanoi 1 midter højre venstre Hanoi 1 højre venstre midter Hanoi 3 venstre midter højre Hanoi 2 venstre højre midter Hanoi 1 venstre midter højre Hanoi 1 midter højre venstre Hanoi 2 højre midter venstre Hanoi 1 højre venstre midter Hanoi 1 venstre midter højre Denne slide viser de rekursive kald, i stedet for de primitive flytninger i Towers of Hanoi. Det bemærkes, at store dele af processen gentager sig selv (de to afsnit med fed skrift, og de to afsnit med kursiv skrift) 403

10 Introduktion til Dynamisk Programmering : Fibonacci tal (1). fib(n: integer): integer is local fib_part1, fib_part2: integer do if n = 0 then result := 0 elsif n = 1 then result := 1 else if fib_husker.er_beregnet(n - 1) then fib_part1 := fib_husker.værdi(n - 1) else fib_part1 := fib(n - 1); fib_husker.husk(n-1, fib_part1) end; if fib_husker.er_beregnet(n - 2) then fib_part2 := fib_husker.værdi(n - 2) else fib_part2 := fib(n - 2); fib_husker.husk(n -2, fib_part2) end; result := fib_part1 + fib_part2; end end; fib_husker: hukommelse[integer, integer];... class hukommelse[t,s] -- Afbilder en værdi af type T til -- den huskede værdi af typen S feature husk(x:t, y: S) -- x huskes til at have værdi y er_beregnet(x:t): boolean -- returnerer hvorvidt der er husket en -- værdi for x. værdi(x:t):s -- returner den huskede værdi for x require er_beregnet(x) end; Køretidsfunktion T. Problemstørrelse n. T(n) = O(n). Denne slide viser en modificeret udgave af den rekursive udgave af Fibonaccital beregning, som vi har set på ved adskillige lejligheder på dette kursus. Der mindes om, at køretiden R(n) af den rekursive Finoaccitals funktion er ((3/2) n ), altså også af eksponentiel tidskompleksitet. Ideen er at undgå genberegninger af fib(n), for givne n. Dertil har vi introduceret en instans af en klasse, som kaldes Hukommelse. Et objekt af denne klasse afbilder et problem til en løsning; I vort tilfælde f.eks. problemet af bregne fib(6) som har løsningen 8. Intern vil det være attraktive at bruge en hashtabel til realisering af afbildningen. 404

11 Introduktion til Dynamisk Programmering : Fibonacci tal (2). F6 F5 F4 F4 F3 F3 F2 F3 F2 F2 F1 F2 F1 F0 F1 F2 F1 F0 F1 F0 F1 F0 F1 F0 F1 Denne slide illustrerer beregningsprocessen for fib(6), her kaldet F6. Figuren svarer til figur i Weiss. De fede afsnit i figuren beregnes og huskes i hukommelsen. De kursiverede afsnit tages fra hukommelsen. Først lægges F2 ind, så F3, F4, F5 og tilsidst F6. Når F2 skal benyttes ifm. beregningen af F4 kan F2 trækkes F2 ud af tabellen i stedet for at skulle genberegnes. Endnu større gevinst er der med F3 og F4 ifm. beregning af hhv. F5 og F6. Det er let ud fra figuren at se, at fib, med brug af denne teknik, har køretid der er lineær i n. Dette er en dramatisk forandring i forhold til den tidligere eksponentielle tidskompleksitet. Bemærk dog, at pladskompleksiteten er vokset med denne løsning (fra konstant til lineær pladsforbrug i n). I litteraturn kaldes ovenstående, generelt anvendelige teknik ofte for dynamisk programmering. Andre steder tales der om memoization. 405

12 Algoritmeskabelon for Dynamisk Programmering. Husker: hukommelse[problem_type, Løsning-type] Løs-dynamisk-prog(P: Problem_type): Løsning-type is do If Husker.er-bereget(P) then returner Husker.værdi(P) else If P er et simpelt problem then returner den umiddelbare løsning af P else Opdel P i delproblemerne P1, P2,... Pn ; Let L1 be Løs-dynamisk-prog(P1).. Ln be Løs-dynamisk-prog(Pn) in Kombiner L1 og... og Ln til L ; Husker.husk(P, L); returner L end --Løs-dynamisk-prog Ovenstående forståes bedst som en videreudvikling af skabelonen for Del og Hersk som er vist tidligere i dette kapitel. Vi har tilføjet administrationen af huskede løsninger på problemer via en instans af klassen Hukommelse. 406

13 Knapsack problemet (1). Problemet: Givet n typer af objekter, som har hhv. værdi v j og vægt m j, j = 1.. n. Fyld en rygsæk med objekter (0, 1 eller flere af type 1; 0, 1 eller flere af type 2,...) således at rygsækken ender med at have den størst mulige værdi uden at overskride totalvægt T. Simpel løsning: Masse, værdi: array[1..n] of integer;... Knapsack(totalvægt: integer): integer: var resultat_værdi: integer result-værdi := 0 ; T(m) = n for j := 1 to n do m+1 if masse[j] <= totalvægt then resultat-værdi := max(resultat_værdi, værdi[j] + Knapsack(totalvægt - masse[j]) ); return resultat-værdi Køretidsfunktion T. Problemstørrelse: totalvægten. Hvis m j = 1, j = 1.. n T(0) = n T(m) = n * T(m -1) Resultatet af funktionen er den opnåelige maksimale værdi af rygsækkens indhold. Det kan observeres, at Knapsack funktionen kan kaldes mange gange med den samme totalvægt. Ved hvert kald udføres den samme (dyre) beregning af den maksimale værdi relativ til totalvægten. Ligesom de andre problemer, vi har studeret, er nøglen til en forbedring at memoizere allerede løste delproblemer, og deres løsninger. Dette vises på næste slide. 407

14 Knapsackproblemet (2) Masse, værdi: array[1..n] of integer; Køretidsfunktion T. Problemstørrelse: totalvægten (m). T(m) = O(m. n) husker: hukommelse(integer, integer);... Knapsack(totalvægt: integer): integer: var resultat_værdi: integer; if husker.er-beregnet(totalvægt) then return husker.værdi(totalvægt) else result-værdi := 0 ; for j := 1 to n do if masse[j] <= totalvægt then resultat-værdi := max(resultat_værdi, værdi[j] + Knapsack(totalvægt - masse[j]) ) ; husker.husk(total_vægt, resultat-værdi) return resultat-værdi Vi postulerer ovenstående køretidsresultat. 408

15 Variation af Knapsack problemet: Veksleproblemet (1). Problem: På hvormange forskellige måder kan man veksle n kroner i gængse danske mønter (25 øre, 50 øre, 1 kroner, 2 kroner, 5 kroner, 10 kroner og 20 kroner)? Algoritmisk ide Antal af måder at veksle n kroner ved brug af ovenstående mønter = + Antal af måder at veksle n kroner uden brug af 25 ører Antal af måder at veksle (n ) kroner ved brug af alle ovenstående mønter. Veksle(beløb: Ører; antal-mønt-typer: Integer): Integer if beløb = 0 then result := 1 elseif beløb < 0 or antal-mønt-typer = 0 then result := 0 else result := Veksle(beløb - pålydende(antal-mønt-typer), antal-mønt-typer) + Veksle(beløb, antal-mønt-typer -1) Den algoritmiske ide stammer fra følgende betragtninger. Studer f.eks. alle mulige vekslinger af 20 kroner. Del disse vekslinger i to grupper: 1. De vekslinger, som ikke gør brug af 25 ører. 2. De vekslinger, som gør brug af 25 ører. Det er klart at antallet af måder vi kan veksle 20 kroner er summen af antal vekslinge af 1 og 2 ovenfor. Ad 2: Det ses let, at antallet af disse er det samme som antallet af måder vi kan veksle 19,75 kr ved brug af alle mønter. For de nysgerrige kan det oplyses, at 20 kroner kan veksles på 3275 måder. I ovenstående algoritmeskitse er det antaget, at mønterne ordnes, f.eks. efter pålydende. Når alle mønttyper skal tages i betragning er 2. parameter til Veksle lig med 7. I det sidste rekursive kald bliver antal-mønt-typer lig med 6, hvilket afspejler at den 7. mønt (f.eks. 25 øren) ikke er med længere. Udtrykket pålydende(i) returnerer den pålydende værdi af den i te mønttype. Det ses, at veksleproblemet er et specialtilfælde af Knapsack-problemet. Vi kan sige, at massen og værdien er sammenfaldende (eller at vi kun interesserer os for værdien). Vi kræver imidlertid ved veksleproblemet, at den vægtede sum af værdier anddrager præcist det beløb, som skal veksles. 409

16 Variation af Knapsack problemet: Veksleproblemet(2). (Veksle 200 4) = 10 Veksling af 2 kroner med de 4 mindste mønter Denne slide viser de rekursive kald af veksleproceduren. +/- beløb mønt + betyder, at der er tale om en gen-beregning. - betyder, at beregningen ikke er foretaget tidligere. Beløb er det beløb, som forsøges vekslet. Mønt er den særlige mønt, der tages hensyn til i det aktuelle problem. Bemærk, at i ovenstående tager vi kun hensyn til 25 ører, 50 ører, 1 kroner og 2 kroner. Verfice selv at Veksle(100, 3) = 4 (veksling af en 1 krone ved brug af 25 ører, 50 ører, og 1 krone). 410

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

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

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

Læs mere

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

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

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

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

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

18 Multivejstræer og B-træer.

18 Multivejstræer og B-træer. 18 Multivejstræer og B-træer. Multivejs søgetræer. Søgning i multivejssøgetræer. Pragmatisk lagring af data i multivejstræer. B-træer. Indsættelse i B-træer. Eksempel på indsættelse i B-træ. Facts om B-træer.

Læs mere

Rekursion C#-version

Rekursion C#-version Note til Programmeringsteknologi Akademiuddannn i Informationsteknologi Rekursion C#-version Finn Nordbjerg 1 Rekursion Rekursionsbegrebet bygger på, at man beskriver noget ved "sig selv". Fx. kan tallet

Læs mere

14 Algoritmeanalyse. Noter. Algoritmebegrebet. Hvad er algoritmeanalyse? Problemstørrelse og køretid. Køretid for forskellige kontrolstrukturer.

14 Algoritmeanalyse. Noter. Algoritmebegrebet. Hvad er algoritmeanalyse? Problemstørrelse og køretid. Køretid for forskellige kontrolstrukturer. 14 Algoritmeanalyse. Algoritmebegrebet. Hvad er algoritmeanalyse? Problemstørrelse og køretid. O og Ω. Køretid for forskellige kontrolstrukturer. Eksempler på algoritmeanalyse. Eksponentiel og polynomiel

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

Selvstudium 1, Diskret matematik

Selvstudium 1, Diskret matematik Selvstudium 1, Diskret matematik Matematik på første studieår for de tekniske og naturvidenskabelige uddannelser Aalborg Universitet I dette selfstudium interesserer vi os alene for tidskompleksitet. Kompleksitet

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

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

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

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

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO) Mm2: Rekursive algoritmer og rekurrens - October 12, 2010

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO) Mm2: Rekursive algoritmer og rekurrens - October 12, 2010 Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO) Mm2: Rekursive algoritmer og rekurrens - October 12, 2010 1 Algorithms and Architectures II 1. Introduction to analysis and design of algorithms

Læs mere

Dynamisk programmering. Flere eksempler

Dynamisk programmering. Flere eksempler Dynamisk programmering Flere eksempler Eksempel 1: Længste fælles delstreng Alfabet = mængde af tegn: {a,b,c,...,z}, {A,C,G,T}, {,1} Eksempel 1: Længste fælles delstreng Alfabet = mængde af tegn: {a,b,c,...,z},

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

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

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

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

Læs mere

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

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm2: Rekursive algoritmer og rekurrens - October 10, 2008

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm2: Rekursive algoritmer og rekurrens - October 10, 2008 Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm2: Rekursive algoritmer og rekurrens - October 10, 2008 1 Algorithms and Architectures II 1. Introduction to analysis

Læs mere

Anvendelse af del og hersk princippet involverer altså problemopdelning og løsningskombination.

Anvendelse af del og hersk princippet involverer altså problemopdelning og løsningskombination. 32. Rekursion Rekursive funktioner er uundværlige til bearbejdning af rekursive datastrukturer. Rekursive datastrukturer forekommer ofte - f.eks. både som lister og træer. Rekursiv problemløsning via del

Læs mere

Rekursion og dynamisk programmering

Rekursion og dynamisk programmering Rekursion og dynamisk programmering Datastrukturer & Algoritmer, Dat C Forelæsning 12/10-2004 Henning Christiansen Rekursion: at en procedure kalder sig selv eller et antal metoder kalder hinanden gensidigt.

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

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

Sidste gang Motivation Definitioner Approximations-algoritme for knudeoverdækning Approximations-algoritme for TSP med trekantsulighed

Sidste gang Motivation Definitioner Approximations-algoritme for knudeoverdækning Approximations-algoritme for TSP med trekantsulighed Approximations-algoritmer Sidste gang Motivation Definitioner Approximations-algoritme for knudeoverdækning Approximations-algoritme for TSP med trekantsulighed Negativt resultat om generel TSP Approximations-algoritme

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

Algoritmisk geometri

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

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet 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

Dynamisk programmering. Flere eksempler

Dynamisk programmering. Flere eksempler Dynamisk programmering Flere eksempler Eksempel 1: Længste fælles delstreng Alfabet = mængde af tegn: {a,b,c,...,z}, {A,C,G,T}, {,1} Streng = sekvens x 1 x 2 x 3... x n af tegn fra et alfabet: helloworld

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

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Mandag den 27. maj 2002, kl. 9.00 13.00 Opgave 1 (25%) Denne opgave handler om multiplikation af positive heltal.

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

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

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

Læs mere

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. maj 00. Kursusnavn Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Alle skriftlige hjælpemidler. Vægtning af opgaverne:

Læs mere

Danmarks Tekniske Universitet

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

Læs mere

Skriftlig eksamen i Datalogi

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

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

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

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

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

Læs mere

Sortering ved fletning (merge-sort)

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

Læs mere

Basale forudsætninger. Sortering ved fletning med tre bånd, i to faser.

Basale forudsætninger. Sortering ved fletning med tre bånd, i to faser. 25 Sortering III. Basale forudsætninger. Sortering ved fletning med tre bånd, i to faser. Sortering ved fletning, med fire bånd, i én fase (balanceret fletning). Polyfase fletning med tre bånd. Generaliseret

Læs mere

Løs til optimalitet i eksponentiel tid Find tilnærmet løsning i polynomiel tid

Løs til optimalitet i eksponentiel tid Find tilnærmet løsning i polynomiel tid 6 april Løsning af N P -hårde problemer Løs til optimalitet i eksponentiel tid Find tilnærmet løsning i polynomiel tid Oversigt Grænseværdier (repetition) Branch-and-bound algoritmens komponenter Eksempler

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

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

Læs mere

17 Søgning og Søgetræer.

17 Søgning og Søgetræer. 17 Søgning og Søgetræer. Lineær og inær søgning i lister. inære søgetræer. Søgning efter knude i træ. Indsættelse af knude i træ. Søgning i og sortering af inært søgetræ. Sletning af knude i inært søgetræ.

Læs mere

26 Programbeviser I. Noter. PS1 -- Programbeviser I. Bevis kontra 'check af assertions' i Eiffel. Betingelser og bevisregler.

26 Programbeviser I. Noter. PS1 -- Programbeviser I. Bevis kontra 'check af assertions' i Eiffel. Betingelser og bevisregler. 26 Programbeviser I. Bevis kontra 'check af assertions' i Eiffel. Betingelser og bevisregler. Hvad er programverifikation? Bevisregel for 'tom kommando'. Bevisregel for assignment. Bevisregler for selektive

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

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

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

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

Procedurer og funktioner - iteration og rekursion

Procedurer og funktioner - iteration og rekursion Procedurer og funktioner - iteration og rekursion Procedurer De første procedurer vi så på var knyttet til handlinger, der skulle udføres, fx at klikke på en knap for at lukke en form eller afslutte et

Læs mere

Algorithms & Architectures I 2. lektion

Algorithms & Architectures I 2. lektion Algorithms & Architectures I 2. lektion Design-teknikker: Divide-and-conquer Rekursive algoritmer (Recurrences) Dynamisk programmering Greedy algorithms Backtracking Dagens lektion Case eksempel: Triple

Læs mere

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

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

Læs mere

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

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

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

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

Analyse af ombytningspuslespil

Analyse af ombytningspuslespil Analyse af ombytningspuslespil 1 / 7 Konkret eksempel på algoritmeanalyse Prøv ombytningspuslespillet på kurset webside. Spørgsmål: Hvilken bedste (laveste) score kan du opnå på 5 forsøg? Hvilken algoritme

Læs mere

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

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

Læs mere

Tirsdag 12. december David Pisinger

Tirsdag 12. december David Pisinger Videregående Algoritmik, DIKU 2006/07 Tirsdag 12. december David Pisinger Resume sidste to gang Sprog L : mængden af instanser for et afgørlighedsproblem hvor svaret er 1. P = {L : L genkendes af en algoritme

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

Analyse af ombytningspuslespil

Analyse af ombytningspuslespil Analyse af ombytningspuslespil 1 / 7 Konkret eksempel på algoritmeanalyse Prøv ombytningspuslespillet på kurset webside. 2 / 7 Konkret eksempel på algoritmeanalyse Prøv ombytningspuslespillet på kurset

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

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Finn Nordbjerg 1/9 Indledning I det følgende introduceres et par abstrakte

Læs mere

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

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

Læs mere

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

Martin Olsen. DM507 Projekt Del I. 19. marts 2012 FOTO: Colourbox

Martin Olsen. DM507 Projekt Del I. 19. marts 2012 FOTO: Colourbox Martin Olsen DM0 Projekt 0 Del I. marts 0 FOTO: Colourbox Indhold Indledning... Opgave... Opgave... Opgave... Opgave... Opgave... Opgave... Opgave... Kildekode til SimpleInv.java... Kildekode til MergeSort.java...

Læs mere

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Science and Technology EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning) INSTITUT FOR DATALOGI, AARHUS UNIVERSITET Science and Technology EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 1 Eksamensdag: Tirsdag den 7. juni 16, kl. 9.-11. Tilladte medbragte

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

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

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

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

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

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

Teoretiske Øvelsesopgaver:

Teoretiske Øvelsesopgaver: Teoretiske Øvelsesopgaver: TØ-Opgave 1 Subtraktion division i legemer: Er subtraktion division med elementer 0 i legemer veldefinerede, eller kan et element b have mere end ét modsat element -b eller mere

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

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

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

Læs mere

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

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Kursusbeskrivelsen Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle

Læs mere

Bevisteknikker. Bevisteknikker (relevant både ved design og verifikation) Matematisk induktion. Matematisk induktion uformel beskrivelse

Bevisteknikker. Bevisteknikker (relevant både ved design og verifikation) Matematisk induktion. Matematisk induktion uformel beskrivelse Bevisteknikker Bevisteknikker (relevant både ved design og verifikation) Bevisførelse ved modstrid (indirekte bevis) Antag, at det givne teorem er falsk Konkluder, at dette vil føre til en modstrid Teorem:

Læs mere

Parallelle algoritmer

Parallelle algoritmer Parallelle algoritmer 1 Von Neumann s model John von Neumann 1903-57 Von Neumanns model: Instruktioner og data er lagret i samme lager, og én processor henter instruktioner fra lageret og udfører dem én

Læs mere

Videregående Algoritmik. Version med vejledende løsninger indsat!

Videregående Algoritmik. Version med vejledende løsninger indsat! Videregående Algoritmik DIKU, timers skriftlig eksamen, 1. april 009 Nils Andersen og Pawel Winter Alle hjælpemidler må benyttes, dog ikke lommeregner, computer eller mobiltelefon. Opgavesættet består

Læs mere

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

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

Læs mere

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

3 Algebraisk Specifikation af Abstrakte Datatyper.

3 Algebraisk Specifikation af Abstrakte Datatyper. 3 Algebraisk Specifikation af Abstrakte Datatyper. Specifikation kontra program. Bestanddele af en algebraisk specifikation. Klassificering af funktioner i en ADT. Systematisk definition af ligninger.

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

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

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

Læs mere

Introduktion Til Konkurrenceprogrammering

Introduktion Til Konkurrenceprogrammering Introduktion Til Konkurrenceprogrammering Søren Dahlgaard og Mathias Bæk Tejs Knudsen {soerend,knudsen}@di.ku.dk Version 0.1 Indhold Indhold i Introduktion 1 1 Palindromer 3 1.1 Introduktion til Python...............

Læs mere

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

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

Læs mere

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

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

P (n): rekursiv beregning af f n kræver f n beregninger af f 1. P (n) er sand for alle n 2.

P (n): rekursiv beregning af f n kræver f n beregninger af f 1. P (n) er sand for alle n 2. P (n): rekursiv beregning af f n kræver f n beregninger af f 1. P (n) er sand for alle n 2. Bevis ved stærk induktion. Basisskridt: P (2) er sand og P (3) er sand. Induktionsskridt: Lad k 2 og antag P

Læs mere

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

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

Læs mere

Forelæsning Uge 4 Mandag

Forelæsning Uge 4 Mandag Forelæsning Uge 4 Mandag Algoritmeskabeloner findone, findall, findnoof, findsumof Primitive typer (forfremmelse og begrænsning) Identitet versus lighed (for objekter, herunder strenge) Opfølgning på Skildpadde

Læs mere