66
Skriftlig Eksamen Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet Mandag den 27. maj 2002, kl. 9.00–13.00

Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Skriftlig EksamenAlgoritmer og Datastrukturer (dADS)

Datalogisk Institut

Aarhus Universitet

Mandag den 27. maj 2002, kl. 9.00–13.00

Page 2: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

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ærdierneer enten 0 eller 1. De mindst-betydende cifre star til venstre. Eksempelvis hartallet 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 somsædvanligt med A[0..n], ligesom A[0..k] betegner den del af tallet der bestar afde k mindst-betydende cifre. I eksemplet ovenfor er A[0..6] lig med 57, medensA[0..4] er lig med 9.

Endelig bruger vi den sædvanlige notation + og ∗ for addition og multiplikationaf heltal.

Spørgsmal a: Bevis at der for vilkarlige positive heltal a, b og for k > 0 gælder

a ∗B[0..(k + 1)] = a ∗B[0..k] + a ∗B[k] ∗ 2k,

hvor B angiver den binære representation af b. 2

Betragt nu følgende algoritme.

Algoritme: Heltalsmultiplikation

Input : a, b, positive heltal, med b givet vedsin binære repræsentation B.

Output : S = a ∗ bMetode : S ← 0; k ← 0;

{I}while k < |B| do

S ← S + a ∗B[k];a← 2 ∗ a;k ← k + 1

Spørgsmal b: Angiv en passende gyldig invariant I, og angiv hvilke bevisbyrder,der skal eftervises i et gyldighedsbevis. 2

Spørgsmal c: Eftervis bevisbyrderne fra spørgsmal b, og argumenter for atalgoritmen er korrekt. 2

Page 3: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Opgave 2 (25%)

En internet-søgemaskine opbevarer en stor delmængde af de tilgængelige web-sider pa internettet. Siderne kan opfattes som en orienteret graf, hvor grafensknuder svarer til web-siderne og hvor der findes en kant fra en knude u til enknude v hvis og kun hvis der pa siden svarende til u er et link til siden svarendetil v. Hvis en forespørgsel til en søgemaskine resulterer i flere mulige svar i formaf en liste af relevante web-sider, sa ønskes disse sorteret efter aftagende relevans.

I denne opgave betragtes tre mulige mal for relevansen af en side, alle baseret paden intution at en side er relevant, hvis mange andre sider refererer til den. Ne-denstaende tre spørgsmal beskæftiger sig hvert med eet af disse mal. Et eksempelmed alle tre mal findes sidst i opgaven.

Vi antager i det følgende at grafen er givet ved adjacency list repræsentationen ogat der som sædvanligt er henholdsvis n knuder og m kanter i grafen. Længden afen sti i grafen er som sædvanligt antallet af kanter der indgar i stien. Afstandenfra en knude u til en knude v er længden af den korteste sti fra u til v, ogbetegnes d(u, v). Hvis der ingen sti findes fra u til v, er d(u, v) =∞.

Spørgsmal a: Beskriv en algoritme, der beregner indgraden af hver knude igrafen. Hvad er udførselstiden for algoritmen som funktion af n og m? 2

Spørgsmal b: Beskriv en algoritme, der for hver knude v beregner for hvormange knuder u (u 6= v) der findes en sti fra u til v. Hvad er udførselstiden foralgoritmen? 2

Spørgsmal c: Beskriv en algoritme, der for hver knude v beregner summen

u∈N(v)

(

1

2

)

,d(u,v)

hvor N(v) er de knuder u som opfylder u 6= v ∧ d(u, v) 6= ∞. D.v.s. en knudemed afstand k til v bidrager med ( 1

2)k til summen for v. Hvad er udførselstiden

af algoritmen? 2

Eksempel: Tabellen nedenfor angiver de beregnede værdier i spørgsmal a til c fornedenstaende 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/4.

1 5

3 6

2

4

0

v 0 1 2 3 4 5 6

a 1 0 2 2 2 1 1

b 1 0 6 4 2 5 4

c 1/2 0 3/2 3/2 1 5/4 1

Page 4: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Opgave 3 (25%)

Betragt en mængde {x1, x2, . . . , xn} af n forskellige tal (n ≥ 2). Opstillet i nume-risk orden

xi1 < xi2 < . . . < xin

kalder vi (xij , xij+1) et nabo-par med afstand dj = xij+1

− xij , og kalder

d = min{dj |1 ≤ j ≤ n− 1}

for mængdens min-afstand.

Spørgsmal a: Angiv min-afstand for nedenstaende mængde.

{4, 26, 1, 10, 23, 17}

2

Spørgsmal b: Beskriv hvordan man givet en mængde af n forskellige tal kanfinde min-afstand i tid O(n logn). 2

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ørgsmal c: Beskriv hvorledes et balanceret søgetræ kan udvides sa insert

og delete tager tid O(log n) og min-afstand tager tid O(1), hvor n betegnerantal tal i mængden før operationen udføres. 2

Vi ønsker nu at tilføje en operation interval-min-afstand(y1, y2), der returnermin-afstand for mængden [y1, y2] ∩ S.

Eksempel: interval-min-afstand(2, 23) pa overstaende mængde re-turnerer 6, hvilket er afstanden for bade nabo-parret (4, 10) og nabo-parret (17, 23).

Spørgsmal d: Beskriv hvordan man til operationerne fra spørgsmal c kan tilføjeoperationen interval-min-afstand, saledes at min-afstand udføres i tid O(1)og de tre andre operationer i tid O(log n). 2

Page 5: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Opgave 4 (25%)

I denne opgave betragtes en mængde positive heltal x1, x2, . . . , xn, hvis sum erlig S. Vi ønsker at udvikle en algoritme, der kan finde en delmængde af tallene,hvis sum kommer tættest muligt pa S/2.

Betragt følgende udsagn:

U(s, k): Der findes en delmængde af x1, x2, . . . , xk, hvis sum er lig med s.

Spørgsmal a: Lad {x1, x2} = {1, 3}. Udfyld følgende tabel med sandheds-værdierne for U(s, k) for 0 ≤ s ≤ 4 og 0 ≤ k ≤ 2.

0

12

34

0 1 2ks

2

Det pastas at U(s, k) opfylder følgende rekursionsformel.

U(s, k) =

True hvis s = 0False hvis (s > 0) ∧ (k = 0)U(s, k − 1) hvis xk > sU(s, k − 1) ∨ U(s− xk, k − 1) hvis xk ≤ s

Spørgsmal b: Argumenter for denne pastand. 2

Spørgsmal c: Angiv en algoritme baseret pa dynamisk programmering, dergivet x1, x2, . . . , xn, S og K beregner alle værdier U(s, k) for 0 ≤ s ≤ S og0 ≤ k ≤ K. Argumenter for algoritmens udførelsestid. 2

Spørgsmal d: Hvordan kan man udvide algoritmen ovenfor til at finde endelmængde af tallene x1, x2, . . . , xn hvis sum er tættest muligt pa S/2? 2

Page 6: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Skriftlig EksamenAlgoritmer og Datastrukturer (dADS)

Datalogisk Institut

Aarhus Universitet

Tirsdag den 13. august 2002, kl. 9.00–13.00

Page 7: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Opgave 1 (25%)

Betragt følgende algoritme, som kvadrerer et positivt heltal ved udelukkende atanvende addition, subtraktion og halvering af lige tal.

Algoritme : Kvadrering

Input : heltal A ≥ 1Output : r = A2

Metode : a← 1; b← 0; c← 0; x← A;{ A2 = ax2 + 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ørgsmal a: Angiv hvilke bevisbyrder der skal eftervises i et gyldighedsbevisfor algoritmen. 2

Spørgsmal b: Eftervis bevisbyrderne fra spørgsmal a, og argumenter for atalgoritmen er korrekt. 2

Spørgsmal c: Hvad er udførselstiden for algoritmen? 2

Page 8: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Opgave 2 (25%)

Betragt følgende graf — en sakaldt H(2)-graf —

,

som bestar af 2 dobbelt-sekskanter( )

omgivet af 3 enkelt-sekskanter ( ).

Dette er et specialtilfælde af de mere generelle H(k)-grafer, som bestar af kdobbelt-sekskanter omgivet af k + 1 enkelt-sekskanter.

Spørgsmal a: Angiv – udtrykt ved k – antallet af knuder og kanter i enH(k)-graf. 2

Betragt nu en vægtet H(k)-graf, hvor de vandrette kanter i enkelt-sekskanternehar vægt 1 (øverst) og 3 (nederst), og hvor alle andre kanter i savel enkelt- somdobbelt-sekskanterne har vægt 2. Eksempelvis har H(1)-grafen vægtet pa dennemade følgende udseende

1

3

1

3

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

.

Spørgsmal b: Tegn en sadan vægtet H(2)-graf og angiv et letteste udspændendetræ for grafen. 2

Spørgsmal c: Angiv vægten af et letteste udspændende træ for en sadan vægtetH(k)-graf. Argumenter for svaret. (Vink: Husk at for en sammenhængende grafmed n knuder indeholder et letteste udspændende træ n− 1 kanter). 2

Lad N > 3 være et vilkarligt heltal og betragt vægtede H(k)-grafer hvor alleøvre vandrette kanter i enkelt-sekskanterne har vægt 1 og alle de nedre vandrettekanter i enkelt-sekskanterne har vægt N (N erstatter 3), og hvor alle andre kanteri grafen har vægte der er strengt større end 1 og strengt mindre end N (vægtenekan være forskellige).

Spørgsmal d: Angiv en algoritme med udførselstid lineær i grafens størrelse,der finder et letteste udspændende træ for en sadan graf. Argumenter for atalgoritmen er korrekt. Antag at grafen som sædvanligt er givet ved en adjacency

list repræsentation. 2

Page 9: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Opgave 3 (25%)

I denne opgave betragter vi mængder af tal hvor hvert tal enten er blat ellergult. For en mængde af n tal x1 < x2 < · · · < xn, er [xi, xj] et maksimalt blat

interval hvis xi, xi+1, . . . , xj alle er bla og xi−1 er gult eller i = 1, og xj+1 ergult eller j = n. Tilsvarende defineres maksimale gule intervaller. Spændvidden

af et maksimalt interval [xi, xj ] er differencen xj − xi. Bemærk at et maksimaltinterval, der kun indeholder et element, har spændvidde 0.

Spørgsmal a: Angiv de i alt 6 maksimale bla og gule intervaller for mængden,

{ 1, 3, 4, 6, 8, 9, 13, 14, 18, 29, 31, 42, 57, 59, 63 } ,

hvor xi angiver at xi er blat. Angiv ogsa spændvidderne af de seks maksimaleintervaller. 2

Spørgsmal b: Beskriv en algoritme, der givet en sorteret liste af n bla og guletal kan finde de maksimale bla og gule intervaller i tid O(n). 2

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 (bade bla og gule) i mængden.

Spørgsmal 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øroperationen udføres. 2

Spørgsmal d: Beskriv hvorledes datastrukturen kan udvides sa den understøtteren operation sum der returnerer summen af spændvidderne af de maksimaleintervaller i tid O(1). 2

Page 10: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Opgave 4 (25%)

I denne opgave antager vi at n og S er positive heltal, og at C1, C2, . . . , Cn ermængder af positive heltal, hvor hver mængde højest indeholder S positive heltal.Vi ønsker at afgøre om vi kan udtage et element fra hver mængde saledes at deressum er S, dvs. om der findes n elementer, x1, x2, . . . , xn, hvor xi ∈ Ci, saledes at∑n

i=1 xi = S.

Betragt følgende udsagn for 0 ≤ k ≤ n og 0 ≤ s ≤ S:

U(k, s) : Der findes x1 ∈ C1, x2 ∈ C2, . . . , xk ∈ Ck saledes at∑k

i=1 xi = s.

Spørgsmal a: Lad n = 3, S = 7, C1 = {1, 2, 4}, C2 = {2, 3, 5}, og C3 = {3, 4}.Udfyld nedenstaende tabel med sandhedsværdierne for U(k, s) for 0 ≤ k ≤ n og0 ≤ s ≤ S.

0

12

3

0 1 2 3 4 5 6 7sk

2

Det pastas, 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 ∈ Ck : (y ≤ s) ∧ U(k − 1, s− y)False ellers

Spørgsmal b: Argumenter for denne pastand. 2

Spørgsmal c: Angiv en algoritme, baseret pa dynamisk programmering, dergivet C1, C2, . . . , Cn og S beregner værdien U(n, S). Argumenter for algoritmensudførselstid. 2

Page 11: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Skriftlig EksamenAlgoritmer og Datastrukturer (dADS)

Datalogisk Institut

Aarhus Universitet

Tirsdag den 27. maj 2003, kl. 9.00–13.00

Page 12: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Opgave 1 (25%)

For konstanten π = 3.141592 . . . gælder identiteten

π2

6=

1

12+

1

22+

1

32+

1

42+

1

52+ · · · =

∞∑

i=1

1

i2

Følgende algoritme beregner summen af de første n led i ovenstaende sum, d.v.s

n∑

i=1

1

i2

Algoritme : π2/6

Input : heltal n ≥ 1

Output : heltal p og q , hvorp

q=

n∑

i=1

1

i2

Metode : p← 1;q ← 1;k ← 1;{

p

q=

k∑

i=1

1

i2∧ k ≤ n

}

while k < n do

k ← k + 1;p← p ∗ k ∗ k + q ;q ← q ∗ k ∗ k

Spørgsmal a: Angiv hvilke bevisbyrder der skal eftervises i et gyldighedsbevisfor algoritmen. 2

Spørgsmal b: Eftervis bevisbyrderne fra spørgsmal a. 2

Spørgsmal c: Bevis at algoritmen er korrekt. 2

Spørgsmal d: Hvor mange bits kræves til repræsentation af heltallene p hen-holdsvis q udtrykt som funktion af n i O-notation ? 2

Page 13: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Opgave 2 (25%)

Lad x1 < x2 < · · · < xn være n heltallige elementer, og lad til hvert xi væretilknyttet en heltallig værdi yi. De n elementer og deres tilknyttede værdier kanopfattes som n punkter (x1, y1), (x2, y2), . . . , (xn, yn) i planen.

Opgaven beskæftiger sig med at understøtte operationen MinElementAbove(t)som returnerer det mindste element xi, hvis tilhørende værdi yi er større end ellerlig med t, eller meddeler at der ikke findes et sadant element. I nedenstaende figurer det returnerede element x-koordinaten af det markerede punkt.

-

6

x

y

t

Spørgsmal a: Hvad er MinElementAbove(10) for punkterne (4,9), (5,17), (19,6),(23,10), (25,15), (40,7) ? 2

I det følgende betragtes en udvidelse af rød-sorte søgetræer til opbevaring afelementerne. Lad v.x være elementet gemt i knuden v. Hver knude v udvides tilogsa at gemme værdien v.y knyttet til v.x, og den største værdi, v.ymax, tilknytteten knude i undertræet med rod i v. Nedenstaende er et udvidet rød-sort søgetræfor punkterne fra spørgsmal a. I knuderne er øverst angivet x, y og nederst ymax.Røde knuder er markeret med dobbelt-cirkler.

19,617

4,917

25,1515

5,1717

23,1010

40,77

Spørgsmal b: Beskriv hvordan et udvidet rød-sort søgetræ kan vedligeholdesunder indsættelse og sletning af elementer (og tilknyttede værdier) i tid O(log n).

2

Spørgsmal c: Beskriv hvordan MinElementAbove(t) kan udføres i tid O(log n).Argumenter for algoritmens udførselstid og korrekthed. 2

Page 14: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Opgave 3 (25%)

Givet to strenge S = S[1]S[2] · · ·S[n] og U = U [1]U [2] · · ·U [k], sa er U en super-

sekvens for S hvis S er en delsekvens af U . For eksempel er A C A C T G T A en super-sekvens 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 Uer en korteste fælles super-sekvens for S og T , hvis U er en super-sekvens for badeS og T , og der findes ikke en kortere streng der er en super-sekvens for bade Sog T .

Spørgsmal a: Argumenter for at en korteste fælles super-sekvens for S og Thar længde højest n + m, og for at en korteste fælles super-sekvens ikke altid erentydig. 2

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 pastas at C(i, j) opfylderfølgende rekursionsformel.

C(i, j) =

max{i, j} hvis (i = 0) ∨ (j = 0)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] 6= T [j]

Spørgsmal b: Argumenter for ovenstaende pastand. 2

Spørgsmal c: Angiv en algoritme, baseret pa dynamisk programmering, dergivet S og T finder længden af en korteste fælles super-sekvens. Argumenter foralgoritmens udførselstid. 2

Spørgsmal d: Udvid algoritmen til ogsa at finde en korteste fælles super-sekvensfor S og T . 2

Page 15: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Opgave 4 (25%)

En gitter-graf er en orienteret graf hvor knuderne er arrangeret i k rækker hverindeholdende k knuder, hvor k er et positivt heltal. Lad vi,j betegne den jte knudei den ite række. Lad s = v1,1. En gitter-graf har følgende knuder og kanter:

V = {vi,j | 1 ≤ i ≤ k ∧ 1 ≤ j ≤ k}

E = {(vi,j, vi,j+1) | 1 ≤ i ≤ k ∧ 1 ≤ j < k} ∪

{(vi,j, vi,j−1) | 1 ≤ i ≤ k ∧ 1 < j ≤ k} ∪

{(vi,j, vi+1,j) | 1 ≤ i < k ∧ 1 ≤ j ≤ k}

Nedenstaende 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ørgsmal a: Lad n og m betegne henholdsvis antallet af knuder og kanter ien gitter-graf. Udtryk n og m som funktion af k. 2

Spørgsmal b: Hvad er udførselstiden for Dijkstra’s algoritme for at finde læng-den af de korteste veje fra s = v1,1 til alle de øvrige knuder i en gitter-graf somfunktion af k ? 2

Spørgsmal c: Beskriv en algoritme der finder længden af de korteste veje fras = v1,1 til alle de øvrige knuder i en gitter-graf i tid O(m). Argumenter foralgoritmens udførselstid og korrekthed. 2

En cylinder-graf er en gitter-graf udvidet med ikke-negative vægtede kanter mel-lem den venstre og højre knude i hver række, d.v.s. E indeholder ogsa kanterne(vi,1 , vi,k) og (vi,k , vi,1) for 1 ≤ i ≤ k.

Spørgsmal d: Beskriv en algoritme der finder længden af de korteste veje fras = v1,1 til alle de øvrige knuder i en cylinder-graf i tid O(m). Argumenter foralgoritmens udførselstid og korrekthed. 2

Page 16: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Skriftlig EksamenAlgoritmer og Datastrukturer (dADS)

Datalogisk Institut

Aarhus Universitet

Onsdag den 13. august 2003, kl. 9.00–13.00

Page 17: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Opgave 1 (25%)

Lad A = A[1] · · ·A[n] være et array af heltal. Længden af det længste sammen-hængende delarray af A hvor alle indgange er identiske betegnes LID(A). Læng-den 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 ≥ 1Output: 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ørgsmal a: Angiv hvilke bevisbyrder der skal eftervises i et gyldighedsbevisfor algoritmen. 2

Spørgsmal b: Angiv konkret kode for ≪Update≫, saledes at bevisbyrdernefra spørgsmal a kan eftervises. 2

Spørgsmal c: Eftervis bevisbyrderne fra spørgsmal a, og argumenter for atalgoritmen er korrekt. 2

Page 18: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Opgave 2 (25%)

Lad x1, x2, · · · , xn være n forskellige heltallige elementer. Opgaven beskæftigersig med at understøtte rang-baserede operationer.

Operationen rank(y) skal returnere antallet af elementer blandt x1, . . . , xn der ermindre end eller lig med y, dvs. |{i | xi ≤ y}|.

Operationen atRank(r) skal, for 1 ≤ r ≤ n, returnere det rte mindste elementblandt x1, . . . , xn, dvs. det xj hvor rank(xj) = r.

I det følgende betragtes en udvidelse af rød-sorte søgetræer til opbevaring afelementerne. Lad v.x være elementet gemt i knuden v. Hver knude v udvides tilogsa at gemme v.s, der angiver antallet af elementer gemt i undertræet med rodi v. Nedenstaende 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 meddobbelt-cirkler. I det givne eksempel er rank(10) = 3 og atRank(5) = 14.

8

6

5

2

14

3

3

1

11

1

17

1

Spørgsmal a: Beskriv hvordan rank(y) og atRank(r) kan udføres i tid O(log n).Argumenter for algoritmernes udførselstid og korrekthed. 2

Spørgsmal b: Beskriv hvordan en operation Count(y, z), der returner antalletaf elementer i intervallet ]y ; z], dvs. |{i | y < xi ≤ z}|, kan udføres i tid O(log n).Argumenter for algoritmens udførselstid og korrekthed. 2

Spørgsmal c: Beskriv hvordan et sadant udvidet rød-sort søgetræ kan vedlige-holdes under indsættelse og sletning af elementer i tid O(log n). 2

Page 19: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Opgave 3 (25%)

Betragt følgende situation: En tømrer ønsker at udmale en bestemt længde, menhar glemt sin tommestok. Til gengæld har han forskellige æsker med søm i kendtestørrelser, og far den ide at udmale længden ved at lægge søm pa række efterhinanden.

I denne opgave ønsker vi at beregne, hvilke længder tømreren kan udmale meden given beholdning af søm.

Vi antager at der er K æsker med søm, og at der i æske nummer i er ni søm, allemed en længde pa li centimeter. Vi ønsker at afgøre om der findes en delmængdeaf sømmene, hvis samlede længde er S centimeter, dvs. om der findes heltalx1, . . . , xK , hvor 0 ≤ xi ≤ ni, saledes at

∑Ki=1 xi · li = S. Vi antager at S og li’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 x1, . . . , xk, hvor 0 ≤ xi ≤ ni, sa∑k

i=1 xi · li = s .

Spørgsmal a: Lad S = 10, K = 3, l1 = 1, l2 = 5, l3 = 4, n1 = 3, n2 = 1,og n3 = 25. Udfyld nedenstaende tabel med sandhedsværdierne for U(k, s) for0 ≤ k ≤ K og 0 ≤ s ≤ S.

01

2

3

0 1 2 3 4 5 6 7 8 9 10sk

2

Det pastas at U(k, s) opfylder følgende rekursionsformel.

U(k, s) =

Sand hvis k = 0 ∧ s = 0Falsk hvis k = 0 ∧ s > 0Sand hvis k > 0 ∧ der findes xk :

(0 ≤ xk ≤ nk) ∧ (xk · lk ≤ s) ∧ U(k − 1, s− xk · lk)Falsk ellers

Spørgsmal b: Argumenter for ovenstaende pastand. 2

Spørgsmal c: Angiv en algoritme, baseret pa dynamisk programmering, derberegner værdien U(K, S). Argumenter for algoritmens udførselstid. 2

Page 20: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Opgave 4 (25%)

En s× t-lagdelt graf er en orienteret graf hvor knuderne er arrangeret i s rækkerhver indeholdende t knuder, hvor s og t er positive heltal. Lad vi,j betegne denjte knude i den ite række. En s× t-lagdelt graf har følgende knuder og kanter:

V = {vi,j | 1 ≤ i ≤ s ∧ 1 ≤ j ≤ t}

E = {(vi,j , vi+1,k) | 1 ≤ i < s ∧ 1 ≤ j ≤ t ∧ 1 ≤ k ≤ t}

Nedenstaende figur viser en 5× 3-lagdelt graf.

v1,1

Spørgsmal a: Lad n og m betegne henholdsvis antallet af knuder og kanter ien 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 somfunktion af s og t for Dijkstra’s algoritme til at finde korteste afstand fra v1,1 tilalle de øvrige knuder i en s× t-lagdelt graf? 2

I resten opgaven antages at vægtene pa kanterne er reelle tal (bade positive ognegative).

Spørgsmal b: Beskriv hvordan man kan finde korteste afstand fra v1,1 til allede øvrige knuder i en s× t-lagdelt graf i tid O(st2). 2

Spørgsmal c: Angiv som funktion af s og t udførselstiden i en s× t-lagdelt graffor den variant af Floyd-Warshalls algoritme, der finder korteste afstand mellemalle par af knuder. Anvend løsningen fra spørgsmal b til at beskrive en mereeffektiv algoritme, og argumenter for dennes udførselstid. 2

Spørgsmal d: Nar kanterne kan have negative vægte, vil Dijktra’s algoritmeikke nødvendigvis finde korteste afstand fra v1,1 til alle de øvrige knuder. Angiven vægtet 3×2-lagdelt graf hvor Dijkstra’s algoritme fejler, og argumenter for atden fejler pa denne graf. 2

Page 21: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

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

Eksamenslokale: Trøjborg-komplekset, Niels Juelsgade 84, lok. 139, 8200 Arhus N

Tilladte medbragte hjælpemidler:

Alle sædvanlige hjælpemidler (lærebøger og notater)

Materiale der udleveres til eksaminanden:

OPGAVETEKSTENBEGYNDER

PA NÆSTE SIDE

—oOo—

Page 22: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen august 2004Algoritmer og Datastrukturer (gammel ordning)

Skriftlig prøveSide 2 af 6 sider

Opgave 1 (25%)

I denne opgave betragtes nedenstaende algoritme, der givet et input array indeholdende0-1 værdier, beregner længden af det længste delarray hvor alle indgange indeholderværdien 1.

Algoritme Ones(A)Inputbetingelse : Array A af længde n ≥ 0 indeholdende 0-1 værdierOutputkrav : m = MaxOnes(A)Metode : i← 0;

m← 0;ℓ← 0;{I} while i < n do

if A[i] = 1 thenℓ← ℓ + 1;m← max{ℓ, m}

elseℓ← 0

i← i + 1

hvor I er invarianten

ℓ = 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 del-array af X kun indeholdende værdien 1, og MaxSuffixOnes(X) længden af det længstesuffix af X kun indeholdende værdien 1.

For nedenstaende eksempel er MaxOnes(A) = MaxOnes(A[8..14]) = 6 og f.eks. erMaxSuffixOnes(A[0..17]) = MaxOnes(A[15..17]) = 2.

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

A 1 0 1 1 1 0 0 0 1 1 1 1 1 1 0 1 1 1 1 0 1

Spørgsmal a: Hvilke værdier far ℓ tildelt i linien “ℓ← ℓ + 1;” i løbet af algoritmen,og hvor mange gange tildeles ℓ de forskellige værdier pa ovenstaende eksempel? 2

Spørgsmal b: Angiv hvilke bevisbyrder der skal eftervises i et gyldighedsbevis foralgoritmen. 2

Spørgsmal c: Eftervis bevisbyrderne fra spørgsmal b, og argumenter for at algorit-men er korrekt. 2

(Opgavesættet fortsætter)

Page 23: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen august 2004Algoritmer og Datastrukturer (gammel ordning)

Skriftlig prøveSide 3 af 6 sider

Opgave 2 (25%)

I denne opgave betragtes en datastruktur til at opbevare en mængde af intervaller, ogsom 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]

2 9 14 17 21 30 33 35 39 41 45 50 52 54 58 62

gælder at f.eks. q = 10 ikke er indeholdt i et interval, hvorimod q = 53 er indeholdt imindst 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 indreknude opbevarer et interval og hvor intervallerne er gemt sorteret efter intervallernesvenstre endepunkt. Hver knude opbevarer desuden en værdi rmax, som er det maksimalehøjre endepunkt der er opbevaret i knudens undertræ. Nedenstaende viser datastruk-turen for ovenstaende intervaller, hvor der for hver knude øverst er angivet knudensinterval og nederst er angivet knudens rmax værdi.

2,9

14,21

17,30

33,39

52,62

45,54

9 30

30

58 62

62

62

35,58

41,5050

Spørgsmal a: Tegn en tilsvarende datastruktur for intervallerne

[21, 23] , [1, 6] , [18, 20] , [11, 13] , [17, 19] , [3, 8] , [5, 10] , [22, 24] 2

Spørgsmal b: Beskriv hvordan et nyt interval [l, r] kan indsættes i ovenstaendedatastruktur, hvor det antages at træet ikke kræves balanceret efter indsættelsen. 2

Spørgsmal c: Beskriv hvordan man under indsættelser af nye intervaller i tid O(log n)kan holde ovenstaende datastruktur balanceret, d.v.s at træets højde er O(log n). 2

Spørgsmal 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 ertræets højde. 2

(Opgavesættet fortsætter)

Page 24: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen august 2004Algoritmer og Datastrukturer (gammel ordning)

Skriftlig prøveSide 4 af 6 sider

Opgave 3 (25%)

I denne opgave betragtes (r, k) gitter-grafer, som er orienterede grafer hvor knuderneer arrangeret i et gitter med r rækker og k søjler. Hver knude v har en kant til knudenumiddelbart nedenunder v i v’s søjle (safremt v ikke er i den nederste række) og en kanttil knuden umiddelbart til højre for v (safremt 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. Nedenstaendeer en (5, 8) gitter-graf.

s

t

I det følgende antages alle kanter at have en ikke negativ vægt.

Spørgsmal a: Angiv antal kanter m og antal knuder n i en (r, k) gitter-graf somfunktion af r og k. Angiv udførelsestiden af Dijkstra’s algoritme til at finde de kortesteafstande fra s til t. 2

Spørgsmal b: Angiv en algoritme med udførelsestid O(n), der beregner den kortesteafstand fra s til t i en (r, k) gitter-graf. 2

Spørgsmal c: Angiv en algoritme med udførelsestid O(n), der beregner længden afden længste sti fra s til t i en (r, k) gitter-graf. 2

Antag nu at kanterne ogsa kan have en negativ vægt.

Spørgsmal 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 ga fra s

til t. 2

(Opgavesættet fortsætter)

Page 25: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen august 2004Algoritmer og Datastrukturer (gammel ordning)

Skriftlig prøveSide 5 af 6 sider

Opgave 4 (25%)

I denne opgave betragtes to strenge

S = s1s2 · · · sn

T = t1t2 · · · tm

af længde henholdsvis n og m. Vi ønsker at finde den fælles delsekvens for S og T deropnar den maksimale blok-score, som er defineret nedenfor.

Antag at en fælles delsekvens for S og T kan deles op i p blokke B1, . . . , Bp, hvor Bi eren sammenhængende delsekvens i bade S og T . Vi definerer blok-scoren af opdelingensom

|B1|+ |B2|+ · · ·+ |Bp| − p

Den maksimale blok-score er blok-scoren af den fælles delsekvens for S og T der harden maksimale blok-score.

For eksempel har nedenstaende to strenge en maksimal blokscore pa 2 + 4 + 4− 3 = 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 s1s2 · · · si og t1t2 · · · tj .

Spørgsmal a: Lad S = bbcba og T = bccbba. Udfyld følgende tabel for B(i, j) for0 ≤ i ≤ 5 og 0 ≤ j ≤ 6.

01

23

45

0 1 2 3 4 5 6j

i

2

(Opgavesættet fortsætter)

Page 26: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen august 2004Algoritmer og Datastrukturer (gammel ordning)

Skriftlig prøveSide 6 af 6 sider

Det pastas at B(i, j) opfylder følgende rekursionsformel:

B(i, j) =

0 hvis i = 0 ∨ j = 0max{B(i, j − 1), B(i− 1, j)} hvis si 6= tjmax{B(i, j − 1), B(i− 1, j), B(i− k, j − k) + k − 1} hvis si = tj ∧

k ≥ 1 er maksimal sa: si = tj ∧ si−1 = tj−1 ∧ · · · ∧ si−k+1 = tj−k+1

Spørgsmal b: Beskriv en algoritme baseret pa dynamisk programmering, der givet tostrenge S og T af længde henholdsvis n og m, beregner B(n, m), d.v.s. den maksimaleblok-score for strengene S og T . Angiv algoritmens udførelsestid. 2

Spørgsmal c: Beskriv en udvidelse af algoritmen fra spørgsmal b til ogsa at rap-portere en fælles delsekvens af S og T der har maksimal blok-score. Angiv algoritmensudførelsestid. 2

Page 27: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Skriftlig EksamenAlgoritmer og Datastrukturer 2 (2003-ordning)

Datalogisk Institut

Aarhus Universitet

Fredag den 28. maj 2004, kl. 9.00–13.00

Page 28: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

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 harkanter fra alle knuder i den sidste (øverste) række. Lad m betegne antal kanterog n antal knuder i en (r, k) kryds-graf

Nedenstaende viser en (4, 5) kryds-graf.

s

t

Spørgsmal a: Angiv antal kanter m og antal knuder n i en (r, k) kryds-grafsom funktion af r og k. Antag alle kanter har en ikke negativ vægt. Angivudførselstiden af Dijkstra’s algoritme til at finde de korteste afstande fra s tilalle de øvrige knuder som funktion af r og k. 2

Spørgsmal b: Angiv en (1, 2) kryds-graf med positive og negative vægtedekanter, hvor Dijkstra’s algoritme beregner en forkert afstand fra s til t. Angivfor hver knude i eksemplet de korrekte afstande fra s samt de afstande Dijkstra’salgoritme beregner. 2

Spørgsmal c: Angiv en algoritme med udførselstid O(n) til at beregne de kor-teste afstande fra s til alle de øvrige knuder i en (r, k) kryds-graf med positive ognegative vægtede kanter. Argumenter for algoritmens udførselstid. 2

Page 29: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Opgave 2 (20%)

En cyklisk (r, k) kryds-graf er en orienteret graf med r rækker af k knuder, hvorknude j i række i, for 1 ≤ i < r, har en kant til knude j − 1 i række i + 1, for1 < j ≤ k, og en kant til knude j + 1 i række i +1, for 1 ≤ j < k. Desuden findesen knude s, der har kanter til alle knuder i den første (nederste) række, en knudet, 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

Nedenstaende viser en cyklisk (4, 5) kryds-graf.

s

t

u

I denne opgave betragtes problemet at finde de korteste afstande fra en vilkarligknude u til alle de øvrige knuder i en cyklisk (r, k) kryds-graf, hvor alle kanterhar vægte der kan være bade positive og negative. Der antages at der ikke findesnegative cykler.

Spørgsmal a: Angiv som funktion af r og k udførselstiden af Bellman-Ford’salgoritme for at finde de korteste afstande fra en knude u til alle de øvrige knuderi en cyklisk (r, k) kryds-graf. 2

Spørgsmal b: Angiv en algoritme med udførselstid O(n), der finder de kortesteafstande fra en knude u til alle de øvrige knuder i en cyklisk (r, k) kryds-graf.Argumenter for algoritmens udførselstid. 2

Spørgsmal c: Angiv en algoritme med udførselstid O(n2), der finder de kortesteafstande mellem alle par af knuder i en cyklisk (r, k) kryds-graf. Argumenter foralgoritmens udførselstid. 2

Page 30: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Opgave 3 (10%)

En n-dobbeltstjerne-graf er en uorienteret graf med to knuder u og w og n knuderv1, . . . , vn. For hver af knuderne v1, . . . , vn er der kanter til u og w. Nedenstaendeer en 9-dobbeltstjerne-graf

v1

u

w

v9

Man kan i det følgende bruge nedenstaende sætning om minimum udspændendetræ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} ogsa indeholde et minimum udspændende træ for G.

Spørgsmal a: Beskriv en algoritme med udførselstid O(n), der finder et mini-mum udspændende træ for en vægtet n-dobbeltstjerne-graf. Argumenter for al-goritmens udførselstid. Hint: Betragt cykler (u, vi, w, vj, u) hvor i 6= j. 2

Page 31: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Opgave 4 (25%)

Lad S = {x1, . . . , xn} være en mængde af n positive heltal og N et positivt heltal,hvor N ≥ x1 + · · ·+xn. Opgaven gar ud pa at afgøre om der findes positive heltald1, . . . , dn saledes at N = x1

d1 + · · ·+ xndn .

For mængden S = {1, 2, 3, 5, 7} og N = 740 findes løsningen

740 = 11 + 27 + 35 + 52 + 73 .

Lad B(k, s) være sand hvis og kun hvis der findes positive d1, . . . , dk sa s =x1

d1 + · · ·+ xkdk . Bemærk at B(n, N) er svaret pa 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 = 0falsk hvis k = 0 ∧ s > 0sand hvis k > 0 ∧ (der findes i ≥ 1 sa xk

i ≤ s ∧ B(k − 1, s − xki))

falsk ellers

Spørgsmal a: Udfyld nedenstaende 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 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

0123

2

Spørgsmal b: Angiv en algoritme baseret pa dynamisk programmering, derafgør om B(n, N) er sand. Angiv algoritmens udførselstid og argumenter fordenne. 2

Spørgsmal c: Udvid algoritmen fra spørgsmal (b) til i samme udførselstid atudskrive en løsning d1, . . . , dn, safremt der findes en løsning. Angiv algoritmensudførselstid og argumenter for denne. 2

Page 32: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Opgave 5 (25%)

Lad S1 og S2 være to strenge med tilsammen n tegn over alfabetet {a, b, c},dvs. n = |S1| + |S2|. I denne opgave betragtes problemet at finde den længste(sammenhængende) fælles delstreng for S1 og S2.

Lad S = S1#S2$ være en ny streng over alfabetet {a, b, c, #, $}, som bestar afde to strenge sat efter hinanden, hvor S1 og S2 er adskildt af et nyt symbol # ogS2 er efterfulgt af et nyt symbol $.

Eksempel: For strengene S1 = a a b a c og S2 = a c a b a b er den længste fællesdelstreng a b a, og S = a a b a c # a c a b a b $.

Spørgsmal a: Opskriv alle suffixerne af strengen S fra ovenstaende eksempel ileksikografisk rækkefølge, hvor alfabetets ordning er a < b < c < # < $. 2

Spørgsmal b: Angiv suffix-træet for strengen S fra ovenstaende eksempel, ogmarker knuden svarende til den længste fælles delstreng af S1 og S2. 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ørgsmal c: Beskriv en algoritme der givet to strenge med totalt n tegn overet 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æetmed information om der findes delstrenge i S1 og S2 der svarer til stierne fraroden ned til knuderne. 2

Page 33: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

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

Eksamenslokale: Trøjborg-komplekset, Niels Juelsgade 84, lok. 139, 8200 Arhus N

Tilladte medbragte hjælpemidler:

Alle sædvanlige hjælpemidler (lærebøger og notater)

Materiale der udleveres til eksaminanden:

OPGAVETEKSTENBEGYNDER

PA NÆSTE SIDE

—oOo—

Page 34: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen august 2004Algoritmer og Datastrukturer 2 (2003-ordning)

Skriftlig prøveSide 2 af 6 sider

Opgave 1 (25%)

I denne opgave betragtes (r, k) gitter-grafer, som er orienterede grafer hvor knuderneer arrangeret i et gitter med r rækker og k søjler. Hver knude v har en kant til knudenumiddelbart nedenunder v i v’s søjle (safremt v ikke er i den nederste række) og en kanttil knuden umiddelbart til højre for v (safremt 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. Nedenstaendeer en (5, 8) gitter-graf.

s

t

I det følgende antages alle kanter at have en ikke negativ vægt.

Spørgsmal a: Angiv antal kanter m og antal knuder n i en (r, k) gitter-graf somfunktion af r og k. Angiv udførelsestiden af Dijkstra’s algoritme til at finde de kortesteafstande fra s til t. 2

Spørgsmal b: Angiv en algoritme med udførelsestid O(n), der beregner den kortesteafstand fra s til t i en (r, k) gitter-graf. 2

Spørgsmal c: Angiv en algoritme med udførelsestid O(n), der beregner længden afden længste sti fra s til t i en (r, k) gitter-graf. 2

Antag nu at kanterne ogsa kan have en negativ vægt.

Spørgsmal 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 ga fra s

til t. 2

(Opgavesættet fortsætter)

Page 35: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen august 2004Algoritmer og Datastrukturer 2 (2003-ordning)

Skriftlig prøveSide 3 af 6 sider

Opgave 2 (25%)

I denne opgave betragtes dobbelt-ring grafer. En dobbelt-ring graf med n broer, er enuorienteret graf hvor der er 2n knuder. Knuderne er forbundet med kanter sa de dannerto cykler med hver n knuder, og den ite knude i den ene cykel er forbundet med enkant/bro til den ite knude i den anden cykel. Nedenstaende graf til venstre viser endobbelt-ring graf med 8 broer.

Spørgsmal a: Angiv udførelsestiden for Prim-Jarnik’s algoritme for at beregne etminimum udspændende træ for en vægtet dobbelt-ring graf med n broer. Udførelsestidenskal angives som funktion af n. 2

Man kan i det følgende spørgsmal bruge nedenstaende sætning om minimum udspæn-dende 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}ogsa indeholde et minimum udspændende træ for G.

Spørgsmal b: Beskriv en algoritme med udførelsestid O(n), der finder et minimumudspændende træ for en vægtet dobbelt-ring graf med n broer. Argumenter for algo-ritmens udførelsestid. 2

I det følgende spørgsmal betragtes orienterede dobbelt-ring grafer med n broer, som erdobbelt-ring grafer hvor hver kant repræsenterer en orienteret kant, jævnfør ovenstaendegraf til højre.

Spørgsmal c: Angiv en algoritme med udførelsestid O(n), der givet en orienteretdobbelt-ring graf med n broer afgør om der for alle par af knuder u og v findes orien-terede stier fra u til v og fra v til u. 2

(Opgavesættet fortsætter)

Page 36: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen august 2004Algoritmer og Datastrukturer 2 (2003-ordning)

Skriftlig prøveSide 4 af 6 sider

Opgave 3 (25%)

I denne opgave betragter vi strenge over alfabetet Σ = {a, b, c}. For en streng S ladervi S betegne den reverserede streng, d.v.s. strengen læst bagfra. For eksempel er

abbcaabc = cbaacbba

Spørgsmal a: Angiv en trie for følgende strenge

S1 = cbcabS2 = abababS3 = abaS4 = babccS5 = cacba

S6 = cbaaaS7 = aabcbS8 = aaaccbaS9 = aabcc

S10 = acaacc2

Spørgsmal b: Antag der er givet en trie T for en mængde strenge S1, . . . , Sk. Beskriven algoritme der givet en forespørgselsstreng P , afgør om der i trien findes en streng Si

hvor P = Si. Algoritmens udførelsestid skal være O(|P |). 2

Spørgsmal c: Antag der er givet k ikke-tomme strenge S1, . . . , Sk med totalt n tegn,d.v.s. n =

∑ki=1 |Si|. Beskriv en algoritme med udførelsestid O(n), som afgør om der

blandt de k strenge findes to strenge Si og Sj saledes at Si = Sj . Output af algoritmenskal i givet fald være < i, j >.

Bemærk at hvis en af strengene opfylder Si = Si, sa er Si et palindrom og < i, i > eret muligt output. 2

(Opgavesættet fortsætter)

Page 37: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen august 2004Algoritmer og Datastrukturer 2 (2003-ordning)

Skriftlig prøveSide 5 af 6 sider

Opgave 4 (25%)

I denne opgave betragtes to strenge

S = s1s2 · · · sn

T = t1t2 · · · tm

af længde henholdsvis n og m. Vi ønsker at finde den fælles delsekvens for S og T deropnar den maksimale blok-score, som er defineret nedenfor.

Antag at en fælles delsekvens for S og T kan deles op i p blokke B1, . . . , Bp, hvor Bi eren sammenhængende delsekvens i bade S og T . Vi definerer blok-scoren af opdelingensom

|B1| + |B2| + · · · + |Bp| − p

Den maksimale blok-score er blok-scoren af den fælles delsekvens for S og T der harden maksimale blok-score.

For eksempel har nedenstaende to strenge en maksimal blokscore pa 2 + 4 + 4− 3 = 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 s1s2 · · · si og t1t2 · · · tj .

Spørgsmal a: Lad S = bbcba og T = bccbba. Udfyld følgende tabel for B(i, j) for0 ≤ i ≤ 5 og 0 ≤ j ≤ 6.

01

23

45

0 1 2 3 4 5 6j

i

2

(Opgavesættet fortsætter)

Page 38: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen august 2004Algoritmer og Datastrukturer 2 (2003-ordning)

Skriftlig prøveSide 6 af 6 sider

Det pastas at B(i, j) opfylder følgende rekursionsformel:

B(i, j) =

0 hvis i = 0 ∨ j = 0max{B(i, j − 1), B(i − 1, j)} hvis si 6= tjmax{B(i, j − 1), B(i − 1, j), B(i − k, j − k) + k − 1} hvis si = tj ∧

k ≥ 1 er maksimal sa: si = tj ∧ si−1 = tj−1 ∧ · · · ∧ si−k+1 = tj−k+1

Spørgsmal b: Beskriv en algoritme baseret pa dynamisk programmering, der givet tostrenge S og T af længde henholdsvis n og m, beregner B(n, m), d.v.s. den maksimaleblok-score for strengene S og T . Angiv algoritmens udførelsestid. 2

Spørgsmal c: Beskriv en udvidelse af algoritmen fra spørgsmal b til ogsa at rap-portere en fælles delsekvens af S og T der har maksimal blok-score. Angiv algoritmensudførelsestid. 2

Page 39: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

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

Eksamenslokale: Skøjtehallen, Gøteborg Alle 9, Arhus N

Tilladte medbragte hjælpemidler:

Alle sædvanlige hjælpemidler (lærebøger og notater)

Materiale der udleveres til eksaminanden:

OPGAVETEKSTENBEGYNDER

PA NÆSTE SIDE

—oOo—

Page 40: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen Sommeren 2005Algoritmer og Datastrukturer 2 (2003-ordning)

Skriftlig prøveSide 2 af 7 sider

Opgave 1 (25%)

I denne opgave betragtes k-trekant-kæde grafer, som bestar af k trekanter i en kæde,hvor en trekant deler en kant med den forrige og den næste trekant. Nedenstaende viseren 14-trekant-kæde graf.

Bemærk at en (k + 1)-trekant-kæde graf fremkommer ved at tilføje en trekant til enk-trekant-kæde graf, j.v.f. nedenstaende 15-trekant-kæde graf.

Spørgsmal a: Angiv antal knuder og antal kanter i en k-trekant-kæde graf somfunktion af antal trekanter k. Angiv udførselstiden for Kruskal’s algoritme for en vægtetk-trekant-kæde graf. Udførselstiden skal angives som funktion af k. 2

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}ogsa indeholde et letteste udspændende træ for G.

Spørgsmal b: Beskriv en algoritme med udførselstid O(n), der finder et lettesteudspændende træ for en vægtet k-trekant-kæde graf med n knuder. Argumenter foralgoritmens udførselstid. 2

Spørgsmal 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. Argumenterfor algoritmens udførselstid. 2

(Opgavesættet fortsætter)

Page 41: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen Sommeren 2005Algoritmer og Datastrukturer 2 (2003-ordning)

Skriftlig prøveSide 3 af 7 sider

Opgave 2 (25%)

I denne opgave betragtes Manhattan-grafer. En Manhattan-graf er en uorienteret grafder bestar af t rækker med s knuder, men hvor de fire hjørner mangler, d.v.s. denførste og den sidste række har kun s − 2 knuder. Knuderne er forbundet som vist panedenstaende graf der viser en Manhattan-graf for s = 5 og t = 8. Bemærk at alleknuder har grad tre eller fire, og at indgaende kanter til en knude kommer enten franord, syd, øst eller vest.

s

t

Spørgsmal a: Angiv antallet af kanter og knuder i en Manhattan-graf som funktionaf s og t. Angiv udførselstiden for Dijkstra’s algoritme for at beregne den korteste vejfra en knude u til en knude v i en vægtet Manhattan-graf, hvor alle kanter har positivevægte. Udførselstiden skal angives som funktion af s og t. 2

Betragt en Manhattan-graf. Der antages at kanter repræsenterer veje og man for alleveje kan køre i begge retninger, men at nar 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 drejetil højre.

En uorienteret Manhattan-graf kan transformeres til en orienteret graf ved at erstatteen knude af grad 3 eller 4 med henholdsvis 6 eller 8 knuder i en orienteret graf, saledes atalle stier i den orienterede graf svarer til veje der er lovlige at køre i Manhattan-grafen.Nedenstaende viser hvordan en knude v af grad 3 bliver til 6 knuder og de incidentekanter hertil.

v

v

(Opgavesættet fortsætter)

Page 42: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen Sommeren 2005Algoritmer og Datastrukturer 2 (2003-ordning)

Skriftlig prøveSide 4 af 7 sider

Spørgsmal b: For nedenstaende Manhattan-graf, angiv den tilsvarende orienteredegraf hvor stier svarer til lovlige veje at køre i Manhattan-grafen.

2

I de næste to spørgsmal betragtes orienterede grafer hvor alle kanterne incidente til enknude kommer fra nord, syd, øst eller vest. Der kommer højst en kant fra hver af de fireretninger. Nedenstaende graf til venstre viser et eksempel pa sadan en graf. Bemærkat der ikke findes en vej fra u til v hvor man aldrig drejer til venstre, uanset hvilkenkant incident til u man starter med. Til højre ses en sti fra u til v der foretager etvenstre sving, nemlig i w.

vu

vu

w

Spørgsmal c: Beskriv en algoritme, der givet en uorienteret graf hvor alle kanterneincidente til en knude kommer fra nord, syd, øst eller vest, afgør om der findes envej fra en knude u til en knude v som ikke indeholder nogen venstre sving (man maselv bestemme hvilken kant incident med u man starter med). Angiv algoritmensudførselstid som funktion af antal knuder n. 2

Spørgsmal d: Beskriv en algoritme, der givet en uorienteret graf hvor alle kanterneincidente 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 ma selv bestemmehvilken kant incident med u man starte med). Angiv algoritmens udførselstid somfunktion af antal knuder n. 2

(Opgavesættet fortsætter)

Page 43: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen Sommeren 2005Algoritmer og Datastrukturer 2 (2003-ordning)

Skriftlig prøveSide 5 af 7 sider

Opgave 3 (25%)

I denne opgave betragtes n punkter

p1 = (x1, y1), p2 = (x2, y2), . . . , pn = (xn, yn)

hvorom der gælder x1 < x2 < x3 < · · · < xn.

For et givet k, ønsker vi at finde k rektangler der tilsammen indeholder alle punkterneog saledes at det samlede areal af rektanglerne er mindst muligt. Siderne pa de k

rektangler skal være parallelle med x- og y-akserne, og der skal gælde at rektanglerneikke overlapper m.h.t. x-værdierne, d.v.s. rektanglerne kan sorteres fra venstre modhøjre.

Nedenstaende viser et eksempel hvor 10 punkter er indeholdt i 4 rektangler, med hen-holdsvis punkterne {p1, p2, p3, p4}, {p5}, {p6, p7, p8}, og {p9, p10}. Bemærk at rektangletindeholdende p5 kun bestar af punktet p5.

1

2

3

4

5

6

7

8

9

10

11

12

p1

p3

p5

p6

p10

p4

p7 p8

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

x

y

p2

p9

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 pi, pi+1, . . . , pj−1, pj

og som kan beregnes ved formlen

B(i, j) = (xj − xi) ×(

maxk : i≤k≤j

yk − mink : i≤k≤j

yk

)

For ovenstaende punktmængde er f.eks. B(6, 8) = (14 − 12) × (7 − 6) = 2.

Spørgsmal a: Angiv en algoritme der beregner B(i, j) for alle par (i, j) hvor i ≤ j.Angiv algoritmens udførselstid. 2

(Opgavesættet fortsætter)

Page 44: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen Sommeren 2005Algoritmer og Datastrukturer 2 (2003-ordning)

Skriftlig prøveSide 6 af 7 sider

For s ≥ 1 og t ≥ 1 definerer vi nu:

A(s, t) = det minimale areal af op til s rektanglerder indeholder punkterne p1, p2, . . . , pt.

Bemærk at A(k, n) er det minimale areal af op til k rektangler der indeholder alle n

punkter.

Det pastas at A(s, t) opfylder følgende rekursionsformel:

A(s, t) =

B(1, t) hvis s = 1 ∨ t = 1

mink : 2≤k≤t

(A(s − 1, k − 1) + B(k, t)) hvis t ≥ 2 ∧ s ≥ 2

Spørgsmal b: Udfyld nedenstaende tabel for A(s, t), 1 ≤ s ≤ 3 og 1 ≤ t ≤ 6, forpunktmængde {(1, 4), (2, 8), (3, 7), (5, 3), (6, 2), (7, 5)}.

1 2 3 4 5 6 7 8

1

2

3

4

5

6

7

8

y

x

p1

p2

p3

p4

p5

p6

12

3

1 2 3 4 5 6ts

2

Spørgsmal c: Angiv en algoritme med udførselstid O(n3) baseret pa dynamisk pro-grammering, der givet n punkter og et heltal k, beregner A(k, n), d.v.s. det mini-male areal af k rektangler der indeholder alle n punkter. Argumenter for algoritmensudførselstid. 2

(Opgavesættet fortsætter)

Page 45: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen Sommeren 2005Algoritmer og Datastrukturer 2 (2003-ordning)

Skriftlig prøveSide 7 af 7 sider

Opgave 4 (25%)

For en streng S = S[1]S[2] · · ·S[n] er i-rotationen af S strengen

rotatei(S) = S[i + 1..|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, saledes at S =rotatei(S). F.eks. er S = abcdabcd en rotation af sig selv da S = rotate4(S).

Spørgsmal 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 afsig selv. Angiv algoritmens udførselstid. Hint: Betragt strengen SS. 2

Betragt nu en streng S af længde n og et mønster P af længde m, begge over et alfabetaf størrelse O(1).

For mønsteret P =abcde forekommer rotate2(P ) i strengen S =abdbcabdebvacdeababcd

startende ved position 13.

Spørgsmal b: Angiv alle forekomster af mønsteret P =aba eller en rotation af P istrengen S = abaaaba. 2

Spørgsmal c: Angiv suffix-træet for strengen PPS$ hvor P og S er de i spørgsmal b)anvendte strenge, d.v.s. suffix-træet for strengen abaabaabaaaba$. Symbolet $ er etsymbol der ikke er med i alfabetet. Børnene til en knude skal komme i alfabetiskrækkefølge, fra venstre mod højre, hvor det antages at $ er det sidste tegn i alfabetet.

2

I det følgende kan antages uden bevis at et suffix-træ for en streng af længde n over etalfabet af størrelse O(1) kan konstrueres i tid O(n).

Spørgsmal d: Beskriv en algoritme der afgør om en rotation af mønsteret P forekom-mer i S. Angiv algoritmens udførselstid. Hint: Betragt suffix-træet for strengen PPS$af længde 2m + n. 2

Page 46: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen August 2005Algoritmer og Datastrukturer 2 (2003-ordning)

Skriftlig prøveSide 2 af 5 sider

Opgave 1 (25%)

I denne opgave betragter vi trekanter-grafer. En trekant-graf er en orienteret graf medb rækker af knuder med henholdvis 1, 2, 3, . . . , b knuder, og hvor kanterne er som angiveti nedenstaende eksempel. Nedenstaende viser en trekant-graf for b = 6.

b

t

s

Spørgsmal a: Angiv antallet kanter m og knuder n i en trekant-graf som funktionaf b. Angiv udførselstiden for Dijkstra’s algoritme for at beregne den korteste afstandfra 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. 2

Spørgsmal b: Angiv en trekant-graf for b = 2 med positive og negative vægtedekanter, hvor Dijkstra’s algoritme beregner en forkert afstand fra s til t. Angiv for hverknude i eksemplet de korrekte afstande fra s samt de afstande Dijkstra’s algoritmeberegner. 2

Spørgsmal c: Angiv en algoritme med udførelsestid O(n), der beregner den kortesteafstand fra den nedre venstre knude s til den øverste knude t i en trekant-graf medpositive og negative vægtede kanter. Argumenter for udførelsestiden. 2

Spørgsmal d: Angiv en algoritme, der finder to knuder u og v, u 6= v, med kortest af-

stand i en trekant-graf med positive og negative vægtede kanter. Angiv udførelsestiden.

2

(Opgavesættet fortsætter)

Page 47: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen August 2005Algoritmer og Datastrukturer 2 (2003-ordning)

Skriftlig prøveSide 3 af 5 sider

Opgave 2 (25%)

I nedenstaende graf er den tungeste kant pa stien (a, c, e, h) kanten (e, h) med vægt 10.

3

13

8

12

4

9

2

107

4

8

6

5

11ha

b

c

d

e

f

g

Spørgsmal a: Angiv en sti i ovenstaende graf fra a til h, hvor den tungeste kant pa

stien er lettest mulig. 2

Spørgsmal b: Givet to knuder u og v i en vægtet graf, angiv en algoritme der finderen sti fra u til v hvor vægten af den tungeste kant pa stien er lettest mulig. Angivalgoritmens udførselstid som funktion af antal knuder n og antal kanter m i grafen. 2

Man kan i det følgende bruge nedenstaende sætning om minimum udspændende træeruden 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ørgsmal 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 allevægtene er forskellige. Udførselstiden for algoritmen skal være O(m), hvor m er antalkanter i grafen. 2

(Opgavesættet fortsætter)

Page 48: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen August 2005Algoritmer og Datastrukturer 2 (2003-ordning)

Skriftlig prøveSide 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 atfinde en længste fælles voksende delsekvens for S og T , d.v.s. finde det største k hvor derfindes 1 ≤ i1 < · · · < ik ≤ n og 1 ≤ j1 < · · · < jk ≤ m hvor S[i1] = T [j1], . . . , S[ik] =T [jk] og S[i1] < S[i2] < . . . < S[ik].

Sekvenserne S = 2 5 4 3 4 6 og T = 4 2 3 4 5 4 6 har for eksempel sekvensen 2 3 4 6som en længste fælles voksende delsekvens.

Spørgsmal a: Angiv en længste fælles voksende delsekvens for sekvenserne

S = 1 5 3 7 2 4 5 9 4 6 8

T = 3 7 5 2 4 3 5 6 8 7 2

For S[i] = T [j] lad L(i, j) betegne længden af en længste fælles voksende delsekvensfor S[1] · · ·S[i] og T [1] · · ·T [j] som indeholder S[i]. For S[i] 6= T [j] lader vi L(i, j) = 0.

Det pastas at L(i, j) opfylder følgende rekursionsformel:

L(i, j) =

0 hvis S[i] 6= T [j]

1 hvis S[i] = T [j] ∧ (i = 1 ∨ j = 1)

1 + max(s,t) : 1≤s<i∧ 1≤t<j ∧S[s]<S[i]

L(s, t) hvis S[i] = T [j] ∧ i > 1 ∧ j > 1

Spørgsmal b: Udfyld nedenstaende tabel for L(i, j), for 1 ≤ i ≤ 5 og 1 ≤ j ≤ 6, forsekvenserne

S = 4 2 4 3 5

T = 2 3 2 5 4 5

1

23

4

5

1 2 3 4 5 6j

i

2

Spørgsmal c: Angiv en algoritme der beregner tabellen for L(i, j), for 1 ≤ i ≤ n og1 ≤ j ≤ m, og som finder længden af en længste fælles voksende delsekvens for S ogT . Angiv algoritmens udførselstid. 2

Spørgsmal d: Udvid algoritmen fra spørgsmal c) til at rapportere en længste fællesvoksende delsekvens. Angiv algoritmens udførselstid. 2

(Opgavesættet fortsætter)

Page 49: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen August 2005Algoritmer og Datastrukturer 2 (2003-ordning)

Skriftlig prøveSide 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, etmidter barn, og et højre barn. Nar man skal søge efter en streng P og star i en knude v ien ternær trie, sa sammenligner man det aktuelle tegn P [i] i strengen med symbolet vedknuden v. Hvis P [i] er mindre (henholdsvis større) end symbolet ved v sa fortsættessøgningen efter P [i] ved v’s venstre barn (henholdsvis højre barn). Hvis P [i] er lig medsymbolet ved v, sa fortsættes søgningen efter P [i + 1] ved v’s midter barn. Saledesfortsættes indtil hele sekvensen er matchet.

Det antages at alle strenge afsluttes med et specielt symbol “$”, saledes at hvert bladsvarer præcis til en streng.

I nedenstaende eksempel svarer bladet (∗) til strengen ARHUS$, da A>O, A=A, R>L,R=R, H<S, H=H, U=U, S=S, og $=$.

$

G

R

O

B

Å

L

$

E

S

N

E

D

O

$

G

R

E

J

S

E

B

Å

N

R

E

B

$

$

S

R

$

S

U

H

(*)

Spørgsmal a: Angiv strengene der er gemt i ovenstaende ternær trie. Stengene skalangives i leksikografisk rækkefølge. 2

Spørgsmal 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ørselstidsom funktion af m og n. 2

Spørgsmal c: Angiv pseudo-kode for hvordan en streng P = P [1] · · ·P [m] kanindsættes i en ternær trie T (hvor P [m] = $). Angiv algoritmens udførselstid somfunktion af m og n. 2

Page 50: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

�������������� �� ���� ���������������������� ��������� !�� ����� "�

#%$�&('*)+&-,/.103254/$76/819:)<;=$?>@25AB$DCE)<9F,/>5&-$?&

GIHKJML%N�GI'

O .-,/6/4P93,P.-8-$?.Q2R#�):&�)<>5SBAB2

T�UWVEXEY:Z\[^]`_FY!XaV`b�cP[^ced?[�Y+fRgh[ifRYi_FY�jlkmjenEnaoMpmXEY:q�rsZWrsVut

L*6v&m)<>w8-254/$7.x2wSByPAv)�0B$78-z{&-&-$?&"|W2@6P}7>�~��\S<.-8-254/$76e������|\�\$?���

G�9F8m)<��$76/814e)<A/��Ce.-$?4e)<A�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 ¨

Page 51: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

������������ ������������������������ ��� ��!����"� �$# ��!����%!%� &'��!�&'����(�*)+������,.-/��� 01�1�2� �43

���� ��56! � � �87 � 9�:� ��201;����5=<>� �20'��

?A@sVEc1Ba_DC |��B��E��¦x4/$?6/6/$"SByPAv)�0B$";a$?&-.m)<A<&-$78GFIHKJ�L�M�NOFQP%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/$?6�8�&m2@yP>@$74P$%&m.-$?9:)<6v&(&-2@> �\���1$78?~

[\@^]EYiVad�]`_ceU�cba L*6/AB2 0)<6v&�)+>�9F6F,/4/$?.dc SBA�9:)<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�)<6�9:)<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$?032587�

i=M'j>kml�R(HKJJSNnl�RZo�F�JSFqpsrtH�ugJSNOF%JSHKJSF=o�HvMvw(xyl�rtHTM�z+z6J;L�M�NOF�JSH(x{M�H=w�rtHK|�L'JSz+z�u}oyJ~l�RZo�F�J��i=M'j�JGl�R(HKJ*JSN�L�M�NOF�u�k����F(�*u+NOu+�*py��p�jt|%��R(N�jyJSN�jyJ�FQHSR�w�rtH8k�u+N�jyJ�xOrtz}jyJSHT�xyl�u6|Wr�o*LtpyN�xyl�u6|;k�u6L�L'J>u+N�jyJ�xOrtz}jyJSH�JSN��S��L'JSz��d��xyl�rtH;��JSH�jyJSN�FQpyNyoyJ�|SF�J>L�M�NOF�u�S��Ltz6JSN����

[\@^]EYiVad�]`_ceU;�"a  {$78193.1250 $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�J�L�|SFQHvMGL�M�NOF(|Q���K M��~�#%$?&�9:)<6)<6v&�)+AB$78()+&()<>5>@$*0Mz�A<&-$�$?.��\SB.-819<$?>@>@25AB$<~ h

¡¢

)/£ 71� ��:���v¤¥!%!%�!�56����!�� ¤�!%!%�� 3

Page 52: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

������������ ������������������������ ��� ��!����"� �$# ��!����%!%� &'��!�&'����(�*)+������,.-/��� 01�1�2� �43

���� ��56! � � �87 � 9�:� ��201;,���5=<>� �20'��

?A@sVEc1Ba_j |��B��E��¦I4/$76P6/$�SBy/Av)�0<$�8-9:)<>h$?6�.-SB;aS<&�Xe6/4/$�$?6 9+SB.1&-$78�&m$%0B$ �x2ay/>@)<6/$76��\.-) $?&�y/,/6/9v&��%&m2@>a$?&�y/,/6/9v&;V,/4/$?6 $�&�9F�B.1$I2@AB$?6/6/$7� 6/SBAB>5$��\SB.-�/256/4/.12@6/AB$?.7�^4/$?.R$7.RAB250<$?&R0B$?4 6/S<AB>@$�yaSB> U3ABS<6/$7.?~ � SB> U3ABS<6/$7.16/$$7.xA<250B$�&�0B$?4�2u)<>5&�c�936F,/4P$7.7~ G�6�9<SB.�&m$78�&x0B$ �x�\.m)��%&m25>�V�032@>u)+>5&m254 ;a$78�& �)�)+��$76�81&-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$76�9:)<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�4NOz�u}otxOJ�jt|�o�HvMvw�JSNe�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.�$76�4/$?>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:)<6�9F.vU34/81$��/2@6e)+6/4/$76h~�LQ6F&m)<>�9:)<6v&-$7.�2�$?6�8vU36/>@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�cyaSB> U3ABSB6Py/,/6/9v&m$?.7�/$�&�y/,/6/9v&;V��/S<A���HKr��SrtFIF%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 � $?4�9+SB.1&-$78�&m$"):�\81&�)+6/4&m25>\V�~�L*6PAB250�)+>@ABSB.125&-� $?6/8{,/4M�\�B.-81$7>@8�&m254u~ h

[\@^]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.�2�8vU36/>@25AB�/$?4/8-AB.-)+�\$76$?.#"�|/c�����~�| O 2 0�$�&D$79F8-$?� ya$7>��v0BS<.�8vU36/>@25AB�/$?4/8-AB.-)+�\$76�e)+.c��l�!9F6F,/4/$7.(SBA$"�|Qc�����9+)+6F&-$7.m��~ h

)/£ 71� ��:���v¤¥!%!%�!�56����!�� ¤�!%!%�� 3

Page 53: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

������������ ������������������������ ��� ��!����"� �$# ��!����%!%� &'��!�&'����(�*)+������,.-/��� 01�1�2� �43

���� ��56! � � �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�jyJSN`)+�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.. Y ��SBAx81$79v0B$?6/8-$?6/���S����.���,0�Y � ��1���2{���{���<�����^�{�7�1����<�M���/)<.u4/$?>@8-$?9v0B$76P8-$76�M�32P� �^�P� �<�"$76�,:�-z{036/�/$74�y �)

|425) �6) �B� � ��|��^�5)-26) �B� � � |��+�7) ���6) �B� � Y£� � � � � � � � Y �8�G�6�4/$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��� �

�����������$76�0325>@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$764/$?>@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@AAB AAC� �v0M258 ��Y �

� 256�9D4�FEG�IH�?%J ="|LK � ��|(�,?M)N���O)- � ��P �v0M258 �RQ��

[\@^]EYiVad�]`_ceU{c\aSQ4M�+UM>54�6/$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

="| �/�

h

[\@^]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.�$76�4/$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~ h

)/£ 71� ��:���v¤¥!%!%�!�56����!�� ¤�!%!%�� 3

Page 54: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

������������ ������������������������ ��� ��!����"� �$# ��!����%!%� &'��!�&'����(�*)+������,.-/��� 01�1�2� �43

���� ��56! � � �87 � 9�:� ��201;<���5=<>� �20'��

?A@sVEc1Ba_�� |��B��E��¦�4/$76P6/$�SBy/Av)�0B$!$?.%2@6Py/,P&�$?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%Jgo�N|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������� � �

SBA�)<>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$?AB6�81>@$?&1&m$�&�~*|  {.1,/A H�6F,P&-�M��N�S<.-.-258�� � .-)+&-&)<>5ABSB.-2 &m��$76E��~ h

¦�4/$?&x�\�B>5AB$76P4/$%9:)<6 )<6v&�)<A<$78�)+&x$�&�8-,����F� &-.mz¥�\SB.�$76�8�&m.-$?6/A�)+�s>�z�6/A<4/$c��\.m)"$�&()<>5�W)<;a$?&{� $?4��|§�i��&-$7AB6 9:)<6�9+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$?AB6�81>@$�&-&m$�&�~ h

[\@^]EYiVad�]`_ceU q"a LQ6/AB250 $76 )+>@ABSB.125&-� $ �\SB. )+&�Xe6/4/$ )<>@>5$��\SB.-$?9<SB��81&-$7. 2�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

Page 55: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

DATALOGISK INSTITUT, AARHUS UNIVERSITETDet Naturvidenskabelige FakultetEKSAMENGrundkurser i DatalogiAlgoritmer og Datastrukturer 2 (2003-ordning)Antal sider i opgaves�ttet (in l. forsiden): 5 (fem)Eksamensdag: Mandag den 14. august 2006, kl. 9.00-13.00Eksamenslokale: Tr�jborg, Willemoesgade 15, �Arhus N, 8200 �Arhus NTilladte medbragte hj�lpemidler:Alle s�dvanlige hj�lpemidler (l�reb�ger og notater)Materiale der udleveres til eksaminanden:OPGAVETEKSTENBEGYNDERP�A N�STE SIDE|oOo|

Page 56: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen august 2006Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig pr�veSide 2 af 5 siderOpgave 1 (25%)I denne opgave betragtes pyramide-grafer. En pyramide-graf med k lag best�ar af entrekant �verst med yderligere k� 1 lag herunder, som hver tilf�jer yderligere to knudertil grafen. Nedenst�aende �gur viser en pyramide-graf med 5 lag.Sp�rgsm�al a: Angiv antal knuder n og kanter m i en pyramide-graf som funktion afantal lag k. Angiv som funktion af k udf�rselstiden for Prim's algoritme for at �nde etminimum udsp�ndende tr� af en v�gtet pyramide-graf. 2Man kan i det f�lgende bruge nedenst�aende s�tning om minimum udsp�ndende tr�eruden 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 ehvis og kun hvis G ikke indeholder en ykel C, hvor e er den tungeste kant i yklen C.Sp�rgsm�al b: Beskriv en algoritme der �nder et minimum udsp�ndende tr� for enpyramide-graf med n knuder i tid O(n). Det kan antages at alle v�gte er forskellige.2Sp�rgsm�al : Beskriv en algoritme med udf�rselstid O(n) der �nder den l�ngste stimellem to knuder i et minimum udsp�ndende tr� for en pyramide-graf med n knuder.2

(Opgaves�ttet forts�tter)

Page 57: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen august 2006Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig pr�veSide 3 af 5 siderOpgave 2 (25%)I det f�lgende betragtes k-spors grafer, som er orienterede grafer hvor knuderne erpla eret p�a k horizontale linier/spor, og hvor alle knuder h�jest har tre udg�aende kanter:en kant til den n�ste knude til h�jre i samme spor, en kant til en knude til h�jre i sporetovenover, og en kant til en knude til h�jre i sporet nedenunder. tsSp�rgsm�al a: Giv en algoritme med udf�rselstid O(n), der givet en v�gtet k-sporsgraf med n knuder og to knuder s og t, �nder den kortest vej fra s til t. 2Sp�rgsm�al b: Giv en algoritme med udf�rselstid O(n), der givet en k-spors graf medn knuder og to knuder s og t, �nder en vej fra s til t med mindst mulige spor-skifte,dvs. bruger f�rrest mulig op- og nedkanter. 2Sp�rgsm�al : Giv en algoritme, der givet en v�gtet k-spors graf med n knuder ogto knuder s og t, �nder den kortest vej fra s til t hvor alle op og ned kanter p�a stien erefterfulgt af en horizontal kant (dvs. det er ikke tilladt at have to kanter umiddelbartefter hinanden som begge skifter mellem to spor). Angiv algoritmens udf�rselstid. 2

(Opgaves�ttet forts�tter)

Page 58: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen august 2006Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig pr�veSide 4 af 5 siderOpgave 3 (25%)I denne opgave er der givet to sekvenser af heltal x1; x2; : : : ; xn og y1; y2; : : : ; ym medhenholdsvis n ogm elementer. I denne opgave �nsker vi at �nde en voksende delsekvensder alternerer mellem elementer fra de to lister, og som starter med et element xi ogslutter med et element yj. Formelt �nsker vi at �nde 1 � i1 < i2 < � � � < ik � n og1 � j1 < j2 < � � � < jk � m s�aledes at k er st�rst mulig og xi < yi for i = 1; 2; : : : ; kog yi < xi+1 for i = 1; 2; : : : ; k� 1. Vi kalder s�adan en sekvens for en l�ngste voksendealternerende delsekvens.For de to sekvenser x1; : : : ; xn = 3; 7; 15; 3; 16; 4; 12; 8y1; : : : ; ym = 4; 9; 13; 10; 5; 6; 8; 14; 15er en l�ngste voksende alternerende delsekvens 3; 5; 7; 8; 12; 14 .I det f�lgende er L(i; j) l�ngden af en l�ngste voksende alternerende delsekvens derslutter med xi og yj. L(i; j) kan beskrives ved f�lgende rekursionsformel:L(i; j) = 8>><>>: 0 hvis i = 0 _ j = 00 hvis xi � yj2 + maxfL(i0; j 0) j 0 � i0 < i ^ 0 � j 0 < j ^ yj0 < xig hvis xi < yjSp�rgsm�al a: Udfyld nedenst�aende L(i; j) tabel for sekvenserne x1; : : : ; x4 = 3; 5; 1; 4og y1; : : : ; y5 = 6; 2; 7; 8; 1: inj 0 1 2 3 4 501234 2Sp�rgsm�al b: Angiv en algorime baseret p�a dynamisk programmering der �nderl�ngden af en l�ngste voksende alternerende delsekvens for x1; : : : ; xn og y1; : : : ; ym.Angiv algoritmens udf�rselstid. 2Sp�rgsm�al : Udvid algoritmen til at rapportere en l�ngste voksende alternerendedelsekvens. Angiv algoritmens udf�rselstid. 2

(Opgaves�ttet forts�tter)

Page 59: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen august 2006Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig pr�veSide 5 af 5 siderOpgave 4 (25%)I denne opgave betragtes kun strenge over alfabetet fa; bg.For en streng T = T [1℄T [2℄ � � �T [m℄ af l�nge m de�nerer vi perioden af T til at v�redet mindste p > 0 s�aledes at T [p+ 1::m℄ = T [1::m� p℄ ;dvs. T [p+ i℄ = T [i℄ for i = 1; 2; : : : ; m� p.Strengen T = abaabaab har perioden 3 da T [4::8℄ = T [1::5℄ = abaab, hvilket ogs�a kanses ved at pla ere to kopier af T over hinanden med den ene forskudt p positioner:a b a| {z }p a b a a b| | | | |a b a a b a a bEn streng T af l�ngde m siges at v�re periodisk hvis dens periode p � m=2.Ovenst�aende streng er periodisk da p = 3 � m=2 = 4. Derimod er strengen ababbbabaf l�ngde m = 8 ikke periodisk, da den har perioden p = 6 > m=2 = 4.Sp�rgsm�al a: Angiv perioden for strengen T = abbabbaabbabb og om strengen erperiodisk. 2Sp�rgsm�al b: Beskriv en algoritme med udf�rselstid O(m2) der beregner periodenaf en streng T af l�ngde m. 2I det f�lgende �nsker vi givet en streng S af l�ngde n at �nde en l�ngste periodiskedelstreng af S (hvis s�adan en delstreng �ndes). Den l�ngste periodiske delstreng afS = bbabaababaabbbabbaa er delstrengen S[2::12℄ som har perioden 5.Bem�rk at i suÆx-tr�et for ovenst�aende streng S, �ndes der en knude v svarende tildelstrengen babaab, v har i sit undertr� blade svarende til suÆxerne af S starende iposition 2 og 7, perioden p = 7� 2, og at jbabaabj = 6 � p = 5.Sp�rgsm�al : Beskriv en algoritme med udf�rselstid O(n2), der givet et suÆx-tr�for en streng S af l�ngde n, for hver knude v i suÆx-tr�et �nder to positioner iv og jvhvor suÆxerne startende i position iv og jv har delstrengen svarende til v som pre�x,og s�aledes at afstanden mellem iv og jv er mindst mulig. 2I det f�lgende kan antages at et suÆx-tr� for en streng af l�ngde n fra et alfabet medO(1) tegn kan konstrueres i O(n) tid.Sp�rgsm�al d: Angiv en algoritme der givet en streng S af l�ngde n �nder denl�ngste periodiske delstreng i tid O(n2). 2

Page 60: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

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

Eksamenslokale: Skøjtehallen, Gøteborg Alle 9, Arhus N

Tilladte medbragte hjælpemidler:

Alle sædvanlige hjælpemidler (lærebøger, notater, lommeregner).Computer ma ikke medbringes.

Materiale der udleveres til eksaminanden:

OPGAVETEKSTENBEGYNDER

PA NÆSTE SIDE

—oOo—

Page 61: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen Sommeren 2007Algoritmer og Datastrukturer 2 (2003-ordning)

Skriftlig prøveSide 2 af 7 sider

Opgave 1 (25%)

I denne opgave betragtes net-grafer. En net-graf er en uorienteret vægtet graf hvorknuderne er arrangeret i et net af k rækker og ℓ søjler, saledes at en knude er forbundetmed knuderne til venstre og højre for knuden (hvis disse findes) og knuderne over ogunder knuden (hvis disse findes). Vægtene pa kanterne antages at være positive heltal.Nedenstaende viser en net-graf for k = 4 og ℓ = 5.

2 4 3 2

3 4

1 19

2513

7 1

6

2 2

4 1

3

2

25

2

27

252

65 44

48 53 36

A B

I J

N O

S TR

M

H

C D E

GF

LK

P Q

t

s

Den nederste venstre knude i en net-graf betegnes s og den øverste højre knude beteg-nes t.

Spørgsmal a: Angiv antal knuder n og kanter m i en net-graf som funktion af antalrækker k og søjler ℓ. Angiv som funktion af k og ℓ udførselstiden for Dijkstra’s algoritmefor at finde en korteste vej fra s til t i en net-graf. 2

Spørgsmal b: Angiv en kortest vej fra s til t i ovenstaende eksempel (hvor s og t

betegner knuderne P og E). Angiv knuderne langs stien og længden af stien. 2

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æreen knude hvor man fortsætter lige ud. I ovenstaende eksempel er stien

P − Q − L − M − N − O − J − E

ikke en lovlig sti (enˆangiver at der drejes i knuden), da man drejer i bade Q og L.Derimod er stien

P − Q − R − M − H − C − B − A − F − K − L − M − N − O − J − E

en lovlig sti da der mellem alle knuderne hvor der drejes er mindst en knude hvor derkøres lige ud (bemærk at knuden M besøges to gange).

(Opgavesættet fortsætter)

Page 62: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen Sommeren 2007Algoritmer og Datastrukturer 2 (2003-ordning)

Skriftlig prøveSide 3 af 7 sider

Spørgsmal c: Angiv en kortest vej fra s til t i ovenstaende eksempel hvor man ikkedrejer i to knuder efter hinanden. Angiv knuderne langs stien og længden af stien. 2

Spørgsmal d: Beskriv en algoritme der finder den kortest vej fra s til t i en net-grafhvor man ikke drejer i to knuder umiddelbart lige efter hinanden. Angiv algoritmensudførselstid som funktion af antal rækker k og søjler ℓ. (Lav f.eks. en orienteret grafhvor hver knude i net-grafen bliver repræsenteret af flere knuder og saledes at en korteststi i net-grafen hvor man ikke drejer i to knuder efter hinanden svarer til en kortestesti i den nye orienterede graf.) 2

(Opgavesættet fortsætter)

Page 63: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen Sommeren 2007Algoritmer og Datastrukturer 2 (2003-ordning)

Skriftlig prøveSide 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ængderV1 og V2, saledes at alle kanter i G gar mellem en knude i V1 og en knude i V2. D.v.s.der findens ingen kanter der forbinder to knuder V1 eller to knuder i V2. Et eksempelpa en to-delt graf er følgende graf:

C

B

E

H

J

K

A

F

D

G

I

V2

V1

Bemærk at en to-delt graf kan aldrig indholde en cykel med et ulige antal kanter.

Spørgsmal a: Vis at nedenstaende graf er to-delt ved at angive en opdeling afknuderne i V1 og V2 sa alle kanter gar imellem en knude i V1 og en knude i V2.

J

H

C

DA

F

I

G

E

B

K

2

Spørgsmal 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. 2

(Opgavesættet fortsætter)

Page 64: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen Sommeren 2007Algoritmer og Datastrukturer 2 (2003-ordning)

Skriftlig prøveSide 5 af 7 sider

Opgave 3 (15%)

I denne opgave betragter vi minimum udspændende træer for vægtede uorienteredegrafer. Det antages at alle vægte er forskellige.

2

57

8

4

3

6

89

1011

12

131

1415 1617

18

1920

21

H

I

B

J

K

A

C

D

F

G

E

Spørgsmal a: Angiv kanterne i et minimum udspændende træ for ovenstaende grafog vægten af træet. 2

I det følgende ønsker vi at vedligeholde et minimum udspændende træ under fjernelseaf kanter i en eksisterende graf. Man kan i det følgende bruge nedenstaende sætningom 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 V1 og V2 være være en opdeling af knuderne i G. Et

minimum udspændende træ for G indeholder den letteste kant mellem V1

og V2.

Spørgsmal b: Lad G være en vægtet uorienteret graf og T et minimum udspændendetræ for G. Antag vi vil slette en kant (u, v) fra grafen. Lad G′ være den nye graf. Beskriven algoritme til at finde et minimum udspændende træ T ′ for G′, nar det minimumudspæ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 .) 2

(Opgavesættet fortsætter)

Page 65: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen Sommeren 2007Algoritmer og Datastrukturer 2 (2003-ordning)

Skriftlig prøveSide 6 af 7 sider

Opgave 4 (25%)

I denne opgave ønsker vi, givet to sekvenser S = x1, . . . , xm og T = y1, . . . , yn af længdem og n, at finde en ny sekvens U som indeholder S og T som delsekvenser. En sadansekvens 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, sa er nedenstaende sekvenser eksemplerpa super-sekvenser for S og T (understregning og overstregningen viser forekomsten afS og T ):

U1 = A B A B A A B B A B B

U2 = A B B A B B A A

U3 = A B A B A B A B

Sekvenserne U2 og U3 er eksempler pa korteste super-sekvenser for S og T , da allesuper-sekvenser for eksemplet vil have længde 8 eller mere.

Vi lader L(i, j) betegne længden af den korteste super-sekvens for x1, . . . , xi og y1, . . . , yj.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 = 0

1 + min{L(i − 1, j), L(i, j − 1)} hvis i > 0 ∧ j > 0 ∧ xi 6= yj

1 + L(i − 1, j − 1) hvis i > 0 ∧ j > 0 ∧ xi = yj

Spørgsmal a: Udfyld nedstaende tabel for L(i, j) nar S = A B A B ogT = B B A.

L(i, j) 0 1 2 3

01234

2

Spørgsmal b: Angiv en algoritme baseret pa dynamisk programmering der finderlængden af en kortest super-sekvens for to sekvenser S og T af længde m og n. Angivalgoritmens udførselstid. 2

Spørgsmal c: Udvid algoritmen fra spørgsmal b) til at rapportere en kortest super-sekvens for to sekvenser S og T af længde m og n. Angiv algoritmens udførselstid.

2

(Opgavesættet fortsætter)

Page 66: Skriftlig Eksamen Algoritmer og Datastrukturer (dADS)kurser.lobner.dk/dADS2/dADS2_02-07.pdf · 2008. 3. 12. · Algoritmer og Datastrukturer (dADS) Datalogisk Institut Aarhus Universitet

Eksamen Sommeren 2007Algoritmer og Datastrukturer 2 (2003-ordning)

Skriftlig prøveSide 7 af 7 sider

Opgave 5 (20%)

Spørgsmal a: Angiv suffix-arrayet for strengen: B A N A N A S . 2

Spørgsmal b: Angiv suffix-træet for strengen: B A N A N A S . 2

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 ma godt overlappe. Fork = 4 er den mest hyppige forekomst af en streng af længde k i nedenstaende eksempeldelstrengen A B C A, som forekommer 6 gange.

S = AB C A B C AC B A B C AB C A A BC A C B AB C B A BC A A C

I det følgende kan antages at et suffix-træ for en streng af længde n fra et alfabet medO(1) tegn kan konstrueres i O(n) tid.

Spørgsmal c: Beskriv en algoritme der givet en streng S og et heltal k finder endelstreng 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. 2