Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Størrelse: px
Starte visningen fra side:

Download "Skriftlig Eksamen Algoritmer og Datastrukturer (dads)"

Transkript

1 Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Mandag den 27. maj 2002, kl

2 Opgave 1 (25%) Denne opgave handler om multiplikation af positive heltal. Udover et tals værdi, a, skal vi betragte dets binære representation A, som er et array hvori værdierne er enten 0 eller 1. De mindst-betydende cifre står til venstre. Eksempelvis har tallet a = 57 den binære representation A : [1, 0, 0, 1, 1, 1]. Hvis den binære repræsentation af et tal indeholder n cifre, betegner vi den som sædvanligt med A[0..n], ligesom A[0..k] betegner den del af tallet der består af de k mindst-betydende cifre. I eksemplet ovenfor er A[0..6] lig med 57, medens A[0..4] er lig med 9. Endelig bruger vi den sædvanlige notation + og for addition og multiplikation af heltal. Spørgsmål a: Bevis at der for vilkårlige positive heltal a, b og for k > 0 gælder a B[0..(k + 1)] = a B[0..k] + a B[k] 2 k, hvor B angiver den binære representation af b. Betragt nu følgende algoritme. Algoritme: Heltalsmultiplikation Input : a, b, positive heltal, med b givet ved sin binære repræsentation B. Output : S = a b Metode : S 0; k 0; {I}while k < B do S S + a B[k]; a 2 a; k k + 1 Spørgsmål b: Angiv en passende gyldig invariant I, og angiv hvilke bevisbyrder, der skal eftervises i et gyldighedsbevis. Spørgsmål c: Eftervis bevisbyrderne fra spørgsmål b, og argumenter for at algoritmen er korrekt.

3 Opgave 2 (25%) En internet-søgemaskine opbevarer en stor delmængde af de tilgængelige websider på internettet. Siderne kan opfattes som en orienteret graf, hvor grafens knuder svarer til web-siderne og hvor der findes en kant fra en knude u til en knude v hvis og kun hvis der på siden svarende til u er et link til siden svarende til v. Hvis en forespørgsel til en søgemaskine resulterer i flere mulige svar i form af en liste af relevante web-sider, så ønskes disse sorteret efter aftagende relevans. I denne opgave betragtes tre mulige mål for relevansen af en side, alle baseret på den intution at en side er relevant, hvis mange andre sider refererer til den. Nedenstående tre spørgsmål beskæftiger sig hvert med eet af disse mål. Et eksempel med alle tre mål findes sidst i opgaven. Vi antager i det følgende at grafen er givet ved adjacency list repræsentationen og at der som sædvanligt er henholdsvis n knuder og m kanter i grafen. Længden af en sti i grafen er som sædvanligt antallet af kanter der indgår i stien. Afstanden fra en knude u til en knude v er længden af den korteste sti fra u til v, og betegnes d(u, v). Hvis der ingen sti findes fra u til v, er d(u, v) =. Spørgsmål a: Beskriv en algoritme, der beregner indgraden af hver knude i grafen. Hvad er udførselstiden for algoritmen som funktion af n og m? Spørgsmål b: Beskriv en algoritme, der for hver knude v beregner for hvor mange knuder u (u v) der findes en sti fra u til v. Hvad er udførselstiden for algoritmen? Spørgsmål c: Beskriv en algoritme, der for hver knude v beregner summen ( 1 d(u,v), 2) u N(v) hvor N(v) er de knuder u som opfylder u v d(u, v). D.v.s. en knude med afstand k til v bidrager med ( 1 2 )k til summen for v. Hvad er udførselstiden af algoritmen? Eksempel: Tabellen nedenfor angiver de beregnede værdier i spørgsmål a til c for nedenstående graf. Indgangen med 5/4 fremkommer ved at d(0, 5) = d(1, 5) = 3, d(4, 5) = d(6, 5) = 2, og d(3, 5) = 1. Summen for 5 er derfor 2 (1/2) 3 +2 (1/2) 2 + (1/2) 1 = 5/ v a b c 1/2 0 3/2 3/2 1 5/4 1

4 Opgave 3 (25%) Betragt en mængde {x 1, x 2,...,x n } af n forskellige tal (n 2). Opstillet i numerisk orden x i1 < x i2 <... < x in kalder vi (x ij, x ij+1 ) et nabo-par med afstand d j = x ij+1 x ij, og kalder for mængdens min-afstand. d = min{d j 1 j n 1} Spørgsmål a: Angiv min-afstand for nedenstående mængde. {4, 26, 1, 10, 23, 17} Spørgsmål b: Beskriv hvordan man givet en mængde af n forskellige tal kan finde min-afstand i tid O(n logn). Vi ønsker nu at vedligeholde en mængde S under følgende operationer. insert(x) : Indsæt tallet x i mængden. delete(x) : Slet tallet x fra mængden. min-afstand() : Returner min-afstanden for den aktuelle mængde. Spørgsmål c: Beskriv hvorledes et balanceret søgetræ kan udvides så insert og delete tager tid O(log n) og min-afstand tager tid O(1), hvor n betegner antal tal i mængden før operationen udføres. Vi ønsker nu at tilføje en operation interval-min-afstand(y 1, y 2 ), der returner min-afstand for mængden [y 1, y 2 ] S. Eksempel: interval-min-afstand(2, 23) på overstående mængde returnerer 6, hvilket er afstanden for både nabo-parret (4, 10) og naboparret (17, 23). Spørgsmål d: Beskriv hvordan man til operationerne fra spørgsmål c kan tilføje operationen interval-min-afstand, således at min-afstand udføres i tid O(1) og de tre andre operationer i tid O(log n).

5 Opgave 4 (25%) I denne opgave betragtes en mængde positive heltal x 1, x 2,...,x n, hvis sum er lig S. Vi ønsker at udvikle en algoritme, der kan finde en delmængde af tallene, hvis sum kommer tættest muligt på S/2. Betragt følgende udsagn: U(s, k): Der findes en delmængde af x 1, x 2,...,x k, hvis sum er lig med s. Spørgsmål a: Lad {x 1, x 2 } = {1, 3}. Udfyld følgende tabel med sandhedsværdierne for U(s, k) for 0 s 4 og 0 k 2. k s Det påstås at U(s, k) opfylder følgende rekursionsformel. U(s, k) = True hvis s = 0 False hvis (s > 0) (k = 0) U(s, k 1) hvis x k > s U(s, k 1) U(s x k, k 1) hvis x k s Spørgsmål b: Argumenter for denne påstand. Spørgsmål c: Angiv en algoritme baseret på dynamisk programmering, der givet x 1, x 2,...,x n, S og K beregner alle værdier U(s, k) for 0 s S og 0 k K. Argumenter for algoritmens udførelsestid. Spørgsmål d: Hvordan kan man udvide algoritmen ovenfor til at finde en delmængde af tallene x 1, x 2,...,x n hvis sum er tættest muligt på S/2?

6 Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Tirsdag den 13. august 2002, kl

7 Opgave 1 (25%) Betragt følgende algoritme, som kvadrerer et positivt heltal ved udelukkende at anvende addition, subtraktion og halvering af lige tal. Algoritme : Kvadrering Input : heltal A 1 Output : r = A 2 Metode : a 1; b 0; c 0; x A; { A 2 = ax 2 + bx + c x 1 } while x > 1 do if x er lige then a a + a + a + a; b b + b; x x/2 else c c + a + b; b b + a + a; x x 1 r a + b + c Spørgsmål a: Angiv hvilke bevisbyrder der skal eftervises i et gyldighedsbevis for algoritmen. Spørgsmål b: Eftervis bevisbyrderne fra spørgsmål a, og argumenter for at algoritmen er korrekt. Spørgsmål c: Hvad er udførselstiden for algoritmen?

8 Opgave 2 (25%) Betragt følgende graf en såkaldt H(2)-graf som består af 2 dobbelt-sekskanter, ( ) omgivet af 3 enkelt-sekskanter ( ). Dette er et specialtilfælde af de mere generelle H(k)-grafer, som består af k dobbelt-sekskanter omgivet af k + 1 enkelt-sekskanter. Spørgsmål a: Angiv udtrykt ved k antallet af knuder og kanter i en H(k)-graf. Betragt nu en vægtet H(k)-graf, hvor de vandrette kanter i enkelt-sekskanterne har vægt 1 (øverst) og 3 (nederst), og hvor alle andre kanter i såvel enkelt- som dobbelt-sekskanterne har vægt 2. Eksempelvis har H(1)-grafen vægtet på denne måde følgende udseende Spørgsmål b: Tegn en sådan vægtet H(2)-graf og angiv et letteste udspændende træ for grafen. Spørgsmål c: Angiv vægten af et letteste udspændende træ for en sådan vægtet H(k)-graf. Argumenter for svaret. (Vink: Husk at for en sammenhængende graf med n knuder indeholder et letteste udspændende træ n 1 kanter). Lad N > 3 være et vilkårligt heltal og betragt vægtede H(k)-grafer hvor alle øvre vandrette kanter i enkelt-sekskanterne har vægt 1 og alle de nedre vandrette kanter i enkelt-sekskanterne har vægt N (N erstatter 3), og hvor alle andre kanter i grafen har vægte der er strengt større end 1 og strengt mindre end N (vægtene kan være forskellige). Spørgsmål d: Angiv en algoritme med udførselstid lineær i grafens størrelse, der finder et letteste udspændende træ for en sådan graf. Argumenter for at algoritmen er korrekt. Antag at grafen som sædvanligt er givet ved en adjacency list repræsentation

9 Opgave 3 (25%) I denne opgave betragter vi mængder af tal hvor hvert tal enten er blåt eller gult. For en mængde af n tal x 1 < x 2 < < x n, er [x i, x j ] et maksimalt blåt interval hvis x i, x i+1,...,x j alle er blå og x i 1 er gult eller i = 1, og x j+1 er gult eller j = n. Tilsvarende defineres maksimale gule intervaller. Spændvidden af et maksimalt interval [x i, x j ] er differencen x j x i. Bemærk at et maksimalt interval, der kun indeholder ét element, har spændvidde 0. Spørgsmål a: Angiv de i alt 6 maksimale blå og gule intervaller for mængden, { 1, 3, 4, 6, 8, 9, 13, 14, 18, 29, 31, 42, 57, 59, 63 }, hvor x i angiver at x i er blåt. Angiv også spændvidderne af de seks maksimale intervaller. Spørgsmål b: Beskriv en algoritme, der givet en sorteret liste af n blå og gule tal kan finde de maksimale blå og gule intervaller i tid O(n). Vi ønsker nu at vedligeholde en mængde af farvede tal under følgende operationer. insert(x, c) : Indsæt tallet x i mængden og giv det farven c. delete(x) : Slet tallet x fra mængden. count() : Returner antal maksimale intervaller (både blå og gule) i mængden. Spørgsmål c: Beskriv en datastruktur, der understøtter insert og delete i tid O(log n) og count i tid O(1), hvor n betegner antal tal i mængden før operationen udføres. Spørgsmål d: Beskriv hvorledes datastrukturen kan udvides så den understøtter en operation sum der returnerer summen af spændvidderne af de maksimale intervaller i tid O(1).

10 Opgave 4 (25%) I denne opgave antager vi at n og S er positive heltal, og at C 1, C 2,...,C n er mængder af positive heltal, hvor hver mængde højest indeholder S positive heltal. Vi ønsker at afgøre om vi kan udtage ét element fra hver mængde således at deres sum er S, dvs. om der findes n elementer, x 1, x 2,...,x n, hvor x i C i, således at ni=1 x i = S. Betragt følgende udsagn for 0 k n og 0 s S: U(k, s) : Der findes x 1 C 1, x 2 C 2,...,x k C k således at k i=1 x i = s. Spørgsmål a: Lad n = 3, S = 7, C 1 = {1, 2, 4}, C 2 = {2, 3, 5}, og C 3 = {3, 4}. Udfyld nedenstående tabel med sandhedsværdierne for U(k, s) for 0 k n og 0 s S. s k Det påstås, at U(k, s) opfylder følgende rekursionsformel. U(k, s) = True hvis (k = 0) (s = 0) False hvis (k = 0) (s > 0) True hvis (k > 0) der findes y C k : (y s) U(k 1, s y) False ellers Spørgsmål b: Argumenter for denne påstand. Spørgsmål c: Angiv en algoritme, baseret på dynamisk programmering, der givet C 1, C 2,...,C n og S beregner værdien U(n, S). Argumenter for algoritmens udførselstid.

11 Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Tirsdag den 27. maj 2003, kl

12 Opgave 1 (25%) For konstanten π = gælder identiteten π 2 6 = = 1 2 i 2 Følgende algoritme beregner summen af de første n led i ovenstående sum, d.v.s Algoritme : π 2 /6 Input : heltal n 1 Output Metode : p 1; q 1; k 1; { p q = k n i=1 1 i 2 : heltal p og q, hvor p q = n i=1 1 i 2 i=1 } 1 k n while k < n do i=1 i 2 k k + 1; p p k k + q; q q k k Spørgsmål a: Angiv hvilke bevisbyrder der skal eftervises i et gyldighedsbevis for algoritmen. Spørgsmål b: Eftervis bevisbyrderne fra spørgsmål a. Spørgsmål c: Bevis at algoritmen er korrekt. Spørgsmål d: Hvor mange bits kræves til repræsentation af heltallene p henholdsvis q udtrykt som funktion af n i O-notation?

13 Opgave 2 (25%) Lad x 1 < x 2 < < x n være n heltallige elementer, og lad til hvert x i være tilknyttet en heltallig værdi y i. De n elementer og deres tilknyttede værdier kan opfattes som n punkter (x 1, y 1 ), (x 2, y 2 ),...,(x n, y n ) i planen. Opgaven beskæftiger sig med at understøtte operationen MinElementAbove(t) som returnerer det mindste element x i, hvis tilhørende værdi y i er større end eller lig med t, eller meddeler at der ikke findes et sådant element. I nedenstående figur er det returnerede element x-koordinaten af det markerede punkt. t y x Spørgsmål a: Hvad er MinElementAbove(10) for punkterne (4,9), (5,17), (19,6), (23,10), (25,15), (40,7)? I det følgende betragtes en udvidelse af rød-sorte søgetræer til opbevaring af elementerne. Lad v.x være elementet gemt i knuden v. Hver knude v udvides til også at gemme værdien v.y knyttet til v.x, og den største værdi, v.y max, tilknyttet en knude i undertræet med rod i v. Nedenstående er et udvidet rød-sort søgetræ for punkterne fra spørgsmål a. I knuderne er øverst angivet x, y og nederst y max. Røde knuder er markeret med dobbelt-cirkler. 19,6 17 4, , , , ,7 7 Spørgsmål b: Beskriv hvordan et udvidet rød-sort søgetræ kan vedligeholdes under indsættelse og sletning af elementer (og tilknyttede værdier) i tid O(log n). Spørgsmål c: Beskriv hvordan MinElementAbove(t) kan udføres i tid O(log n). Argumenter for algoritmens udførselstid og korrekthed.

14 Opgave 3 (25%) Givet to strenge S = S[1]S[2] S[n] og U = U[1]U[2] U[k], så er U en supersekvens for S hvis S er en delsekvens af U. For eksempel er ACACTGTA en supersekvens for A C C T (understregning angiver en sekvens af matchende positioner). I det følgende angiver S og T to strenge af længde henholdsvis n og m. En streng U er en korteste fælles super-sekvens for S og T, hvis U er en super-sekvens for både S og T, og der findes ikke en kortere streng der er en super-sekvens for både S og T. Spørgsmål a: Argumenter for at en korteste fælles super-sekvens for S og T har længde højest n + m, og for at en korteste fælles super-sekvens ikke altid er entydig. Lad C(i, j) betegne længden af en korteste fælles super-sekvens for S[1]S[2] S[i] og T[1]T[2] T[j] for 0 i n og 0 j m. Det påstås at C(i, j) opfylder følgende rekursionsformel. max{i, j} hvis (i = 0) (j = 0) C(i, j) = 1 + C(i 1, j 1) hvis (i > 0) (j > 0) S[i] = T[j] 1 + min{c(i, j 1), C(i 1, j)} hvis (i > 0) (j > 0) S[i] T[j] Spørgsmål b: Argumenter for ovenstående påstand. Spørgsmål c: Angiv en algoritme, baseret på dynamisk programmering, der givet S og T finder længden af en korteste fælles super-sekvens. Argumenter for algoritmens udførselstid. Spørgsmål d: Udvid algoritmen til også at finde en korteste fælles super-sekvens for S og T.

15 Opgave 4 (25%) En gitter-graf er en orienteret graf hvor knuderne er arrangeret i k rækker hver indeholdende k knuder, hvor k er et positivt heltal. Lad v i,j betegne den jte knude i den ite række. Lad s = v 1,1. En gitter-graf har følgende knuder og kanter: V = {v i,j 1 i k 1 j k} E = {(v i,j, v i,j+1 ) 1 i k 1 j < k} {(v i,j, v i,j 1 ) 1 i k 1 < j k} {(v i,j, v i+1,j ) 1 i < k 1 j k} Nedenstående figur viser gitter-grafen for k = 5. s I resten af denne opgave antager vi at alle kanter har en ikke-negativ vægt. Spørgsmål a: Lad n og m betegne henholdsvis antallet af knuder og kanter i en gitter-graf. Udtryk n og m som funktion af k. Spørgsmål b: Hvad er udførselstiden for Dijkstra s algoritme for at finde længden af de korteste veje fra s = v 1,1 til alle de øvrige knuder i en gitter-graf som funktion af k? Spørgsmål c: Beskriv en algoritme der finder længden af de korteste veje fra s = v 1,1 til alle de øvrige knuder i en gitter-graf i tid O(m). Argumenter for algoritmens udførselstid og korrekthed. En cylinder-graf er en gitter-graf udvidet med ikke-negative vægtede kanter mellem den venstre og højre knude i hver række, d.v.s. E indeholder også kanterne (v i,1, v i,k ) og (v i,k, v i,1 ) for 1 i k. Spørgsmål d: Beskriv en algoritme der finder længden af de korteste veje fra s = v 1,1 til alle de øvrige knuder i en cylinder-graf i tid O(m). Argumenter for algoritmens udførselstid og korrekthed.

16 Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Onsdag den 13. august 2003, kl

17 Opgave 1 (25%) Lad A = A[1] A[n] være et array af heltal. Længden af det længste sammenhængende delarray af A hvor alle indgange er identiske betegnes LID(A). Længden af det længste suffix af A hvor alle indgange er identiske betegnes LIDS(A). Eksempel: LID(1,2,3,3,2,2,1,1,1,1,1,2,2,4,4,2,2,2,2) = 5 LIDS(1,2,3,3,2,2,1,1,1,1,1,2,2,4,4,2,2,2,2) = 4 Betragt følgende algoritme: Algoritme : LID Input: A : Array af længde n, hvor n 1 Output: m : LID(A) Metode: r 1; m 1; i 1; { I } while i < n do Update ; i i + 1; hvor I er invarianten (r = LIDS(A[1] A[i])) (m = LID(A[1] A[i])) (i n) Spørgsmål a: Angiv hvilke bevisbyrder der skal eftervises i et gyldighedsbevis for algoritmen. Spørgsmål b: Angiv konkret kode for Update, således at bevisbyrderne fra spørgsmål a kan eftervises. Spørgsmål c: Eftervis bevisbyrderne fra spørgsmål a, og argumenter for at algoritmen er korrekt.

18 Opgave 2 (25%) Lad x 1, x 2,, x n være n forskellige heltallige elementer. Opgaven beskæftiger sig med at understøtte rang-baserede operationer. Operationen rank(y) skal returnere antallet af elementer blandt x 1,...,x n der er mindre end eller lig med y, dvs. {i x i y}. Operationen atrank(r) skal, for 1 r n, returnere det rte mindste element blandt x 1,...,x n, dvs. det x j hvor rank(x j ) = r. I det følgende betragtes en udvidelse af rød-sorte søgetræer til opbevaring af elementerne. Lad v.x være elementet gemt i knuden v. Hver knude v udvides til også at gemme v.s, der angiver antallet af elementer gemt i undertræet med rod i v. Nedenstående er et udvidet rød-sort søgetræ for elementerne 3,5,8,11,14,17. I knuderne er øverst angivet v.x og nederst v.s. Røde knuder er markeret med dobbelt-cirkler. I det givne eksempel er rank(10) = 3 og atrank(5) = Spørgsmål a: Beskriv hvordan rank(y) og atrank(r) kan udføres i tid O(log n). Argumenter for algoritmernes udførselstid og korrekthed. Spørgsmål b: Beskriv hvordan en operation Count(y, z), der returner antallet af elementer i intervallet ]y ; z], dvs. {i y < x i z}, kan udføres i tid O(log n). Argumenter for algoritmens udførselstid og korrekthed. Spørgsmål c: Beskriv hvordan et sådant udvidet rød-sort søgetræ kan vedligeholdes under indsættelse og sletning af elementer i tid O(log n).

19 Opgave 3 (25%) Betragt følgende situation: En tømrer ønsker at udmåle en bestemt længde, men har glemt sin tommestok. Til gengæld har han forskellige æsker med søm i kendte størrelser, og får den idé at udmåle længden ved at lægge søm på række efter hinanden. I denne opgave ønsker vi at beregne, hvilke længder tømreren kan udmåle med en given beholdning af søm. Vi antager at der er K æsker med søm, og at der i æske nummer i er n i søm, alle med en længde på l i centimeter. Vi ønsker at afgøre om der findes en delmængde af sømmene, hvis samlede længde er S centimeter, dvs. om der findes heltal x 1,...,x K, hvor 0 x i n i, således at K i=1 x i l i = S. Vi antager at S og l i erne alle er positive heltal. Betragt følgende udsagn U(k, s) for 0 k K og 0 s S: U(k, s) : Der findes heltal x 1,...,x k, hvor 0 x i n i, så k i=1 x i l i = s. Spørgsmål a: Lad S = 10, K = 3, l 1 = 1, l 2 = 5, l 3 = 4, n 1 = 3, n 2 = 1, og n 3 = 25. Udfyld nedenstående tabel med sandhedsværdierne for U(k, s) for 0 k K og 0 s S. s k Det påstås at U(k, s) opfylder følgende rekursionsformel. U(k, s) = Sand hvis k = 0 s = 0 Falsk hvis k = 0 s > 0 Sand hvis k > 0 der findes x k : (0 x k n k ) (x k l k s) U(k 1, s x k l k ) Falsk ellers Spørgsmål b: Argumenter for ovenstående påstand. Spørgsmål c: Angiv en algoritme, baseret på dynamisk programmering, der beregner værdien U(K, S). Argumenter for algoritmens udførselstid.

20 Opgave 4 (25%) En s t-lagdelt graf er en orienteret graf hvor knuderne er arrangeret i s rækker hver indeholdende t knuder, hvor s og t er positive heltal. Lad v i,j betegne den jte knude i den ite række. En s t-lagdelt graf har følgende knuder og kanter: V = {v i,j 1 i s 1 j t} E = {(v i,j, v i+1,k ) 1 i < s 1 j t 1 k t} Nedenstående figur viser en 5 3-lagdelt graf. v 1,1 Spørgsmål a: Lad n og m betegne henholdsvis antallet af knuder og kanter i en s t-lagdelt graf. Hvad er n og m som funktioner af s og t? Vi antager nu at alle kanter har en ikke-negativ vægt. Hvad er udførselstiden som funktion af s og t for Dijkstra s algoritme til at finde korteste afstand fra v 1,1 til alle de øvrige knuder i en s t-lagdelt graf? I resten opgaven antages at vægtene på kanterne er reelle tal (både positive og negative). Spørgsmål b: Beskriv hvordan man kan finde korteste afstand fra v 1,1 til alle de øvrige knuder i en s t-lagdelt graf i tid O(st 2 ). Spørgsmål c: Angiv som funktion af s og t udførselstiden i en s t-lagdelt graf for den variant af Floyd-Warshalls algoritme, der finder korteste afstand mellem alle par af knuder. Anvend løsningen fra spørgsmål b til at beskrive en mere effektiv algoritme, og argumenter for dennes udførselstid. Spørgsmål d: Når kanterne kan have negative vægte, vil Dijktra s algoritme ikke nødvendigvis finde korteste afstand fra v 1,1 til alle de øvrige knuder. Angiv en vægtet 3 2-lagdelt graf hvor Dijkstra s algoritme fejler, og argumenter for at den fejler på denne graf.

21 DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Algoritmer og Datastrukturer (gammel ordning) Antal sider i opgavesættet (incl. forsiden): 6 (seks) Eksamensdag: Onsdag den 11. august 2004, kl Eksamenslokale: Trøjborg-komplekset, Niels Juelsgade 84, lok. 139, 8200 Århus N Tilladte medbragte hjælpemidler: Alle sædvanlige hjælpemidler (lærebøger og notater) Materiale der udleveres til eksaminanden: OPGAVETEKSTEN BEGYNDER PÅ NÆSTE SIDE ooo

22 Eksamen august 2004 Algoritmer og Datastrukturer (gammel ordning) Skriftlig prøve Side 2 af 6 sider Opgave 1 (25%) I denne opgave betragtes nedenstående algoritme, der givet et input array indeholdende 0-1 værdier, beregner længden af det længste delarray hvor alle indgange indeholder værdien 1. Algoritme Ones(A) Inputbetingelse : Array A af længde n 0 indeholdende 0-1 værdier Outputkrav : m = MaxOnes(A) Metode : i 0; m 0; l 0; {I} while i < n do if A[i] = 1 then l l + 1; m max{l, m} else l 0 i i + 1 hvor I er invarianten l = MaxSuffixOnes(A[0..i]) m = MaxOnes(A[0..i]) 0 i n Her betegner A[0..i] = A[0]A[1] A[i 1], MaxOnes(X) længden af det længste delarray af X kun indeholdende værdien 1, og MaxSuffixOnes(X) længden af det længste suffix af X kun indeholdende værdien 1. For nedenstående eksempel er MaxOnes(A) = MaxOnes(A[8..14]) = 6 og f.eks. er MaxSuffixOnes(A[0..17]) = MaxOnes(A[15..17]) = A Spørgsmål a: Hvilke værdier får l tildelt i linien l l + 1; i løbet af algoritmen, og hvor mange gange tildeles l de forskellige værdier på ovenstående eksempel? Spørgsmål b: Angiv hvilke bevisbyrder der skal eftervises i et gyldighedsbevis for algoritmen. Spørgsmål c: Eftervis bevisbyrderne fra spørgsmål b, og argumenter for at algoritmen er korrekt. (Opgavesættet fortsætter)

23 Eksamen august 2004 Algoritmer og Datastrukturer (gammel ordning) Skriftlig prøve Side 3 af 6 sider Opgave 2 (25%) I denne opgave betragtes en datastruktur til at opbevare en mængde af intervaller, og som understøtter forespørgsler om et punkt q er indeholdt i mindst et interval. For intervallerne [2, 9], [14, 21], [17, 30], [33, 39], [35, 58], [41, 50], [45, 54], [52, 62] gælder at f.eks. q = 10 ikke er indeholdt i et interval, hvorimod q = 53 er indeholdt i mindst et interval (faktisk tre intervaller, men dette er uvæsentligt for denne opgave). Datastrukturen for at opbevare intervallerne er et (balanceret) søgetræ, hvor hver indre knude opbevarer et interval og hvor intervallerne er gemt sorteret efter intervallernes venstre endepunkt. Hver knude opbevarer desuden en værdi r max, som er det maksimale højre endepunkt der er opbevaret i knudens undertræ. Nedenstående viser datastrukturen for ovenstående intervaller, hvor der for hver knude øverst er angivet knudens interval og nederst er angivet knudens r max værdi. 33, , ,9 17, , ,58 52, ,50 50 Spørgsmål a: Tegn en tilsvarende datastruktur for intervallerne [21, 23], [1, 6], [18, 20], [11, 13], [17, 19], [3, 8], [5, 10], [22, 24] Spørgsmål b: Beskriv hvordan et nyt interval [l, r] kan indsættes i ovenstående datastruktur, hvor det antages at træet ikke kræves balanceret efter indsættelsen. Spørgsmål c: Beskriv hvordan man under indsættelser af nye intervaller i tid O(log n) kan holde ovenstående datastruktur balanceret, d.v.s at træets højde er O(log n). Spørgsmål d: Beskriv en rekursiv procedure Covered(q), der afgør om et punkt q er indeholdt i mindst et interval. Procedurens udførelsestid skal være O(h), hvor h er træets højde. (Opgavesættet fortsætter)

24 Eksamen august 2004 Algoritmer og Datastrukturer (gammel ordning) Skriftlig prøve Side 4 af 6 sider Opgave 3 (25%) I denne opgave betragtes (r, k) gitter-grafer, som er orienterede grafer hvor knuderne er arrangeret i et gitter med r rækker og k søjler. Hver knude v har en kant til knuden umiddelbart nedenunder v i v s søjle (såfremt v ikke er i den nederste række) og en kant til knuden umiddelbart til højre for v (såfremt v ikke er i søjlen længst til højre). Den øverste venstre knude betegnes s og knuden nederst til højre betegnes t. Nedenstående er en (5, 8) gitter-graf. s t I det følgende antages alle kanter at have en ikke negativ vægt. Spørgsmål a: Angiv antal kanter m og antal knuder n i en (r, k) gitter-graf som funktion af r og k. Angiv udførelsestiden af Dijkstra s algoritme til at finde de korteste afstande fra s til t. Spørgsmål b: Angiv en algoritme med udførelsestid O(n), der beregner den korteste afstand fra s til t i en (r, k) gitter-graf. Spørgsmål c: Angiv en algoritme med udførelsestid O(n), der beregner længden af den længste sti fra s til t i en (r, k) gitter-graf. Antag nu at kanterne også kan have en negativ vægt. Spørgsmål d: Angiv en algoritme der beregner længden af den længste sti i en (r, k) gitter-graf. Angiv algoritmes udførelsestid. Bemærk at stien ikke behøver at gå fra s til t. (Opgavesættet fortsætter)

25 Eksamen august 2004 Algoritmer og Datastrukturer (gammel ordning) Skriftlig prøve Side 5 af 6 sider Opgave 4 (25%) I denne opgave betragtes to strenge S = s 1 s 2 s n T = t 1 t 2 t m af længde henholdsvis n og m. Vi ønsker at finde den fælles delsekvens for S og T der opnår den maksimale blok-score, som er defineret nedenfor. Antag at en fælles delsekvens for S og T kan deles op i p blokke B 1,...,B p, hvor B i er en sammenhængende delsekvens i både S og T. Vi definerer blok-scoren af opdelingen som B 1 + B B p p Den maksimale blok-score er blok-scoren af den fælles delsekvens for S og T der har den maksimale blok-score. For eksempel har nedenstående to strenge en maksimal blokscore på = 7. Kasserne angiver opdelingen i blokke af den fælles delsekvens for S og T. S = ab cc baca ba abad T = ab aba baca abad ad Vi definerer nu: B(i, j) = den maksimale blok-score af s 1 s 2 s i og t 1 t 2 t j. Spørgsmål a: Lad S = bbcba og T = bccbba. Udfyld følgende tabel for B(i, j) for 0 i 5 og 0 j 6. i j (Opgavesættet fortsætter)

26 Eksamen august 2004 Algoritmer og Datastrukturer (gammel ordning) Skriftlig prøve Side 6 af 6 sider Det påstås at B(i, j) opfylder følgende rekursionsformel: B(i, j) = 0 hvis i = 0 j = 0 max{b(i, j 1), B(i 1, j)} hvis s i t j max{b(i, j 1), B(i 1, j), B(i k, j k) + k 1} hvis s i = t j k 1 er maksimal så: s i = t j s i 1 = t j 1 s i k+1 = t j k+1 Spørgsmål b: Beskriv en algoritme baseret på dynamisk programmering, der givet to strenge S og T af længde henholdsvis n og m, beregner B(n, m), d.v.s. den maksimale blok-score for strengene S og T. Angiv algoritmens udførelsestid. Spørgsmål c: Beskriv en udvidelse af algoritmen fra spørgsmål b til også at rapportere en fælles delsekvens af S og T der har maksimal blok-score. Angiv algoritmens udførelsestid.

27 Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning) Datalogisk Institut Aarhus Universitet Fredag den 28. maj 2004, kl

28 Opgave 1 (20%) En (r, k) kryds-graf er en orienteret graf med r rækker af k knuder, hvor knude j i række i, for 1 i < r, har en kant til knude j 1 i række i + 1, for 1 < j k, og en kant til knude j +1 i række i+1, for 1 j < k. Desuden findes en knude s, der har kanter til alle knuder i den første (nederste) række, og en knude t, der har kanter fra alle knuder i den sidste (øverste) række. Lad m betegne antal kanter og n antal knuder i en (r, k) kryds-graf Nedenstående viser en (4, 5) kryds-graf. t s Spørgsmål a: Angiv antal kanter m og antal knuder n i en (r, k) kryds-graf som funktion af r og k. Antag alle kanter har en ikke negativ vægt. Angiv udførselstiden af Dijkstra s algoritme til at finde de korteste afstande fra s til alle de øvrige knuder som funktion af r og k. Spørgsmål b: Angiv en (1, 2) kryds-graf med positive og negative vægtede kanter, hvor Dijkstra s algoritme beregner en forkert afstand fra s til t. Angiv for hver knude i eksemplet de korrekte afstande fra s samt de afstande Dijkstra s algoritme beregner. Spørgsmål c: Angiv en algoritme med udførselstid O(n) til at beregne de korteste afstande fra s til alle de øvrige knuder i en (r, k) kryds-graf med positive og negative vægtede kanter. Argumenter for algoritmens udførselstid.

29 Opgave 2 (20%) En cyklisk (r, k) kryds-graf er en orienteret graf med r rækker af k knuder, hvor knude j i række i, for 1 i < r, har en kant til knude j 1 i række i + 1, for 1 < j k, og en kant til knude j + 1 i række i +1, for 1 j < k. Desuden findes en knude s, der har kanter til alle knuder i den første (nederste) række, en knude t, der har kanter fra alle knuder i den sidste (øverste) række, og en kant fra t til s. Lad m betegne antal kanter og n antal knuder i en cyklisk (r, k) kryds-graf Nedenstående viser en cyklisk (4, 5) kryds-graf. t u s I denne opgave betragtes problemet at finde de korteste afstande fra en vilkårlig knude u til alle de øvrige knuder i en cyklisk (r, k) kryds-graf, hvor alle kanter har vægte der kan være både positive og negative. Der antages at der ikke findes negative cykler. Spørgsmål a: Angiv som funktion af r og k udførselstiden af Bellman-Ford s algoritme for at finde de korteste afstande fra en knude u til alle de øvrige knuder i en cyklisk (r, k) kryds-graf. Spørgsmål b: Angiv en algoritme med udførselstid O(n), der finder de korteste afstande fra en knude u til alle de øvrige knuder i en cyklisk (r, k) kryds-graf. Argumenter for algoritmens udførselstid. Spørgsmål c: Angiv en algoritme med udførselstid O(n 2 ), der finder de korteste afstande mellem alle par af knuder i en cyklisk (r, k) kryds-graf. Argumenter for algoritmens udførselstid.

30 Opgave 3 (10%) En n-dobbeltstjerne-graf er en uorienteret graf med to knuder u og w og n knuder v 1,..., v n. For hver af knuderne v 1,...,v n er der kanter til u og w. Nedenstående er en 9-dobbeltstjerne-graf u v 1 v 9 w Man kan i det følgende bruge nedenstående sætning om minimum udspændende træer uden bevis: Lad G = (V, E) være en vægtet uorienteret graf, og lad K E være en kantmængde, som indeholder et minimum udspændende træ for G. Hvis K indeholder en cykel C og hvis e er en kant i C af størst vægt, da vil K \ {e} også indeholde et minimum udspændende træ for G. Spørgsmål a: Beskriv en algoritme med udførselstid O(n), der finder et minimum udspændende træ for en vægtet n-dobbeltstjerne-graf. Argumenter for algoritmens udførselstid. Hint: Betragt cykler (u, v i, w, v j, u) hvor i j.

31 Opgave 4 (25%) Lad S = {x 1,...,x n } være en mængde af n positive heltal og N et positivt heltal, hvor N x 1 + +x n. Opgaven går ud på at afgøre om der findes positive heltal d 1,...,d n således at N = x 1 d x n d n. For mængden S = {1, 2, 3, 5, 7} og N = 740 findes løsningen 740 = Lad B(k, s) være sand hvis og kun hvis der findes positive d 1,...,d k så s = x 1 d x k d k. Bemærk at B(n, N) er svaret på det oprindelige problem. Følgende er en rekursiv opskrivning af B(k, s), hvor s og k er heltal og 0 k n og 0 s N. B(k, s) = sand hvis k = 0 s = 0 falsk hvis k = 0 s > 0 sand hvis k > 0 (der findes i 1 så x i k s B(k 1, s x i k )) falsk ellers Spørgsmål a: Udfyld nedenstående tabel for B(k, s) for mængden S = {2, 3, 4} og N = 21 (angiv blot indgange der har værdien sand). k \ s Spørgsmål b: Angiv en algoritme baseret på dynamisk programmering, der afgør om B(n, N) er sand. Angiv algoritmens udførselstid og argumenter for denne. Spørgsmål c: Udvid algoritmen fra spørgsmål (b) til i samme udførselstid at udskrive en løsning d 1,...,d n, såfremt der findes en løsning. Angiv algoritmens udførselstid og argumenter for denne.

32 Opgave 5 (25%) Lad S 1 og S 2 være to strenge med tilsammen n tegn over alfabetet {a, b, c}, dvs. n = S 1 + S 2. I denne opgave betragtes problemet at finde den længste (sammenhængende) fælles delstreng for S 1 og S 2. Lad S = S 1 #S 2 $ være en ny streng over alfabetet {a, b, c, #, $}, som består af de to strenge sat efter hinanden, hvor S 1 og S 2 er adskildt af et nyt symbol # og S 2 er efterfulgt af et nyt symbol $. Eksempel: For strengene S 1 = a a bac og S 2 = a c a bab er den længste fælles delstreng a ba, og S = a a bac#acabab$. Spørgsmål a: Opskriv alle suffixerne af strengen S fra ovenstående eksempel i leksikografisk rækkefølge, hvor alfabetets ordning er a < b < c < # < $. Spørgsmål b: Angiv suffix-træet for strengen S fra ovenstående eksempel, og marker knuden svarende til den længste fælles delstreng af S 1 og S 2. I det følgende kan antages uden bevis at et suffix-træ for en streng af længde n over et alfabet af størrelse O(1) kan konstrueres i tid O(n). Spørgsmål c: Beskriv en algoritme der givet to strenge med totalt n tegn over et alfabet af størrelse O(1) kan finde den længste fælles delstreng i tid O(n). Argumenter for algoritmens udførselstid. Hint: Marker knuderne i suffix-træet med information om der findes delstrenge i S 1 og S 2 der svarer til stierne fra roden ned til knuderne.

33 DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Algoritmer og Datastrukturer 2 (2003-ordning) Antal sider i opgavesættet (incl. forsiden): 6 (seks) Eksamensdag: Onsdag den 11. august 2004, kl Eksamenslokale: Trøjborg-komplekset, Niels Juelsgade 84, lok. 139, 8200 Århus N Tilladte medbragte hjælpemidler: Alle sædvanlige hjælpemidler (lærebøger og notater) Materiale der udleveres til eksaminanden: OPGAVETEKSTEN BEGYNDER PÅ NÆSTE SIDE ooo

34 Eksamen august 2004 Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig prøve Side 2 af 6 sider Opgave 1 (25%) I denne opgave betragtes (r, k) gitter-grafer, som er orienterede grafer hvor knuderne er arrangeret i et gitter med r rækker og k søjler. Hver knude v har en kant til knuden umiddelbart nedenunder v i v s søjle (såfremt v ikke er i den nederste række) og en kant til knuden umiddelbart til højre for v (såfremt v ikke er i søjlen længst til højre). Den øverste venstre knude betegnes s og knuden nederst til højre betegnes t. Nedenstående er en (5, 8) gitter-graf. s t I det følgende antages alle kanter at have en ikke negativ vægt. Spørgsmål a: Angiv antal kanter m og antal knuder n i en (r, k) gitter-graf som funktion af r og k. Angiv udførelsestiden af Dijkstra s algoritme til at finde de korteste afstande fra s til t. Spørgsmål b: Angiv en algoritme med udførelsestid O(n), der beregner den korteste afstand fra s til t i en (r, k) gitter-graf. Spørgsmål c: Angiv en algoritme med udførelsestid O(n), der beregner længden af den længste sti fra s til t i en (r, k) gitter-graf. Antag nu at kanterne også kan have en negativ vægt. Spørgsmål d: Angiv en algoritme der beregner længden af den længste sti i en (r, k) gitter-graf. Angiv algoritmes udførelsestid. Bemærk at stien ikke behøver at gå fra s til t. (Opgavesættet fortsætter)

35 Eksamen august 2004 Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig prøve Side 3 af 6 sider Opgave 2 (25%) I denne opgave betragtes dobbelt-ring grafer. En dobbelt-ring graf med n broer, er en uorienteret graf hvor der er 2n knuder. Knuderne er forbundet med kanter så de danner to cykler med hver n knuder, og den ite knude i den ene cykel er forbundet med en kant/bro til den ite knude i den anden cykel. Nedenstående graf til venstre viser en dobbelt-ring graf med 8 broer. Spørgsmål a: Angiv udførelsestiden for Prim-Jarnik s algoritme for at beregne et minimum udspændende træ for en vægtet dobbelt-ring graf med n broer. Udførelsestiden skal angives som funktion af n. Man kan i det følgende spørgsmål bruge nedenstående sætning om minimum udspændende træer uden bevis: Lad G = (V, E) være en vægtet uorienteret graf, og lad K E være en kantmængde, som indeholder et minimum udspændende træ for G. Hvis K indeholder en cykel C og hvis e er en kant i C af størst vægt, da vil K \ {e} også indeholde et minimum udspændende træ for G. Spørgsmål b: Beskriv en algoritme med udførelsestid O(n), der finder et minimum udspændende træ for en vægtet dobbelt-ring graf med n broer. Argumenter for algoritmens udførelsestid. I det følgende spørgsmål betragtes orienterede dobbelt-ring grafer med n broer, som er dobbelt-ring grafer hvor hver kant repræsenterer en orienteret kant, jævnfør ovenstående graf til højre. Spørgsmål c: Angiv en algoritme med udførelsestid O(n), der givet en orienteret dobbelt-ring graf med n broer afgør om der for alle par af knuder u og v findes orienterede stier fra u til v og fra v til u. (Opgavesættet fortsætter)

36 Eksamen august 2004 Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig prøve Side 4 af 6 sider Opgave 3 (25%) I denne opgave betragter vi strenge over alfabetet Σ = {a, b, c}. For en streng S lader vi S betegne den reverserede streng, d.v.s. strengen læst bagfra. For eksempel er abbcaabc = cbaacbba Spørgsmål a: Angiv en trie for følgende strenge S 1 S 2 S 3 S 4 S 5 = cbcab = ababab = aba = babcc = cacba S 6 S 7 S 8 S 9 S 10 = cbaaa = aabcb = aaaccba = aabcc = acaacc Spørgsmål b: Antag der er givet en trie T for en mængde strenge S 1,...,S k. Beskriv en algoritme der givet en forespørgselsstreng P, afgør om der i trien findes en streng S i hvor P = S i. Algoritmens udførelsestid skal være O( P ). Spørgsmål c: Antag der er givet k ikke-tomme strenge S 1,...,S k med totalt n tegn, d.v.s. n = k i=1 S i. Beskriv en algoritme med udførelsestid O(n), som afgør om der blandt de k strenge findes to strenge S i og S j således at S i = S j. Output af algoritmen skal i givet fald være < i, j >. Bemærk at hvis en af strengene opfylder S i = S i, så er S i et palindrom og < i, i > er et muligt output. (Opgavesættet fortsætter)

37 Eksamen august 2004 Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig prøve Side 5 af 6 sider Opgave 4 (25%) I denne opgave betragtes to strenge S = s 1 s 2 s n T = t 1 t 2 t m af længde henholdsvis n og m. Vi ønsker at finde den fælles delsekvens for S og T der opnår den maksimale blok-score, som er defineret nedenfor. Antag at en fælles delsekvens for S og T kan deles op i p blokke B 1,...,B p, hvor B i er en sammenhængende delsekvens i både S og T. Vi definerer blok-scoren af opdelingen som B 1 + B B p p Den maksimale blok-score er blok-scoren af den fælles delsekvens for S og T der har den maksimale blok-score. For eksempel har nedenstående to strenge en maksimal blokscore på = 7. Kasserne angiver opdelingen i blokke af den fælles delsekvens for S og T. S = ab cc baca ba abad T = ab aba baca abad ad Vi definerer nu: B(i, j) = den maksimale blok-score af s 1 s 2 s i og t 1 t 2 t j. Spørgsmål a: Lad S = bbcba og T = bccbba. Udfyld følgende tabel for B(i, j) for 0 i 5 og 0 j 6. i j (Opgavesættet fortsætter)

38 Eksamen august 2004 Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig prøve Side 6 af 6 sider Det påstås at B(i, j) opfylder følgende rekursionsformel: B(i, j) = 0 hvis i = 0 j = 0 max{b(i, j 1), B(i 1, j)} hvis s i t j max{b(i, j 1), B(i 1, j), B(i k, j k) + k 1} hvis s i = t j k 1 er maksimal så: s i = t j s i 1 = t j 1 s i k+1 = t j k+1 Spørgsmål b: Beskriv en algoritme baseret på dynamisk programmering, der givet to strenge S og T af længde henholdsvis n og m, beregner B(n, m), d.v.s. den maksimale blok-score for strengene S og T. Angiv algoritmens udførelsestid. Spørgsmål c: Beskriv en udvidelse af algoritmen fra spørgsmål b til også at rapportere en fælles delsekvens af S og T der har maksimal blok-score. Angiv algoritmens udførelsestid.

39 DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Algoritmer og Datastrukturer 2 (2003-ordning) Antal sider i opgavesættet (incl. forsiden): 7 (syv) Eksamensdag: Mandag den 20. juni 2005, kl Eksamenslokale: Skøjtehallen, Gøteborg Allé 9, Århus N Tilladte medbragte hjælpemidler: Alle sædvanlige hjælpemidler (lærebøger og notater) Materiale der udleveres til eksaminanden: OPGAVETEKSTEN BEGYNDER PÅ NÆSTE SIDE ooo

40 Eksamen Sommeren 2005 Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig prøve Side 2 af 7 sider Opgave 1 (25%) I denne opgave betragtes k-trekant-kæde grafer, som består af k trekanter i en kæde, hvor en trekant deler en kant med den forrige og den næste trekant. Nedenstående viser en 14-trekant-kæde graf. Bemærk at en (k + 1)-trekant-kæde graf fremkommer ved at tilføje en trekant til en k-trekant-kæde graf, j.v.f. nedenstående 15-trekant-kæde graf. Spørgsmål a: Angiv antal knuder og antal kanter i en k-trekant-kæde graf som funktion af antal trekanter k. Angiv udførselstiden for Kruskal s algoritme for en vægtet k-trekant-kæde graf. Udførselstiden skal angives som funktion af k. Lad G = (V, E) være en vægtet uorienteret graf, og lad K E være en kantmængde, som indeholder et letteste udspændende træ for G. Hvis K indeholder en cykel C og hvis e er en kant i C af størst vægt, da vil K \ {e} også indeholde et letteste udspændende træ for G. Spørgsmål b: Beskriv en algoritme med udførselstid O(n), der finder et letteste udspændende træ for en vægtet k-trekant-kæde graf med n knuder. Argumenter for algoritmens udførselstid. Spørgsmål c: Angiv en algoritme med udførselstid O(n), der finder den letteste simple cykel i en k-trekant-kæde graf hvor alle kanter har positive vægte. Argumenter for algoritmens udførselstid. (Opgavesættet fortsætter)

41 Eksamen Sommeren 2005 Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig prøve Side 3 af 7 sider Opgave 2 (25%) I denne opgave betragtes Manhattan-grafer. En Manhattan-graf er en uorienteret graf der består af t rækker med s knuder, men hvor de fire hjørner mangler, d.v.s. den første og den sidste række har kun s 2 knuder. Knuderne er forbundet som vist på nedenstående graf der viser en Manhattan-graf for s = 5 og t = 8. Bemærk at alle knuder har grad tre eller fire, og at indgående kanter til en knude kommer enten fra nord, syd, øst eller vest. t s Spørgsmål a: Angiv antallet af kanter og knuder i en Manhattan-graf som funktion af s og t. Angiv udførselstiden for Dijkstra s algoritme for at beregne den korteste vej fra en knude u til en knude v i en vægtet Manhattan-graf, hvor alle kanter har positive vægte. Udførselstiden skal angives som funktion af s og t. Betragt en Manhattan-graf. Der antages at kanter repræsenterer veje og man for alle veje kan køre i begge retninger, men at når man kommer ad en vej til en knude kan man ikke dreje til venstre, d.v.s. i en knude kan man kun følge vejen lige ud eller dreje til højre. En uorienteret Manhattan-graf kan transformeres til en orienteret graf ved at erstatte en knude af grad 3 eller 4 med henholdsvis 6 eller 8 knuder i en orienteret graf, således at alle stier i den orienterede graf svarer til veje der er lovlige at køre i Manhattan-grafen. Nedenstående viser hvordan en knude v af grad 3 bliver til 6 knuder og de incidente kanter hertil. v v (Opgavesættet fortsætter)

42 Eksamen Sommeren 2005 Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig prøve Side 4 af 7 sider Spørgsmål b: For nedenstående Manhattan-graf, angiv den tilsvarende orienterede graf hvor stier svarer til lovlige veje at køre i Manhattan-grafen. I de næste to spørgsmål betragtes orienterede grafer hvor alle kanterne incidente til en knude kommer fra nord, syd, øst eller vest. Der kommer højst én kant fra hver af de fire retninger. Nedenstående graf til venstre viser et eksempel på sådan en graf. Bemærk at der ikke findes en vej fra u til v hvor man aldrig drejer til venstre, uanset hvilken kant incident til u man starter med. Til højre ses en sti fra u til v der foretager ét venstre sving, nemlig i w. u v u v w Spørgsmål c: Beskriv en algoritme, der givet en uorienteret graf hvor alle kanterne incidente til en knude kommer fra nord, syd, øst eller vest, afgør om der findes en vej fra en knude u til en knude v som ikke indeholder nogen venstre sving (man må selv bestemme hvilken kant incident med u man starter med). Angiv algoritmens udførselstid som funktion af antal knuder n. Spørgsmål d: Beskriv en algoritme, der givet en uorienteret graf hvor alle kanterne incidente til en knude kommer fra nord, syd, øst eller vest, finder en vej fra en knude u til en knude v som indeholder færrest mulige venstre sving (man må selv bestemme hvilken kant incident med u man starte med). Angiv algoritmens udførselstid som funktion af antal knuder n. (Opgavesættet fortsætter)

43 Eksamen Sommeren 2005 Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig prøve Side 5 af 7 sider Opgave 3 (25%) I denne opgave betragtes n punkter p 1 = (x 1, y 1 ), p 2 = (x 2, y 2 ),..., p n = (x n, y n ) hvorom der gælder x 1 < x 2 < x 3 < < x n. For et givet k, ønsker vi at finde k rektangler der tilsammen indeholder alle punkterne og således at det samlede areal af rektanglerne er mindst muligt. Siderne på de k rektangler skal være parallelle med x- og y-akserne, og der skal gælde at rektanglerne ikke overlapper m.h.t. x-værdierne, d.v.s. rektanglerne kan sorteres fra venstre mod højre. Nedenstående viser et eksempel hvor 10 punkter er indeholdt i 4 rektangler, med henholdsvis punkterne {p 1, p 2, p 3, p 4 }, {p 5 }, {p 6, p 7, p 8 }, og {p 9, p 10 }. Bemærk at rektanglet indeholdende p 5 kun består af punktet p 5. y p 1 p 5 p 3 p 6 p p 7 p 8 p 9 p 2 p x Det samlede areal af de fire rektangler er (6 3) (10 3) + (10 10) (9 9) + (14 12) (7 6) + (19 17) (5 4) = 25 Lad B(i, j) betegne arealet af det minimale rektangel som indeholder p i, p i+1,...,p j 1, p j og som kan beregnes ved formlen ( B(i, j) = (x j x i ) max y k k : i k j ) min y k k : i k j For ovenstående punktmængde er f.eks. B(6, 8) = (14 12) (7 6) = 2. Spørgsmål a: Angiv en algoritme der beregner B(i, j) for alle par (i, j) hvor i j. Angiv algoritmens udførselstid. (Opgavesættet fortsætter)

44 Eksamen Sommeren 2005 Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig prøve Side 6 af 7 sider For s 1 og t 1 definerer vi nu: A(s, t) = det minimale areal af op til s rektangler der indeholder punkterne p 1, p 2,...,p t. Bemærk at A(k, n) er det minimale areal af op til k rektangler der indeholder alle n punkter. Det påstås at A(s, t) opfylder følgende rekursionsformel: B(1, t) hvis s = 1 t = 1 A(s, t) = min (A(s 1, k 1) + B(k, t)) hvis t 2 s 2 k :2 k t Spørgsmål b: Udfyld nedenstående tabel for A(s, t), 1 s 3 og 1 t 6, for punktmængde {(1, 4), (2, 8), (3, 7), (5, 3), (6, 2), (7, 5)}. y p 1 p 2 p 3 p 4 p p x s t Spørgsmål c: Angiv en algoritme med udførselstid O(n 3 ) baseret på dynamisk programmering, der givet n punkter og et heltal k, beregner A(k, n), d.v.s. det minimale areal af k rektangler der indeholder alle n punkter. Argumenter for algoritmens udførselstid. (Opgavesættet fortsætter)

45 Eksamen Sommeren 2005 Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig prøve Side 7 af 7 sider Opgave 4 (25%) For en streng S = S[1]S[2] S[n] er i-rotationen af S strengen rotate i (S) = S[i S ]S[1..i] F.eks. har strengen abcdefgh 3-rotationen defghabc. En streng S er en rotation af sig selv hvis der findes i, 1 i < n, således at S = rotate i (S). F.eks. er S = abcdabcd en rotation af sig selv da S = rotate 4 (S). Spørgsmål a: Beskriv hvordan man kan anvende en mønster genkendelses algoritme, f.eks. Knuth-Morris-Pratt, til at afgøre om en streng S af længde n er en rotation af sig selv. Angiv algoritmens udførselstid. Hint: Betragt strengen SS. Betragt nu en streng S af længde n og et mønster P af længde m, begge over et alfabet af størrelse O(1). For mønsteret P =abcde forekommer rotate 2 (P) i strengen S =abdbcabdebvacdeababcd startende ved position 13. Spørgsmål b: Angiv alle forekomster af mønsteret P =aba eller en rotation af P i strengen S = abaaaba. Spørgsmål c: Angiv suffix-træet for strengen PPS$ hvor P og S er de i spørgsmål b) anvendte strenge, d.v.s. suffix-træet for strengen abaabaabaaaba$. Symbolet $ er et symbol der ikke er med i alfabetet. Børnene til en knude skal komme i alfabetisk rækkefølge, fra venstre mod højre, hvor det antages at $ er det sidste tegn i alfabetet. I det følgende kan antages uden bevis at et suffix-træ for en streng af længde n over et alfabet af størrelse O(1) kan konstrueres i tid O(n). Spørgsmål d: Beskriv en algoritme der afgør om en rotation af mønsteret P forekommer i S. Angiv algoritmens udførselstid. Hint: Betragt suffix-træet for strengen P P S$ af længde 2m + n.

46 Eksamen August 2005 Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig prøve Side 2 af 5 sider Opgave 1 (25%) I denne opgave betragter vi trekanter-grafer. En trekant-graf er en orienteret graf med b rækker af knuder med henholdvis 1, 2, 3,..., b knuder, og hvor kanterne er som angivet i nedenstående eksempel. Nedenstående viser en trekant-graf for b = 6. t s b Spørgsmål a: Angiv antallet kanter m og knuder n i en trekant-graf som funktion af b. Angiv udførselstiden for Dijkstra s algoritme for at beregne den korteste afstand fra den nedre venstre knude s til alle de øvrige knuder i en positiv vægtet trekant-graf. Udførselstiden skal angives som funktion af b. Spørgsmål b: Angiv en trekant-graf for b = 2 med positive og negative vægtede kanter, hvor Dijkstra s algoritme beregner en forkert afstand fra s til t. Angiv for hver knude i eksemplet de korrekte afstande fra s samt de afstande Dijkstra s algoritme beregner. Spørgsmål c: Angiv en algoritme med udførelsestid O(n), der beregner den korteste afstand fra den nedre venstre knude s til den øverste knude t i en trekant-graf med positive og negative vægtede kanter. Argumenter for udførelsestiden. Spørgsmål d: Angiv en algoritme, der finder to knuder u og v, u v, med kortest afstand i en trekant-graf med positive og negative vægtede kanter. Angiv udførelsestiden. (Opgavesættet fortsætter)

47 Eksamen August 2005 Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig prøve Side 3 af 5 sider Opgave 2 (25%) I nedenstående graf er den tungeste kant på stien (a, c, e, h) kanten (e, h) med vægt 10. a 3 8 b 12 c e 7 f h 13 4 d 4 8 g 2 Spørgsmål a: Angiv en sti i ovenstående graf fra a til h, hvor den tungeste kant på stien er lettest mulig. Spørgsmål b: Givet to knuder u og v i en vægtet graf, angiv en algoritme der finder en sti fra u til v hvor vægten af den tungeste kant på stien er lettest mulig. Angiv algoritmens udførselstid som funktion af antal knuder n og antal kanter m i grafen. Man kan i det følgende bruge nedenstående sætning om minimum udspændende træer uden bevis: Lad G være en vægtet uorienteret graf hvor alle kanter har forskellige vægte. Lad e være en kant i G. Et minimum udspændende træ for G indeholder e hvis og kun hvis G ikke indeholder en cykel C, hvor e er den tungeste kant i cyklen C. Spørgsmål c: Beskriv en algoritme, der givet en vægtet graf G og en kant e i grafen, afgør om e er indeholdt i et minimum udspændende træ for G. Det antages at alle vægtene er forskellige. Udførselstiden for algoritmen skal være O(m), hvor m er antal kanter i grafen. (Opgavesættet fortsætter)

48 Eksamen August 2005 Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig prøve Side 4 af 5 sider Opgave 3 (25%) Givet to sekvenser S = S[1] S[n] og T = T[1] T[m] ønsker vi i denne opgave at finde en længste fælles voksende delsekvens for S og T, d.v.s. finde det største k hvor der findes 1 i 1 < < i k n og 1 j 1 < < j k m hvor S[i 1 ] = T[j 1 ],..., S[i k ] = T[j k ] og S[i 1 ] < S[i 2 ] <... < S[i k ]. Sekvenserne S = og T = har for eksempel sekvensen som en længste fælles voksende delsekvens. Spørgsmål a: Angiv en længste fælles voksende delsekvens for sekvenserne S = T = For S[i] = T[j] lad L(i, j) betegne længden af en længste fælles voksende delsekvens for S[1] S[i] og T[1] T[j] som indeholder S[i]. For S[i] T[j] lader vi L(i, j) = 0. Det påstås at L(i, j) opfylder følgende rekursionsformel: L(i, j) = 0 hvis S[i] T[j] 1 hvis S[i] = T[j] (i = 1 j = 1) 1 + max L(s, t) hvis S[i] = T[j] i > 1 j > 1 (s,t):1 s<i 1 t<j S[s]<S[i] Spørgsmål b: Udfyld nedenstående tabel for L(i, j), for 1 i 5 og 1 j 6, for sekvenserne S = T = i j Spørgsmål c: Angiv en algoritme der beregner tabellen for L(i, j), for 1 i n og 1 j m, og som finder længden af en længste fælles voksende delsekvens for S og T. Angiv algoritmens udførselstid. Spørgsmål d: Udvid algoritmen fra spørgsmål c) til at rapportere en længste fælles voksende delsekvens. Angiv algoritmens udførselstid. (Opgavesættet fortsætter)

49 Eksamen August 2005 Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig prøve Side 5 af 5 sider Opgave 4 (25%) Ternære trier er en variation af trier til at gemme n strenge over et ordnet alphabet. Hver knude gemmer et symbol og hver knude har højst tre børn: et venstre barn, et midter barn, og et højre barn. Når man skal søge efter en streng P og står i en knude v i en ternær trie, så sammenligner man det aktuelle tegn P[i] i strengen med symbolet ved knuden v. Hvis P[i] er mindre (henholdsvis større) end symbolet ved v så fortsættes søgningen efter P[i] ved v s venstre barn (henholdsvis højre barn). Hvis P[i] er lig med symbolet ved v, så fortsættes søgningen efter P[i + 1] ved v s midter barn. Således fortsættes indtil hele sekvensen er matchet. Det antages at alle strenge afsluttes med et specielt symbol $, således at hvert blad svarer præcis til en streng. I nedenstående eksempel svarer bladet ( ) til strengen ÅRHUS$, da Å>O, Å=Å, R>L, R=R, H<S, H=H, U=U, S=S, og $=$. O E D Å S E L B N B B R J S E O S E E N R H $ R $ R G U G Å $ S $ $ $ (*) Spørgsmål a: Angiv strengene der er gemt i ovenstående ternær trie. Stengene skal angives i leksikografisk rækkefølge. Spørgsmål b: Angiv pseudo-kode for hvordan man undersøger om en ternær trie T indeholder en streng P = P[1] P[m] (hvor P[m] = $). Angiv algoritmens udførselstid som funktion af m og n. Spørgsmål c: Angiv pseudo-kode for hvordan en streng P = P[1] P[m] kan indsættes i en ternær trie T (hvor P[m] = $). Angiv algoritmens udførselstid som funktion af m og n.

50 ! " GIHKJML%NGI' O.-,/6/4P93,P.-8-$?.Q2R# ):&)<>5SBAB2 T UWVEXEY:Z\[^]`_FY!XaV`b cp[^ced?[y+frgh[ifryi_fyjlkmjenenaompmxey:qrszwrsvut L*6v&m)<>w8-254/$7.x2wSByPAv)0B$78-z{&-&-$?&" W2@6P}7>~ \S< /$76e ƒ \ \$? G 9F8m)< ˆ$76/814e)<A/ Ce.-$?4e)< 4/$76 <ŠP~= 1,P6/2s <ŒBŒB MŽP9F>~I P~ ŒBŒ: m ^ŠP~ ŒBŒ G 9F8m)< ˆ$76/81>@SB9:)<>5$< JM9F &-$7 e)+>@>@$?6už O <&m$?;=s<.-a!l*>5> $ MŽ" L*.- F,/8Q' x2@>5> )<4M&m$* ˆ$74P;/.m)<A+&m$D : -zš>@ya$7 ˆ2@4P>@$7.? LQ>@>5$%8mzš4P0+)<6P>@2@A<$ : -zš>@ya$7 ˆ2@4/>5$7.% W> zš.1$7;/ <AB$7. SBAœ6/S<&m)+&m$?. N)+&-$7.12 )<>5$%4/$7.,/4P>@$?0<$7.1$78 &m2@>h$79f8m)< ˆ2@6/)<6/4/$?6u ž O LRŸ G GIHKJM GI' šg O% '*# GI ž L 'Q JM G JM # G S S

51 h! " $#! %!% &'! &' (*)+,.-/ ! 87 9: 201 ; 5=<> 20'?A@sVEc1Ba_DC Bƒ Eœ x4/$?6/6/$"sbypav)0b$";a$?&-.m)<a<&-$78gfihkjlmnofqp%fihsrtjsh~*g&q&m.mzš9:)<6v& &m.-z 9:)<6 9<S<6/81&-.-,/$?.-$78%0<$74)+&*81&m)<.1&-$ ˆ$74 $76 $76/9+$7>5&(&m.1$79:)<6v&ŽeS<A 4/$?.-$ &m$7. &m25>5 \ 1$Q6'UB$ &-.-$?9+)+6F&-$7.x&m25>w$79F8-2581&-$7.-$?6/4/$ 936F,/4P$7.(2wAB.m)+ \$?6 )+ (AB.-)<4 &ms/žh 0F ~6/$?4/$76/8 & )<$?6/4/$ $79F8-$? ya$7> v0bs<.!4/$76 81&-2@y/>5$74/$ &-.-$?9+)+6F&œ&-2@>5 \ 1$787~Ÿ%2{> )<4/$?.WV ;a$?&m$?ab6/$ )+6F&m)<>E&m.-$?9:)<6v&m$7.{4/$7. $7.š2aAB.m): \$76u~ 6P$74/$?6/81& )<$76/4P$X/AB,/.{$?.{4/$?.VZY ^Š &-.-$79:)<6v&-$7. \ <. 4/$?68 &m2@yp>@$74p$%&m.-$?9:)<6v&(&-2@> \ 1$78?~ [\@^]EYiVad]`_ ceu cba L*6/AB2 0)<6v&)+> 9F6F,/4/$?.dc SBA9:)<6v&-$7.$e 2I$?&K&m.-$?9:)<6v&1 &-.mz 81SB \,/6/9v&-2@SB6 )+ )<6v&)+>=&m.1$79:)<6v&m$?.(V~ L*6/A<250 8-SB \,/6/9v&m25SB6)+ V,/4P \ B.18-$?>@81&-2@4/$?6 \SB.xH.-,P8-9:)<>gf 8x)<>5ABSB.125&m ˆ$x \SB.š):& Xe6/4P$K$&( 256/2@ ",P,/4P8-yezš6/4P$76/4/$K&m.-z )+ $?& 0MzšA<&m$& &m.-$?9:)<6v&1 &-.mz%~ h N)<69:)<6 2u4P$?&x \ B>5AB$76/4P$%;/.-,PAB$ 6/$74P$76/8 & )<$?6/4/$K8mz{&m6P2@6/A!SB 256/2@,/,/4/81yezš6/4/$?6/4/$D&m.mzš$?.,/4/$?6;a$? i=m'j>kmlr(hkjjsnnlrzof JSFqpsrtHugJSNOF%JSHKJSF=oHvMvw(xylrtHTMz+z6J;LMNOF JSH(x{MH=wrtHK L'JSz+zu}oyJ~lRZoF J i=m'j JGlR(HKJ*JSN LMNOFu kƒ F( *u+nou+ *py p jt %ˆ R(NŠjyJSNŠjyJFQHSR wrth8kœu+nšjyjxortz}jyjsht xyl u6 WrŽo*LtpyN xyl u6 ;k u6l L'J>u+NŠjyJxOrtz}jyJSHJSN S L'JSz d xylrth; JSHjyJSN FQpyNyoyJ SF J>LMNOF u S Ltz6JSN [\@^]EYiVad]`_ ceu; "a {$ $76 )<>@ABS<.-25&- $*4/$7.šXe6/4/$?.*$?&Q ˆ2@6/25 ",/,P4/8-yezš6P4/$76/4P$"&m.mz \S<.Q$& 0MzšA<&m$& &m.-$?9:)<6v&1 &-.mz 2u&m2@4 Qcw ~ #%$?&(9:)<6 )<6v&)+AB$78()+&Q)<>5>@$Q0MzšA<&-$ $?.x \SB.-819<$7>5>@25AB$<~ h [\@^]EYiVad]`_ ceugœ a {$?8-9F.-2 0`$?6 )<>@ABS<.-25&- $! ˆ$74`,/4P \ B.18-$7>581&-2@4D Qcw 4/$?.WXe6/4/$?."$?& 256/2@,/,/4/81yezš6/4/$?6/4/$%&-.mz \SB.I$& 0MzšA<&-$?& &m.-$?9:)<6v&1 &-.mzl,p4p032@4/$&{ ˆ$74ˆ$76 JL SFQHvMGLMNOF( Qž ŸKM ~#%$?& 9:)<6 )<6v&)+AB$78()+&()<>5>@$*0MzšA<&-$ $?.š \SB.-819<$?>@>@25AB$<~ )/ 71 : v!%!%! 56!!%!% 3

52 h! " $#! %!% &'! &' (*)+,.-/ ! 87 9: 201 ;, 5=<> 20' Bƒ Eœ I4/$76P6/$ SBy/Av)0<$ 8-9:)<>h$?6.-SB;aS<& Xe6/4/$ $?6 9+SB.1&-$78 &m$%0b$ \.-) $?&šy/,/6/9v& $&9F 6/SBAB>5$ \SB.- yasb> U3ABS<6/$7.?~ SB> U3ABS<6/$7.16/$ $7.xA<250B$&š0B$?42u)<>5&c936F,/4P$7.7~ G 69<SB. &m$78 &x0b$ x \.m) %&m25> V 032@>u)+>5&m254 ;a$78 & )œ)+ $7681&-2u4/$7.x8 &)<. &m$?. 2 BŽQ \ <>@AB$?..-$&-&m$>52@6/25$7.ˆ&m2@>Q$76 4/$7>5 zš6pab4/$)+ y=s<> U3ABSB6/yP,/6/9v&m$?.-6/$+ŽQ \SB.)+&81>@,P&1&m$28V~ JM$ 6/$?4/$76/8 & )<$?6/4/$*XeAB,P.*&m25>R0<$76/8 &m.1$ˆ v0<sb.>c Y B B~%{$7 zš.-9)+&%8 &m25$76 ABS34P&*9+)+6 \ B>@AB$K$769:)<6v& 2 $76)+ y=s<> U3ABSB6/$?.-6/$+~ CeSB.):&I)+& Xe6P4/$x4/$76œ9+SB.1&-$781&-$x0B$?ŽF$?.4/$?&I4P$7.1 \S<.&m25>@81&-.mzš9F9<$?>@25A<& )+&9325ABAB$šy )G S 4NOzu}otxOJŽjt ŽoHvMvwJSNeŽ 8-S< /)<. cˆ (9F6F,/4/$?.7Žv6/$? >52@A 4/$ c yasb> U3ABSB6P936F,/4P$7.S<AšSBATV~HD)<6v&m$7.16/${238vU36/>52@AB P$74/81AB.m)+ \$?6 $7.6/$?&-SBy!4/$ ye)<.): E936F,/4P$7.7Žv v0<sb. )<6 9:)<6"&-$7AB6/$ $76!.1$?&>52@6/25$I,/4/$76œ):&9F.vU34/81$x4/$?&2@6/4/.1$š)+ /$76 )+ y=s<> U3ABSB6P \S<.- /256/4/.-256/AB$?.-6/$+~ {$? zš.19 )+&()<>5>@$*yaSB>}UMA<SB6/9:)<6v&m$?.-6/$ SBA<8 )!$7. $764/$?>R)+ 9+)+6F&-$7.16/$ 2 8vU36/>@25AB /$?4/8-AB.-)+ \$76h~ 0<$76/8 & )<$?6/4/$ XeA<,/. &m25>i / 1.-$ 0M258-$?."8vU36/>52@AB /$?4/8-A<.m)+ \$?6` \SB. 8125&-,e)+&m25SB6/$?6 &m25>s0<$76/8 &m.1$<~!{$? zš.19 )+&%9+)+6F&-$7. 9:)<69F.vU34/81$œ /2@6e)+6/4/$76h~ LQ6F&m)<>9:)<6v&-$7. 2$?68vU36/>@25AB /$?4/8-AB.-)+ $7.š Qc ~ [\@^]EYiVad]`_ ceu%cba O 250<$?&D$76 8vU36/>52@AB /$?4/8-A<.m)+ { $?4 c 9F63,P4/$7. SBA Qc %9:)<6v&m$7.?Ž;a$7819F.-250 v0bsb.14e)<6$76 9<SB. &m$78 &m$d0b$ x \.m)k&-2@>švš9:)<6 Xe6/4/$?8Q2h&-2@4 /c ~ h [\@^]EYiVad]`_ ceu> "a O 2 0B$& $?6 8 U36/>@25AB /$74P8-AB.-)+ { \SB. $?6` zš6/ab4/$ˆ)+ \SB.1 /2@6/4P.-2@6PAB$7. AB2 0B$&K0<$74 c yasb> U3ABSB6Py/,/6/9v&m$?.7Ž/$& y/,/6/9v&;vž/s<a HKrSrtFIF%JSH \4P0387~I8vU36/>52@AB P$74/81AB.m)+ \$?6 e)<.(c l 936F,/4P$7. SBA 1 Qc!P š9:)<6v&m$7.m ŽE;a$78-9F.1250$76)<>@A<SB.-2 &m ˆ$%4/$7.;Xe6P4/$7.Q.-SB;aS<&-&-$76 $?49+SB.1&-$78 &m$"): \81&)+6/4 &m25>\v~ L*6PAB250)+>@ABSB.125&- $?6/8{,/4M \ B.-81$7>@8 &m254u~ h O 2 [\@^]EYiVad]`_ ceu~œ a L*.1AB,/ ˆ$76v&m$?.Q \SB.Q)+&Q8vU36/>@25AB /$?4/8-AB.-)+ \$76 \SB.Q$?6 zš6/ab4/$ )+ yasb> U3ABS<6P \SB.- P2@6M 4/.12@6/AB$?.š ˆ$74 &ms+&)<> &(c y/,p6/9v&m$7. SBA &ms!y/,/6p9f&-$7. SBAdV 9+)+6 /)^0<$ 81&- B.-.1$7>@81$781SB.-4/$?6 c Ž/4P038?~ ):& )<6v&)+>9:)<6v&m$7. 28vU36/>@25AB /$?4/8-AB.-)+ \$76$?.#"ˆ /c ~ 0$&D$79F8-$? ya$7> v0bs<. 8vU36/>@25AB /$?4/8-AB.-)+ \$76 e)+. cl!9f6f,/4/$7.(sba$"œ Qc š9+)+6f&-$7.m ~ )/ 71 : v!%!%! 56!!%!% 3

53 h h! " $#! %!% &'! &' (*)+,.-/ ! 87 9: 201 G 5=<> 20'?A@sVEc1Ba_o Bƒ Eœ %4/$?6/6/$ SBy/Av)0B$ $7.K4/$7.KAB2 0B$?& $76 8-SB. &m$?.-$?& 8-$?9F0<$76/8œ): (c y=sb8125&-25&-0<$œ /$7> &)<> SŸ Ÿ Ÿ SBA $?&"y=sb8125&-250f&" /$?>5&m)<> ~Ÿ%2 B6/819<$7.ˆ)+&GXe6/4/$ $?6 4/$7>58-$79v0<$76/8 Ÿ SŸ SŸ.Ÿ PŽ v0<sb. Y S<A Y P~ N )+>@$?&{$7.{)+&(Xe6/4P$%$76 81$79v0B$?6/8 8 )<>5$74/$?8x)+&{&-S"y )" /256e)<6/4P$76 \ B>5AB$76P4/$ SBA e)+.q \SB.18-9<$?>&z{&*y )! ~DN$?.-$"yP.mzš}72581& <6/8-9+$7.%032):&dp#"SR(l N{xOJŽjyJSǸ )+ I4P$7>@81$79v0B$?6/8-$?6uŽ 4/$SXe6/$7.1$?&(0B$?4 %$ & ( *)+,)- Ÿ ' $7. ˆ2@6/4P81& ",/>52@A/~ G 9F8-$7 ˆya$7> RCeSB. ƒšsbax81$79v0b$?6/8-$?6/ SŸ.Ÿ,0Y Ÿ1 Ÿ2{Ÿ {Ÿ < Ÿ ^Š{Ÿ7 1 Ÿ <ŒMŽ /)<.u4/$?>@8-$?9v0b$76p8-$76 MŽ32PŽ ^ŠPŽ <Œ"$76,: -z{036/ /$74y 425) 6) ƒb ^Š5)-26) ƒb +Œ7) Š6) ƒb Y Œ Y ƒ8 G 64/$7>58-$79v0<$76/8( $?4 256/4/8 &x ",/>52@A,i -z{0m6p /$74 $7.x4/$?>@81$79v0B$?6/8-$?6 Ÿ92 Ÿ 1 Ÿ +Œ 8-S< e)<.{,: -z{036m /$?4ŠP~ {4P$?&( \ B>@AB$?6/4/$D$7. $&(0325>@9 )<.->52@A<&{ $?6 W)+81&Q /$7> &)<>us<a SŸ Ÿ Ÿ œ$760325>@9 )<.->52@A" ˆ$76 W)<8 & 8-$?9v0B$76P8 ): x /$7> &)<> ~ CeSB.ˆ ;: <:mcž>@)<4-=" / K;a$?&-$7AB6/$?. 4/$?6 256/2@ )<>5$,: -z{036/ /$?4 \SB.D$76 4/$?>@8-$?9v0B$76P8%)+ > SŸ.Ÿ,?<~ J3y=$?}72@$?>5& $?.5=" /cw š4/$76 ˆ2@6/25 )<>5$Q,i -z{0m6p /$74 \SB.x$76 4/$7>58-$?9F0<$76/8*)+ /$?>@$D8-$?9F0<$76/81$76u~ =" / š9:)<6 ;=$?8-9F.-2 0B$?8(0<$74 \ <>@AB$?6/4/$.-$?9F,/.-812@SB6/8 \SB.- ˆ$7> =! / "Y AA@ B CAA Œ v0m258 Y 9D4 FEGIH?%J 256 =" LK (,?M)N O)- P v0m258 RQ [\@^]EYiVad]`_ ceu{c\a SQ4M +UM>546/$74/8 & )<$?6/4/$K&)<;a$7>u \SB.T YVU!SBAœ8-$?9F0<$76/81$76 Ÿm {Ÿ92{Ÿ Œ{Ÿ 1 Ÿ7 iƒ Ÿ <Œ Ÿ M Š 1 ƒ U 2 =" / [\@^]EYiVad]`_ ceu* "a L*6PAB250`$76 )+>@ABSB.12@ ˆ$ ;/)<8-$?.-$?& y )4{U36e)< ˆ2@819 y/.1sbab.m)+ ˆ$7.12@6/A 4P$7.*Xe6/4/$?. 4/$?6 ˆ2@6/4/8 &m$d,: -z{036/ /$?4 \SB. $764/$7>58-$?9F0<$76/8%)+ W SŸ Ÿ \2@6/4P$7 /SB>54/$76P4/$X šsbay v ~{L*6PAB250 )<>5ABSB.-2 &m ˆ$76/8,/4P \ B.18-$?>@81&-2@4u~ h [\@^]EYiVad]`_ ceu œ a SQ4P032@4 )<>@A<SB.-2 &m ˆ$76"&m25>e)+&.m)<yPy=SB. &m$?.-$ $76 4P$7>@81$79v0B$?6/8š4/$?. /)<.I 256/4/81& ",P>@2@A,: -z{036/ /$?4u~ L*6/AB2 0)<>5ABSB.-2 &m ˆ$76/8,/4P \ B.18-$?>@81&-2@4u~ )/ 71 : v!%!%! 56!!%!% 3

54 ! " $#! %!% &'! &' (*)+,.-/ ! 87 9: 201 ;< 5=<> Bƒ Eœ $?6&-$79F81& )+ > zš6pab4/$dc S<A $?&D ˆ B6/81&-$7. )+ > zš6pab4/$dežw;a$7aba<$ S^0B$?.Q$&()<>5 W)<;a$?& ˆ$74 i &-$7AB6h~ Ÿ%2* B6/8-9+$7.)+& Xe6P4/$ )<>@>5$ \SB.-$?9<SB ˆ81&-$7.)+ 2 SBA )<>5>@$ \S<.-$79+SB ˆ81&m$?.)+ JŽj JSF*F%JgoN Sz6JSFQF JSF 2 K~ˆC{~ $79F87~w \SB.1$79<S< ˆ$7.D ˆ B6/81&-$7.1$?& ˆ$74 4/$?&D&m.1$74/25$!&m$7A<6 81>@$?&1&m$& 2&-$79F81&-$76 y )!yasb8-2 &m25sb6!1/~ [\@^]EYiVad]`_ ceu{c\a L*6PAB250 )<>@>5$* \SB.-$?9<SB ˆ81&-$7.()+ <6/81&-$7.-$& Y SB )<>5>@$* \SB.1$79+SB 8 &m$?.q): ˆ$74$&(&-$7AB6 8->5$?&1&m$?& 2u&-$79F81&-$76 Y h [\@^]EYiVad]`_ ceuq a L*6/AB2 0"$?6 )<>5ABSB.125&m ˆ$ $?4ˆ,P4P \ B.-$?>@81$781&-2@4 /c\e \SB.I):& Xe6/4/$()<>5>@${ \SB.1$79+SB œ 81&-$7.Q)+ B6P81&m$?.-$& 2w8 &m.1$76/ab$?6 ˆ$74 / 18 &($?& &m$?ab681>@$?&1&m$&~* {.1,/A H 6F,P&- M NS< ž.-)+&-& )<>5ABSB.-2 &m ˆ$76E ~ h 4/$?&x \ B>5AB$76P4/$%9:)<6 )<6v&)<A<$78 )+&x$& 8-,F &-.mz \SB.š$768 &m.-$?6/â )+ s> zš6/a<4/$c \.m)"$&()<>5 W)<;a$?&{ $?4 i &-$7AB6 9:)<69+SB6/8 &m.-,p$7.-$?8*2= Qcu &m2@4h~ [\@^]EYiVad]`_ ceu;œ a L*6/AB2 0$76 \SB.-;a$74/.1$?&8 /c e ()+>@ABSB.125&- $* \S<.Q):&TXe6P4/$ )+>@>@$ \SB.1$79+SB 8 &m$?. )+ <6/81&-$7.-$& 2u81&-.-$?6/AB$76 ˆ$74 / 18 & $?& &m$?ab681>@$&-&m$&~ h [\@^]EYiVad]`_ ceu q"a LQ6/AB250 $76 )+>@ABSB.125&- $ \SB. )+& Xe6/4/$ )<>@>5$ \SB.-$?9<SB ˆ81&-$ &-.-$76PAB$76 )+ ˆ B6/81&-$7.1$?& ˆ$74 / 18 &GF%rœ81>@$?&1&m$?4/$ &m$7a<6u~il*6/ab2 0 )<>5ABSB.125&m ˆ$76P8{,/4P \ <.-8-$?>@8 &m2@4h~ h

55 Ì ÄÇ ÁËÃÁÆËÌÁÌÍÌ ÊÀÍËÍÆÁÎ ÊËÁÌ Ì ØÆ ØÙÖÚ Ò Ð ÙÐØ Ø ÖÙÒ ÙÖ Ö Ø ÐÓ ÃË Å Æ ÒØ Ð Ö ÓÔ Ú ØØ Ø Òк ÓÖ Òµ ѵ Ð ÓÖ ØÑ ÖÓ Ø ØÖÙ ØÙÖ Ö¾ ¾¼¼ ¹ÓÖ Ò Ò µ Ñ Ò Å Ò Ò½ º ٠٠ؾ¼¼ к º¼¼¹½ º¼¼ Ñ Ò ÐÓ Ð ÌÖ ÓÖ Ï ÐÐ ÑÓ ½ Ö Ù Æ ¾¼¼ Ö Ù Æ Ì ÐÐ Ø Ñ Ö Ø ÐÔ Ñ Ð Ö Å Ø Ö Ð ÖÙ Ð Ú Ö Ø Ð Ñ Ò Ò Ò ÐÐ Ú ÒÐ ÐÔ Ñ Ð Ö Ð Ö ÖÓ ÒÓØ Ø Öµ ÇÈ Î Ì ÃËÌ Æ È Æ ËÌ ËÁ Æ Ê ÓÇÓ

56 Ñ Ò Ù Ù Ø¾¼¼ Ð ÓÖ ØÑ ÖÓ Ø ØÖÙ ØÙÖ Ö¾ ¾¼¼ ¹ÓÖ Ò Ò µ Ë ¾ Ö Ë Ö ØÐ ÔÖ Ú ÇÔ Ú ½ ¾ ±µ Ø Ð Ö ÒºÆ Ò Ø Ò ÙÖÚ Ö ÒÔÝÖ Ñ ¹ Ö Ñ Ð º ØÖ ÒØ Ú Ö ØÑ Ý ÖÐ Ö Á ÒÒ ÓÔ Ú ØÖ Ø ÔÝÖ Ñ ¹ Ö Öº ÒÔÝÖ Ñ ¹ Ö Ñ Ð Ø Ö Ò ½Ð ÖÙÒ Ö ÓÑ Ú ÖØ Ð ÖÝ ÖÐ Ö ØÓ ÒÙ Ö ËÔ Ö Ñ Ð Ò Ú ÒØ Ð ÒÙ ÖÒÓ ÒØ ÖÑ ÒÔÝÖ Ñ ¹ Ö ÓÑ ÙÒ Ø ÓÒ ÒØ ÐÐ º Ò Ú ÓÑ ÙÒ Ø ÓÒ Ù Ö Ð Ø Ò ÓÖÈÖ Ñ³ Ð ÓÖ ØÑ ÓÖ Ø Ò Ø Ñ Ò ÑÙÑÙ Ô Ò Ò ØÖ ÒÚ Ø ØÔÝÖ Ñ ¹ Ö º Ù Ò Ú Å Ò Ò Ø Ð Ò ÖÙ Ò Ò Ø Ò ØÒ Ò ÓÑÑ Ò ÑÙÑÙ Ô Ò Ò ØÖ Ö ¾ Ä Ú Ö Ò ÒØ º ØÑ Ò ÑÙÑÙ Ô Ò Ò ØÖ ÓÖ Ò ÓÐ Ö Ú Ó ÙÒ Ú Ò ÓÐ Ö ÒÝ Ð ÚÓÖ Ö ÒØÙÒ Ø ÒØ Ý Ð Ò º Ä Ú Ö ÒÚ Ø ØÙÓÖ ÒØ Ö Ø Ö ÚÓÖ ÐÐ ÒØ Ö Ö ÓÖ ÐÐ Ú Ø º ËÔ Ö Ñ Ð Ö Ú Ò Ð ÓÖ ØÑ Ö Ò Ö ØÑ Ò ÑÙÑÙ Ô Ò Ò ØÖ ÓÖ Ò ÔÝÖ Ñ ¹ Ö Ñ Ò ÒÙ Ö Ø Ç Òµº Ø Ò ÒØ Ø ÐÐ Ú Ø Ö ÓÖ ÐÐ º ËÔ Ö Ñ Ð Ö Ú Ò Ð ÓÖ ØÑ Ñ Ù Ö Ð Ø Ç Òµ Ö Ò Ö ÒÐ Ò Ø Ø Ñ ÐÐ ÑØÓ ÒÙ Ö ØÑ Ò ÑÙÑÙ Ô Ò Ò ØÖ ÓÖ ÒÔÝÖ Ñ ¹ Ö Ñ Ò ÒÙ Öº ¾ ÇÔ Ú ØØ Ø ÓÖØ ØØ Öµ

57 Ñ Ò Ù Ù Ø¾¼¼ Ð ÓÖ ØÑ ÖÓ Ø ØÖÙ ØÙÖ Ö¾ ¾¼¼ ¹ÓÖ Ò Ò µ Ë Ö Ë Ö ØÐ ÔÖ Ú Ò ÒØØ Ð ÒÒ Ø ÒÙ Ø Ð Ö ÑÑ ÔÓÖ Ò ÒØØ Ð Ò ÒÙ Ø Ð Ö ÔÓÖ Ø ÔÐ Ö ØÔ ÓÖ ÞÓÒØ Ð Ð Ò Ö» ÔÓÖ Ó ÚÓÖ ÐÐ ÒÙ Ö Ø ÖØÖ Ù Ò ÒØ Ö ÇÔ Ú ¾ ¾ ±µ ÓÚ ÒÓÚ Ö Ó Ò ÒØØ Ð Ò ÒÙ Ø Ð Ö ÔÓÖ ØÒ ÒÙÒ Öº Á Ø Ð Ò ØÖ Ø ¹ ÔÓÖ Ö Ö ÓÑ ÖÓÖ ÒØ Ö Ö Ö ÚÓÖ ÒÙ ÖÒ Ö Ø ËÔ Ö Ñ Ð Ú Ò Ð ÓÖ ØÑ Ñ Ù Ö Ð Ø Ç Òµ Ö Ú Ø ÒÚ Ø Ø ¹ ÔÓÖ Ö Ñ Ò ÒÙ ÖÓ ØÓ ÒÙ Ö Ó Ø Ò Ö Ò ÓÖØ ØÚ Ö Ø ÐØº ËÔ Ö Ñ Ð Ú Ò Ð ÓÖ ØÑ Ñ Ù Ö Ð Ø Ç Òµ Ö Ú Ø Ò ¹ ÔÓÖ Ö Ñ Ò ÒÙ ÖÓ ØÓ ÒÙ Ö Ó Ø Ò Ö ÒÚ Ö Ø ÐØÑ Ñ Ò ØÑÙÐ ÔÓÖ¹ Ø Ú º ÖÙ Ö ÖÖ ØÑÙÐ ÓÔ¹Ó Ò ÒØ Öº ØÓ ÒÙ Ö Ó Ø Ò Ö Ò ÓÖØ ØÚ Ö Ø ÐØ ÚÓÖ ÐÐ ÓÔÓ Ò ÒØ ÖÔ Ø Ò Ö ËÔ Ö Ñ Ð Ú Ò Ð ÓÖ ØÑ Ö Ú Ø ÒÚ Ø Ø ¹ ÔÓÖ Ö Ñ Ò ÒÙ ÖÓ ¾ Ø Ö Ò Ò Ò ÓÑ Ø ÖÑ ÐÐ ÑØÓ ÔÓÖµº Ò Ú Ð ÓÖ ØÑ Ò Ù Ö Ð Ø º¾ Ø Ö ÙÐ Ø Ò ÓÖ ÞÓÒØ Ð ÒØ Ú º Ø Ö Ø ÐÐ Ø Ø Ú ØÓ ÒØ ÖÙÑ Ð ÖØ ÇÔ Ú ØØ Ø ÓÖØ ØØ Öµ

58 Ñ Ò Ù Ù Ø¾¼¼ Ð ÓÖ ØÑ ÖÓ Ø ØÖÙ ØÙÖ Ö¾ ¾¼¼ ¹ÓÖ Ò Ò µ Ë Ö Ë Ö ØÐ ÔÖ Ú ÇÔ Ú ¾ ±µ Á ÒÒ ÓÔ Ú Ö Ö Ú ØØÓ Ú Ò Ö ÐØ Ðܽ ܾ ÜÒÓ Ý½ ݾ ÝÑÑ Ö ÐØ ÖÒ Ö ÖÑ ÐÐ Ñ Ð Ñ ÒØ Ö Ö ØÓÐ Ø Ö Ó ÓÑ Ø ÖØ ÖÑ Ø Ð Ñ ÒØÜ Ó Ò ÓÐ Ú ÒÓ Ñ Ð Ñ ÒØ ÖºÁ ÒÒ ÓÔ Ú Ò ÖÚ Ø Ò ÒÚÓ Ò Ð Ú Ò ÐÙØØ ÖÑ Ø Ð Ñ ÒØÝ º ÓÖÑ ÐØ Ò ÖÚ Ø Ò ½ ½ ¾ ÒÓ Ó Ý Ü ½ ÓÖ ½ ¾ ½ ½ ¾ Ñ Ð Ø Ö Ø Ö ØÑÙÐ Ó Ü Ý ÓÖ ½ ¾ ÐØ ÖÒ Ö Ò Ð Ú Ò º ÓÖ ØÓ Ú Ò Ö ½ºÎ Ð Ö Ò Ò Ú Ò ÓÖ ÒÐ Ò Ø ÚÓ Ò Ö ÒÐ Ò Ø ÚÓ Ò ÐØ ÖÒ Ö Ò Ð Ú Ò ½¾ ½ º ݽ ÝÑ ½ ½¼ ½ ½ ܽ ÜÒ ½ ½ ½¾ Á Ø Ð Ò ÖÄ µð Ò Ò ÒÐ Ò Ø ÚÓ Ò ÐØ ÖÒ Ö Ò Ð Ú Ò Ö ÐÙØØ ÖÑ Ü Ó Ý ºÄ µ Ò Ö Ú Ú Ð Ò Ö ÙÖ ÓÒ ÓÖÑ Ð Ä µ ¼¾ Ñ Ü Ä ¼ ¼µ ¼ ¼ ¼ ¼ Ý ¼ Ü Ú Ü Ý Ú ¼ ¼ Ú Ü Ý Ó Ý½ Ý ¾ ½ ËÔ Ö Ñ Ð Í ÝÐ Ò Ò Ø Ò Ä µø Ð ÓÖ Ú Ò ÖÒ Ü½ Ü ½ Ò ¼½¾ ËÔ Ö Ñ Ð Ð Ò Ò ÒÐ Ò Ø ÚÓ Ò ÐØ ÖÒ Ö Ò Ð Ú Ò ÓÖܽ ÜÒÓ Ý½ ÝѺ Ò Ú Ò Ð ÓÖ Ñ Ö ØÔ ÝÒ Ñ ÔÖÓ Ö ÑÑ Ö Ò Ö Ò Ö Ò Ú Ð ÓÖ ØÑ Ò Ù Ö Ð Ø º Ð Ú Ò º Ò Ú Ð ÓÖ ØÑ Ò Ù Ö Ð Ø º ËÔ Ö Ñ Ð Í Ú Ð ÓÖ ØÑ ÒØ Ð ØÖ ÔÔÓÖØ Ö ÒÐ Ò Ø ÚÓ Ò ÐØ ÖÒ Ö Ò ¾ ÇÔ Ú ØØ Ø ÓÖØ ØØ Öµ

59 Ñ Ò Ù Ù Ø¾¼¼ Ð ÓÖ ØÑ ÖÓ Ø ØÖÙ ØÙÖ Ö¾ ¾¼¼ ¹ÓÖ Ò Ò µ Ë Ö Ë Ö ØÐ ÔÖ Ú ÇÔ Ú ¾ ±µ Á ÒÒ ÓÔ Ú ØÖ Ø ÙÒ ØÖ Ò ÓÚ Ö Ð Ø Ø º ÓÖ Ò ØÖ Ò Ì Ì ½ Ì ¾ Ì Ñ Ð Ò Ñ Ò Ö ÖÚ Ô Ö Ó Ò ÌØ Ð ØÚ Ö ØÑ Ò Ø Ô ¼ Ð ØÌ Ô ½ Ñ Ì ½ Ñ ËØÖ Ò ÒÌ ÖÔ Ö Ó Ò Ì Ì ½ Ú Ð ØÓ Ò Ú ºÌ Ô Ì ÓÖ ½ ¾ Ñ Ôº Ô Ú ØÔÐ Ö ØÓ ÓÔ Ö ÌÓÚ Ö Ò Ò ÒÑ Ò Ò ÓÖ Ù ØÔÔÓ Ø ÓÒ Ö Ò ØÖ Ò Ì Ð Ò Ñ ØÚ Ö Ô Ö Ó Ú Ò Ô Ö Ó Ô Ñ ¾º ßÞÐ Ô ÇÚ Ò Ø Ò ØÖ Ò ÖÔ Ö Ó Ô Ñ ¾ º Ö ÑÓ Ö ØÖ Ò Ò Ô Ö Ó º ËÔ Ö Ñ Ð Ò ÚÔ Ö Ó Ò ÓÖ ØÖ Ò ÒÌ Ó ÓÑ ØÖ Ò Ò Ö Ð Ò Ñ Ô Ö Ó Ò ÖÔ Ö Ó ÒÔ Ñ ¾ º ËÔ Ö Ñ Ð Ö Ú Ò Ð ÓÖ ØÑ Ñ Ù Ö Ð Ø Ç Ñ¾µ Ö Ö Ò ÖÔ Ö Ó Ò Ò ØÖ Ò Ì Ð Ò Ñº Á Ø Ð Ò Ò ÖÚ Ú Ø Ò ØÖ Ò Ë Ð Ò Ò Ø Ò ÒÐ Ò Ø Ô Ö Ó Ð ØÖ Ò Ë Ú Ò Ò Ð ØÖ Ò Ò µº ÒÐ Ò Ø Ô Ö Ó Ð ØÖ Ò ¾ ÔÓ Ø ÓÒ¾Ó Ô Ö Ó ÒÔ Ð ØÖ Ò Ò Ú Ö ØÙÒ ÖØÖ Ð Ú Ö Ò Ø Ð ÙÆÜ ÖÒ Ë Ø Ö Ò Ñ Ö Ø ÙÆÜ¹ØÖ Ø ÓÖÓÚ Ò Ø Ò ØÖ Ò Ë Ò Ö Ò ÒÙ Ú Ú Ö Ò Ø Ð Ë Ö Ð ØÖ Ò ÒË ¾ ½¾ ÓÑ ÖÔ Ö Ó Ò º ËÔ Ö Ñ Ð Ö Ú Ò Ð ÓÖ ØÑ Ñ Ù Ö Ð Ø Ç Ò¾µ Ö Ú Ø Ø ÙÆÜ¹ØÖ ÓÖ Ò ØÖ Ò Ë Ð Ò Ò ÓÖ Ú Ö ÒÙ Ú ÙÆÜ¹ØÖ Ø Ò ÖØÓÔÓ Ø ÓÒ Ö ÚÓ Ú ¾ Ó Ø Ô º ÚÓÖ ÙÆÜ ÖÒ Ø ÖØ Ò ÔÓ Ø ÓÒ ÚÓ Ú Ö Ð ØÖ Ò Ò Ú Ö Ò Ø ÐÚ ÓÑÔÖ Ü Ó Ð Ø Ø Ò ÒÑ ÐÐ Ñ ÚÓ Ú ÖÑ Ò ØÑÙÐ º Á Ø Ð Ò Ò ÒØ Ø Ø ÙÆÜ¹ØÖ ÓÖ Ò ØÖ Ò Ð Ò Ò Ö Ø Ð ØÑ Ç ½µØ Ò Ò ÓÒ ØÖÙ Ö Ç ÒµØ º ¾ ËÔ Ö Ñ Ð Ð Ò Ø Ô Ö Ó Ð ØÖ Ò Ø Ç Ò¾µº Ò Ú Ò Ð ÓÖ ØÑ Ö Ú Ø Ò ØÖ Ò Ë Ð Ò Ò Ò Ö Ò ¾

60 DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Algoritmer og Datastrukturer 2 (2003-ordning) Antal sider i opgavesættet (incl. forsiden): 7 (syv) Eksamensdag: Torsdag den 14. juni 2007, kl Eksamenslokale: Skøjtehallen, Gøteborg Allé 9, Århus N Tilladte medbragte hjælpemidler: Alle sædvanlige hjælpemidler (lærebøger, notater, lommeregner). Computer må ikke medbringes. Materiale der udleveres til eksaminanden: OPGAVETEKSTEN BEGYNDER PÅ NÆSTE SIDE ooo

61 Eksamen Sommeren 2007 Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig prøve Side 2 af 7 sider Opgave 1 (25%) I denne opgave betragtes net-grafer. En net-graf er en uorienteret vægtet graf hvor knuderne er arrangeret i et net af k rækker og l søjler, således at en knude er forbundet med knuderne til venstre og højre for knuden (hvis disse findes) og knuderne over og under knuden (hvis disse findes). Vægtene på kanterne antages at være positive heltal. Nedenstående viser en net-graf for k = 4 og l = 5. A 27 B C D E t F G H I J K 52 L 3 4 M N 2 O s P Q R S T Den nederste venstre knude i en net-graf betegnes s og den øverste højre knude betegnes t. Spørgsmål a: Angiv antal knuder n og kanter m i en net-graf som funktion af antal rækker k og søjler l. Angiv som funktion af k og l udførselstiden for Dijkstra s algoritme for at finde en korteste vej fra s til t i en net-graf. Spørgsmål b: Angiv en kortest vej fra s til t i ovenstående eksempel (hvor s og t betegner knuderne P og E). Angiv knuderne langs stien og længden af stien. I resten af denne opgave vil vi kun betragte stier fra s til t hvor man ikke drejer i to knuder efter hinanden, d.v.s. imellem to knuder hvor man drejer skal der mindst være en knude hvor man fortsætter lige ud. I ovenstående eksempel er stien P ˆQ ˆL M N Ô J E ikke en lovlig sti (enˆangiver at der drejes i knuden), da man drejer i både Q og L. Derimod er stien P Q ˆR M H Ĉ B Â F ˆK L M N Ô J E en lovlig sti da der mellem alle knuderne hvor der drejes er mindst en knude hvor der køres lige ud (bemærk at knuden M besøges to gange). (Opgavesættet fortsætter)

62 Eksamen Sommeren 2007 Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig prøve Side 3 af 7 sider Spørgsmål c: Angiv en kortest vej fra s til t i ovenstående eksempel hvor man ikke drejer i to knuder efter hinanden. Angiv knuderne langs stien og længden af stien. Spørgsmål d: Beskriv en algoritme der finder den kortest vej fra s til t i en net-graf hvor man ikke drejer i to knuder umiddelbart lige efter hinanden. Angiv algoritmens udførselstid som funktion af antal rækker k og søjler l. (Lav f.eks. en orienteret graf hvor hver knude i net-grafen bliver repræsenteret af flere knuder og således at en kortest sti i net-grafen hvor man ikke drejer i to knuder efter hinanden svarer til en korteste sti i den nye orienterede graf.) (Opgavesættet fortsætter)

63 Eksamen Sommeren 2007 Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig prøve Side 4 af 7 sider Opgave 2 (15%) En uorienteret graf siges at være to-delt hvis grafens knuder V kan deles op i to mængder V 1 og V 2, således at alle kanter i G går mellem en knude i V 1 og en knude i V 2. D.v.s. der findens ingen kanter der forbinder to knuder V 1 eller to knuder i V 2. Et eksempel på en to-delt graf er følgende graf: V 1 A D F G I V 2 B C E H J K Bemærk at en to-delt graf kan aldrig indholde en cykel med et ulige antal kanter. Spørgsmål a: Vis at nedenstående graf er to-delt ved at angive en opdeling af knuderne i V 1 og V 2 så alle kanter går imellem en knude i V 1 og en knude i V 2. B G C E A D J I H K F Spørgsmål b: Beskriv en algoritme der afgør om en sammenhængende graf med n knuder og m kanter er to-delt. Angiv algoritmens udførselstid. (Opgavesættet fortsætter)

64 Eksamen Sommeren 2007 Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig prøve Side 5 af 7 sider Opgave 3 (15%) I denne opgave betragter vi minimum udspændende træer for vægtede uorienterede grafer. Det antages at alle vægte er forskellige. A I B D 4 E G 6 J K C 8 F 3 H Spørgsmål a: Angiv kanterne i et minimum udspændende træ for ovenstående graf og vægten af træet. I det følgende ønsker vi at vedligeholde et minimum udspændende træ under fjernelse af kanter i en eksisterende graf. Man kan i det følgende bruge nedenstående sætning om minimum udspændende træer uden bevis: (Snitsætningen) Lad G være en vægtet uorienteret graf hvor alle kanter har forskellige vægte. Lad V 1 og V 2 være være en opdeling af knuderne i G. Et minimum udspændende træ for G indeholder den letteste kant mellem V 1 og V 2. Spørgsmål b: Lad G være en vægtet uorienteret graf og T et minimum udspændende træ for G. Antag vi vil slette en kant (u, v) fra grafen. Lad G være den nye graf. Beskriv en algoritme til at finde et minimum udspændende træ T for G, når det minimum udspændende træ T er kendt for G. Algoritmens udførselstid skal være O(m) hvor m er antal kanter i grafen G. (Brug snitsætningen hvis (u, v) er en kant i T.) (Opgavesættet fortsætter)

65 Eksamen Sommeren 2007 Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig prøve Side 6 af 7 sider Opgave 4 (25%) I denne opgave ønsker vi, givet to sekvenser S = x 1,...,x m og T = y 1,...,y n af længde m og n, at finde en ny sekvens U som indeholder S og T som delsekvenser. En sådan sekvens U betegnes en super-sekvens for sekvenserne S og T. Hvis S = A B A B A A og T = B B A B B, så er nedenstående sekvenser eksempler på super-sekvenser for S og T (understregning og overstregningen viser forekomsten af S og T): U 1 = A B A B A A B B A B B U 2 = A B B A B B A A U 3 = A B A B A B A B Sekvenserne U 2 og U 3 er eksempler på korteste super-sekvenser for S og T, da alle super-sekvenser for eksemplet vil have længde 8 eller mere. Vi lader L(i, j) betegne længden af den korteste super-sekvens for x 1,...,x i og y 1,...,y j. Bemærk at L(m, n) er længden af den korteste super-sekvens for S og T. L(i, j) kan beskrives ved følgende rekursionsformel: L(i, j) = j hvis i = 0 i hvis j = min{l(i 1, j), L(i, j 1)} hvis i > 0 j > 0 x i y j 1 + L(i 1, j 1) hvis i > 0 j > 0 x i = y j Spørgsmål a: T = B B A. Udfyld nedstående tabel for L(i, j) når S = A B A B og L(i, j) Spørgsmål b: Angiv en algoritme baseret på dynamisk programmering der finder længden af en kortest super-sekvens for to sekvenser S og T af længde m og n. Angiv algoritmens udførselstid. Spørgsmål c: Udvid algoritmen fra spørgsmål b) til at rapportere en kortest supersekvens for to sekvenser S og T af længde m og n. Angiv algoritmens udførselstid. (Opgavesættet fortsætter)

66 Eksamen Sommeren 2007 Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig prøve Side 7 af 7 sider Opgave 5 (20%) Spørgsmål a: Angiv suffix-arrayet for strengen: B A N A N A S. Spørgsmål b: Angiv suffix-træet for strengen: B A N A N A S. I det følgende ønsker vi givet en streng S og et heltal k at finde en delstreng i S af længde k som forekommer flest gange forekomsterne må godt overlappe. For k = 4 er den mest hyppige forekomst af en streng af længde k i nedenstående eksempel delstrengen A B C A, som forekommer 6 gange. S = ABCABCACBABCABCAABCACBABCBABCAAC I det følgende kan antages at et suffix-træ for en streng af længde n fra et alfabet med O(1) tegn kan konstrueres i O(n) tid. Spørgsmål c: Beskriv en algoritme der givet en streng S og et heltal k finder en delstreng i S af længde k som forekommer flest gange. Det antages at S har længde n og er fra et alfabet med O(1) tegn. Angiv algoritmens udførselstid.

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

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

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

Læs mere

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

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

Læs mere

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

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

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

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

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

Læs mere

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET INSTITUT FOR 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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET INSTITUT FOR DATALOGI, AARHUS UNIVERSITET Science and Technology EKSAMEN Antal sider i opgavesættet (incl. forsiden): 6 (seks) Eksamensdag: Fredag den 22. juni 2012, kl. 9.00-13.00 Eksamenslokale: Finlandsgade

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

deta = A = deta = a 11 deta 11 a 12 det A 12 + a 13 deta 13 deta = deta = 1(0 2) 5(0 0) + 0( 4 0) = 2 deta = a i,j deta i,j

deta = A = deta = a 11 deta 11 a 12 det A 12 + a 13 deta 13 deta = deta = 1(0 2) 5(0 0) + 0( 4 0) = 2 deta = a i,j deta i,j Ä Ò Ò ØÖ Ø ÓÖ Ñ Ò ÓÔ Ú Ö Ä Ú Ø ÓÖÑ Ð Ø Ö Ó Ì ÓÑ Â Ò Ò ÓÒØ ÒØ ½ Ø ÖÑ Ò ÒØ Ö ½º½ Í Ú Ð Ò º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ½º½º½ ÑÔ Ð Í Ú Ð Ò Ø ÓÖ

Læs mere

ÁÒØÖÓ Ù Ø ÓÒØ Ð Ö Ó Ø Ò ÐÐÙ ØÖ Ø ÓÒ ÖÑ Å Ø ÈÓ Ø ÓÖ Ö Ã¹ÌÍ ÅÓÖØ ÒÀ Ö ½¾º ÔÖ Ð¾¼¼¼ ½ ÀÚ ÖÅ Ø ÈÓ Ø Å Ø ÈÓ Ø Ö ØÔÖÓ Ö ÑÑ Ö Ò ÔÖÓ ¹ Ö ØÔÅ Ø ÓÒØº ØÅ Ø ÈÓ Ø¹ÔÖÓ Ö Ñ Ö ÒÓÔ Ö ØØ Ð Ø Ò Ö Ö Ò ÐÐ Ö Ö ÙÖ Öº Å Ø ÈÓ

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

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

ÁÒ ØÖÙØ ÓÒ Ë Ø Ö Ø ØÙÖ ÁÒØÖÓ ÙØ ÓÒ ÁÒ ØÖÙØ ÓÒ Ë Ø ÁÒØ Ö ØÛ Ò Ó ØÛ Ö Ò Ö Û Ö Ú Ð ØÓ ÔÖÓ Ö ÑÑ Ö ËØ Ô ØÓ Ò ÁÒ ØÖÙØ ÓÒ Ë Ø ÓÖ Ú Ò Óѹ ÔÙØ Ö Û Ø Ø Ú Ð Ð ÐØ

ÁÒ ØÖÙØ ÓÒ Ë Ø Ö Ø ØÙÖ ÁÒØÖÓ ÙØ ÓÒ ÁÒ ØÖÙØ ÓÒ Ë Ø ÁÒØ Ö ØÛ Ò Ó ØÛ Ö Ò Ö Û Ö Ú Ð ØÓ ÔÖÓ Ö ÑÑ Ö ËØ Ô ØÓ Ò ÁÒ ØÖÙØ ÓÒ Ë Ø ÓÖ Ú Ò Óѹ ÔÙØ Ö Û Ø Ø Ú Ð Ð ÐØ ÁÒ ØÖÙØ ÓÒ Ë Ø Ö Ø ØÙÖ ÁÒØÖÓ ÙØ ÓÒ ÁÒ ØÖÙØ ÓÒ Ë Ø ÁÒØ Ö ØÛ Ò Ó ØÛ Ö Ò Ö Û Ö Ú Ð ØÓ ÔÖÓ Ö ÑÑ Ö ËØ Ô ØÓ Ò ÁÒ ØÖÙØ ÓÒ Ë Ø ÓÖ Ú Ò Óѹ ÔÙØ Ö Û Ø Ø Ú Ð Ð ÐØ ÖÒ Ø Ú Ò ØÓ ÐØ ÖÒ Ø Ú Ò ÕÙ ÒØ Ø Ú Ñ Ø Ó ÓÛ Ó Ø ÓÑÔ

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

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

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528)

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528) Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528) Institut for Matematik & Datalogi Syddansk Universitet Mandag den 3 Januar 2011, kl. 9 13 Alle sædvanlige hjælpemidler

Læs mere

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

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

Læs mere

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

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

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

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

Læs mere

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

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

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