ksamen 06, F side af sider anmarks Tekniske Universitet Skriftlig prøve, den 9. maj 0. ursusnavn: lgoritmer og datastrukturer ursus nr. 06. jælpemidler: Skriftlige hjælpemidler. et er ikke tilladt at medbringe lommeregner. Varighed: timer Vægtning af opgaverne: Opgave - 0%, Opgave - 0%, Opgave - 0%, Opgave - %, Opgave - %. Vægtningen er kun en cirka vægtning. lle opgaver besvares ved at udfylde de indrettede felter nedenfor. Som opgavebesvarelse afleveres blot denne og de efterfølgende sider i udfyldt stand. vis der opstår pladsmangel kan man eventuelt benytte ekstra papir som så vedlægges opgavebesvarelsen. Vejledende løsning ksamenssættet fortsætter på næste side
ksamen 06, F side af sider Opgave (kompleksitet). ngiv for hver af nedenstående udsagn om de er korrekte: n(n + )/00 = O(n ) n(n + )/ + log n = O(n ) n log n = O(n) n = O(log n) n + n(n )/ = O(n) a x x x Nej x x. Skriv følgende liste af funktioner op i voksende rækkefølge efter asymptotisk vækst. vs. hvis funktionen g(n) følger umiddelbart efter funktionen f(n) i din liste, så skal der gælde at f(n) = O(g(n)). n 0000 n log n + 00n + 000n n log n n / n + n Svar: n /, n + n, n log n + 00n + 000n, n 0000, n log n. etragt nedenstående algoritme, der som input tager et array med n heltal. lgorithm økke([... n]) : for i = to n do : for j = i + to n do : if [i]=[j] return false : end for : end for 6: Return true Forklar hvad algoritmen beregner/gør: lgoritmen returnerer true hvis alle tal i rækken er forskellige og false ellers. øretiden af algoritmen er (sæt kun ét kryds): it svar skal være så tæt som muligt Θ(log n) Θ(n) Θ(n log n) Θ(n log n) Θ(n. ) F Θ(n ) Θ( n ) Θ(n ) Θ( n) ksamenssættet fortsætter på næste side
ksamen 06, F side af sider. ntag at du har en algoritme hvis køretid er præcist n. vor meget langsommere kører algoritmen hvis du fordobler inputstørrelsen? dobbelt så langsom gange langsommere gange langsommere 8 gange langsommere gange langsommere F gange langsommere. etragt nedenstående algoritme. lgorithm økke(n) : if n > 0 then : for i = to n do : print : end for : økke(n ) 6: end if a) vor mange stjerner udskriver algoritmen økke når den bliver kaldt med parameteren n = : 0 b) øretiden af algoritmen er (sæt kun ét kryds): it svar skal være så tæt som muligt Θ(log n) Θ(n) Θ(n log n) Θ(n log n) Θ(n ) F Θ(n ) Θ( n ) Θ(n ) Θ( n) ksamenssættet fortsætter på næste side
ksamen 06, F side af sider Opgave (grafer). ngiv et korteste veje træ for nedenstående graf når korteste veje beregningen sker fra startknuden. ngiv for hver knude afstanden fra knuden. F 6 8 ngiv korteste veje træet og afstandene her: 0 6 F 6 0 6 en stiplede kant er ikke med i i korteste veje træet. Men kanten fra til kan erstattes med den stiplede kant. ksamenssættet fortsætter på næste side
ksamen 06, F side af sider. etragt nedenstående graf. F a) ngiv et FS træ for grafen når FS gennemløbet starter i knuden. ngiv FS-dybde/lag for hver knude. et antages at incidenslisterne er sorteret i alfabetisk orden. 0 F b) ngiv et FS træ for grafen, når FS gennemløbet starter i knuden. ngiv discovery time og finishing time for hver knude. et antages at incidenslisterne er sorteret i alfabetisk orden. / / / / 9/0 8/ F / /6 0/ /6 /9 /8 ksamenssættet fortsætter på næste side
ksamen 06, F side 6 af sider. ngiv et mindste udspændende træ i nedenstående graf. 8 9 F 6 ngiv det mindste udspændende træ og værdien af det her: F Værdi:. r nedenstående graf en (directed acyclic graph)? vis ja, så angiv en topologisk sortering af knuderne. vis nej, så forklar hvorfor. F rafen er ikke en, da den indeholder kredse (se kreds markeret med rødt). ksamenssættet fortsætter på næste side 6
ksamen 06, F side af sider Opgave (modellering og anvendelse af algoritmer/datastrukturer) Rejseselskabet Øer os planlægger rejser til øgruppen lgo. Nogle af øerne er forbundet med broer, andre må man sejle imellem. er er X øer, broer, og F færger. ver færge sejler frem og tilbage mellem to øer. Opgave.: Rejser for søsyge R a nogle af rejseselskabets kunder nemt bliver søsyge, ønsker firmaet at finde det største antal øer man kan besøge uden at skulle sejle imellem dem. På den måde kan de rejsende nøjes med at sejle til den første ø i gruppen og derefter komme til de andre øer via broerne. iv en effektiv algoritme der finder det største antal øer man kan besøge uden at sejle imellem dem. ngiv køretiden af din algoritme i asymptotisk notation (ved hjælp af parametrene X, og F ) og argumenter for at den virker. Svar Problemet kan modelleres som en uorienteret graf. Øer er knuder og broerne er kanter. er er en knude for hver ø. er er en kant mellem to knuder, hvis der er en bro mellem de to øer som knuderne svarer til. er er X øer og kanter. Problemet svarer nu til at finde den største sammenhængskomponent i grafen. ette kan gøres ved hjælp af enten FS- eller FS-algoritmen. ør FS (eller FS) fra en knude. Modificer algoritmen så den har en tæller, der tælles op hver gang en ny knude mødes. Til sidst returneres antallet af mødte knuder, dvs. antallet af knuder i den sammenhængskomponent. vis der stadig er knuder i grafen der ikke er besøgt, så kør FS (eller FS) igen fra en af disse (med tælleren nulstillet). liv ved med at køre FS (FS) indtil alle knuder er besøgt. Nu kendes størrelserne af alle sammenhængskomponenterne og det største tal returneres. FS-algoritmen tager O(X + ) tid. Modifikationen ændrer ikke på køretiden, da tælleren kan opdateres i konstant tid i hver iteration (det samme gælder FS). ksamenssættet fortsætter på næste side
ksamen 06, F side 8 af sider Opgave.: illigste færgeture ndre af rejseselskabets kunder ønsker at besøge en gruppe af Y øer, hvor der ikke er nogle broer imellem. et er muligt at besøge alle øerne ved at tage færger imellem dem. Firmaet kender prisen for alle færgeture. lle billetterne til færgerne er returbilletter. vs. man betaler for både at sejle frem og tilbage når man køber en færgebillet. er er færgeruter. Firmaet vil gerne tilbyde den billigste rejse, så de vil gerne minimere den pris man betaler for færgebilletter. iv en algoritme der finder ud af hvilke færgebilletter der skal købes for at alle Y øer kan besøges, og så den samlede pris for færgebilletter bliver mindst mulig. ngiv køretiden af din algoritme i asymptotisk notation (ved hjælp af parametrene Y og ) og argumenter for at den virker. Svar Problemet modelleres som en vægtet uorienteret graf. Øer er knuder og færgertuerne er kanter. er er en knude for hver ø. er er en kant mellem to knuder, hvis der er en færgerute mellem de to øer som knuderne svarer til. Vægten af kanten er prisen for færgebilletten. er er Y øer og kanter. a priserne er for en returbillet, svarer problemet til at finde det mindste udspændende træ i grafen. Når man har fundet et mindste udspændende træ kan man besøge alle øer ved at følge en rute der svarer til et trægennemløb af træet. ver kant besøges kun gange (en gang i hver retning) og det svarer til at der betales for netop en returbillet for hver færgerute i det mindste udspændende træ. Prisen for færgebilletter i alt bliver derfor vægten af det mindste udspændende træ. enne kan findes i lineær tid (O(Y ) tid) ved et trægennemløb når først MST er fundet. et er ikke muligt at gøre det billigere end prisen for et mindste udspændende træ, da enhver rute der besøger alle øerne må være sammenhængende, og et mindste udspændende træ er den billigste sammenhængende delgraf i grafen. vis Prims algoritme bruges bliver køretiden O( log Y ). ksamenssættet fortsætter på næste side 8
ksamen 06, F side 9 af sider Opgave.: illigste tur til alle øer Som i forrige opgave ønsker firmaet at minimere den pris man betaler for færgebilletter. Men nu er der broer mellem nogle af øerne. a broerne er gratis er der ingen grund til at tage en færge mellem to øer hvis der er en bro. er er X øer, broer, og F færger. iv en algoritme der finder ud af hvilke færgebilletter der skal købes for at alle X øer kan besøges, og så den samlede pris for færgebilletter bliver mindst mulig. ngiv køretiden af din algoritme i asymptotisk notation (ved hjælp af parametrene X, og F ) og argumenter for at den virker. Svar Problemet modelleres som en graf, hvor alle øer er knuder og kanterne svarer til broer og færgeruter. anterne der svarer til broer har vægt 0, og kanterne der svarer til færgeruter har vægt lig med prisen for billetten. vs. der er en kant mellem to knuder hvis der er en bro eller færgerute imellem dem. Problemet kan nu løses ved hjælp af algoritmen fra opgave.. rafen har X knuder og højst F + kanter. ruges Prims algoritme til at finde MST i tager O((F + ) log X) tid. lternativt svar Problemet modelleres som en graf, hvor alle øer er knuder og kanterne svarer til broer som i opgave.. lle sammenhængskomponenter findes som i opgave.. er laves nu en ny graf, hvor knuderne er sammenhængskompenterne i. anterne i er færgeruterne. er er en kant mellem to knuder u og v hvis der er en færgerute mellem en ø i u og en ø i v. Vægten af kanten er prisen for den billigste sådanne færgerute. Problemet kan nu løses ved hjælp af algoritmen fra opgave.. t finde alle sammenhængskomponenterne i tager O(X + ) tid. Når sammenhængskomponenterne er fundet tager det O(X + F ) tid at konstruere. rafen har højst X knuder og højst F kanter. ruges Prims algoritme til at finde MST i tager denne del O(F log X) tid. alt bliver køretiden: O(X + ) + O(X + F ) + O(F log X) = O(X + + F log X). ksamenssættet fortsætter på næste side 9
ksamen 06, F side 0 af sider Opgave (Træer). Trægennemløb etragt nedenstående træ. F ngiv hvilke af følgende sekvenser af bogstaver der bliver udskrevet ved et preorder, inorder og postorder gennemløb af ovenstående træ. F F F F F 6 F Preorder: norder: Postorder:. orteste sti enne opgave omhandler rodfæstede binære træer. ver knude har enten to eller ingen børn. nuden x s venstre barn betegnes left[x], og dens højre barn betegnes right[x]. vis knuden x ikke har nogle børn, har left[x] og right[x] den specielle nil værdi. vis knude x ikke har nogle børn, kaldes den et blad. llers kaldes den en intern knude. Såfremt rodknuden for et træ er nil, er træet tomt... etragt nedenstående træ. F M vad er længden af den korteste rod-til-blad sti i træet: vad er længden af den længste rod-til-blad sti i træet: ksamenssættet fortsætter på næste side 0
ksamen 06, F side af sider.. etragt følgende algoritme: lgorithm Træ(x) : if (x = nil or left[x] = nil) then : return 0 : else : return Træ(left[x]) + : end if Forklar hvad algorimen Træ(x) beregner når den bliver kørt med rodknuden til et vægtet binært træ T som input? Svar en returnerer længden af stien der går fra roden og ned til bladet længst til venstre. av algoritmen om så den i stedet returnerer længden af den korteste rod-til-blad sti i træet. køretiden af din algoritme i asymptotisk notation og argumenter for at den virker. ngiv Svar lgorithm Træ(x) : if (x = nil or left[x] = nil) then : return 0 : else : return min{træ(left[x]), Træ(right[x])}+ : end if lgoritmen finder længden af den korteste rod-til-blad sti i børnenes deltræer, tager minimum af de to og lægger en til svarende til kanten fra knuden x til barnet. vis det er et tomt træ returneres 0. vis x er et blad returneres også 0. øretiden af algoritmen er Θ(n) hvor n er antallet af knuder i træet. vert kald tager konstant tid og der kaldes kun en gang for hver knude. ksamenssættet fortsætter på næste side
ksamen 06, F side af sider Opgave (datastrukturer). etragt nedenstående kø implementeret ved hjælp af en tabel (et array)..head = og.tail = 8. 6 8 O M ngiv hvordan køen ser ud efter følgende operationer: nqueue(), nqueue(t), equeue(), nqueue(u). 6 8 T U O M. ad være en hægtet hashtabel (chained hashing) af størrelse med hashfunktion h(x) = x mod. ngiv hvordan hashtabellen ser ud efter indsættelse af tallene 6,,,, 0 6. ad være en hashtabel med linær probering (linear probing) af størrelse med hashfunktion h(x) = x mod. ngiv hvordan hashtabellen ser ud efter indsættelse af tallene 6,,,, 0 6 ksamenssættet fortsætter på næste side
ksamen 06, F side af sider. enne opgave omhandler binære max-hobe. Opgave a ngiv hvordan den binære hob nedenfor ser ud efter indsættelse af et element med nøgle 8. 9 6 Svar 8 9 6 Opgave b ngiv hvordan den binære hob nedenfor ser ud efter én xtract-max operation. 8 9 6 Svar 9 8 6