Opgave 1 è20èè Et bin rt tr med heltal i knuderne kan repr senteres som en v rdi af f lgende rekursive type: Type Tree = Prèval: Int, left, right: Treeè hvor det tomme tr angives som?-tree. Vi er interesserede i at afg re, om et tr er et deltr af et andet. Til det form l vil vi skrive env rdiprocedure: Proc Deltr ës, t: Treeë! èboolè der afg r, om s er et deltr af t. En naiv algoritme for dette problem er, for hver knude i tr et t, at afg re om s er identisk med det deltr af t, der har denne knude som r. Det vil give en tidskompleksitet p Oèjtjjsjè. En smartere algoritme er kun at unders ge dette for de knuder i t, hvis undertr har det samme antal knuder som s. Man kan let se, at dette forbedrer tidskompleksiteten til Oèjtj + jsjè. Implementer proceduren Deltr, s den benytter den smarte algoritme. Der l gges v gt p, at besvarelsen er letl selig, detaljeret og korrekt.
Opgave 2 è20èè Det er velkendt, at f lgende algoritme er gyldig og korrekt. Algoritme: Heltalskvadratr Stimulans: n: nç0 Respons: r: r 2 ç n é èr +1è 2 Mete: r, h:= 0, 1 do í è0 ç rè ^ èr 2 ç nè ^ èh = èr +1è 2 èí hçn!r, h:= r+1, h+r+r+3 Man kan tilsvarende konstruere en algoritme, der beregner heltalskubikren af et ikke-negativt tal. Algoritme: Heltalskubikr Stimulans: n: nç0 Respons: r: r 3 ç n é èr +1è 3 Mete: çinitialiser r, h og tç do í è0 ç rè ^ èr 3 ç nè ^ èh = èr +1è 3 è^èt=èr+1è 2 èí h çn! çopdater r, h og tç aè Udfyld de manglende stumper i algoritmen, s ledes at opdateringen kun benytter additioner. bè Bevis, at algoritmen fra aè er gyldig og korrekt.
Opgave 3 è20èè I en vilk rlig uorienteret v gtet graf med n knuder og m kanter kan man som bekendt çnde v gten af det letteste udsp ndende tr i tid Oèèn + mè log nè ved brug af Prims algoritme. I denne opgave skal vi se, hvordan man kan udnytte egenskaberne ved nogle specielle grafer til at opn forbedrede tidskompleksiteter. Det antages ikke, at grafen er sammenh ngende; derfor betragter vi den letteste udsp ndende skov, der best r af det letteste udsp ndende tr for hver sammenh ngskomponent. aè Antag, at vi kun ser p grafer, i hvilke alle kanter har v gten 1. Skitser en simpel og eçektiv algoritme, der beregner v gten af den letteste udsp ndende skov. Argument r for algoritmens tidskompleksitet. bè Antag, at vi kun ser p grafer, i hvilke alle kanter har v gten 1 eller 2. Skitser en simpel og eçektiv algoritme, der beregner v gten af den letteste udsp ndende skov. Argument r for algoritmens tidskompleksitet. cè Antag, at vi kun ser p grafer, i hvilke alle knuder har grad h jst 2. Skitser en simpel og eçektiv algoritme, der beregner v gten af den letteste udsp ndende skov. Argument r for algoritmens tidskompleksitet.
Opgave 4 è20èè P et gulv nsker man at skrive s tninger ved hj lp af çiser med bogstaver p. Desv rre kan man ikke n dvendigvis k be çiser med enkelte bogstaver p, s det kan v re et problem at f skrevet de nskede s tninger. Generelt er vi givet en samling çisetyper, repr senteret som en liste F af tekster, samt en s tning S, der blot er en tekst. Vi nsker at afg re, om man med èen ubegr nset forsyning afè de givne çisetyper kan skrive den valgte s tning. For eksempel kan vi betragte s tningen: D A T A L O G I E R B A R E S S J O V T og f lgende samling af çisetyper: A B A R S J O A B E A L O D A D A T D A T A E E S E R I E R J O K E D E L I G T L O G L O G I L O G O R R B A V T
Her kan problemet l ses p f lgende m de: D A T A L O G I E R B A R E S S J O V T Det generelle problem kan l ses med f lgende rekursive algoritme: Proc FliserëS: Textëèi, j: Intè! èboolè if i=j!return true ç è+ Var k: Int k:= 0 do ké j F j! if F.èkè =Sèi..jè!return true ç k:= k+1 +è è+ Var m: Int m:= i+1 do méj! if FliserëSëèi, mè ^ FliserëSëèm, jè! return true ç m:= m+1 +è return false end Fliser aè Beskriv i ord hvorledes algoritmen fungerer og vis, at dens udf relsestid tilh rer æè2 jsj è. bè Benyt dynamisk programmering til at opn en mere eçektiv algoritme. Hvad bliver den forbedrede tidskompleksitet?
Opgave 5 è20èè Der skal konstrueres en box Bush med f lgende udseende: Box Bush Type B=çs k af heltalç Proc Initëb: Bë Proc Insertëb: Bëèi: Intè Proc Removeëb: Bëèi: Intè Proc Freqëb: Bëèi: Intè! èintè Proc Selectëb: Bëèk: Intè! èintè end Bush som realiserer en datastruktur hvis v rdier er s kke af heltal. Init skaber en tom s k, Insert og Remove henholdsvis inds tter og fjerner en forekomst af tallet i, Freq returnerer antallet af forekomster af tallet i, og endeligt returnerer Select det k'te element is kken sorteret efter st rrelse èstartende med indeks 1è. For s kken: é 0; 3; 3; 4; 4; 7; 8; 8; 8; 9; 11; 11; 11; 11; 13 é vil Freqëbëè4è s ledes returnere v rdien 2, medens Selectëbëè6è vil returnere v rdien 7. I det f lgende angiver jjbjj antallet af forskellige elementer i s kken b, hvorim jbj angiver det samlede antal elementer. aè Beskriv en realisation af typen B, s Init f r tidskompleksitet i Oè1è og de vrige operationer f r tidskompleksitet i Oèlog jjbjjè. bè Angiv en algoritme, der kan sortere en liste S i tid OèjSj logèjjsjjèè ved brug af en box Bush.