Linköpings Tekniska Högskola 00-08-0 Institutionen för Datavetenskap David Broman / Jan Maluszynski / Kaj Holmberg TDDB6 DALGOPT Algoritmer och Optimering Tentamen 00-08-0, 8 Examinator Jan Maluszynski / Kaj Holmberg Jour Jan Maluszynski, 0-88 eller 0707-08 Kaj Holmberg, 070-869790 Maxpoäng 0p (varav max p kan tillgodoräknas från kontrollskrivningen den 0/0 00) Rättning Resultat från tentamen kommer att presenteras via e-mail senast slutet vecka, 00. Tillåtna Miniräknare hjälpmedel Engelsk-Svensk ordbok Lewis, Denenberg: Data Structures and Their Algorithms Lewis, Denenberg: Kap 7. Self Adjusting Binary Search Trees (Från boken ovan) Goodrich, Tamassia: Data Structures and Algorithms in Java Cormen, Leiserson, Rivest: Introduction to Algorithms William Pugh: Skip Lists A Probabalistic Alternative to Balanced Trees (Artikel) Holmberg: Kombinatorisk optimering med linjärprogrammering (kompendium) Papadimitriou, Steiglitz: Combinatorial Optimization: Algorithms and Complexity Generella instruktioner: Läs igenom alla uppgifter innan du börjar. Redovisa maximalt en uppgift per inlämnat ark. Består uppgiften av flera deluppgifter kan dessa redovisas på samma ark. Skriv namn och personnummer överst på varje ark. Skriv tydligt. Oläsbara lösningsförslag beaktas icke. Motivera tydligt alla steg i svaret/lösningen. Avsaknad av motivering kan medföra poängavdrag. Används fakta från delar av böckerna som ej använts under kursen, bifoga referens till vilken bok och sida varur dessa fakta är hämtade. Uppgifterna är inte ordnade i svårighetsgrad. Ett exemplar av respektive tillåten bok/artikel finns att titta i hos tentamensvakten. Dessa får inte bortföras därifrån. OBS! Notera följande: Detta är en ordinarie tentamen i kursen DALGOPT och den består av två delar:. En del som motsvarar kontrollskrivning avseende stora delar av algoritmdelen av kursen max poäng. Dessa uppgifter är tydligt markerade med texten kontrollskrivningsuppgift.. En del som behandlar resterande algoritmuppgifter (6p) och samtliga optimeringsuppgifter (0p) Resultatet från kontrollskrivning kan nyttjas på denna tentamina om så önskas. Gör då så här: Lämna inte in lösningar på någon av kontrollskrivningsuppgifterna, och vi kommer automatiskt att inkludera resultatet av din kontrollskrivning när vi summerar poängen. Lycka till!
. Bevisa eller motbevisa om följande är sant eller falskt: (Kontrollskrivningsuppgift) ( p) (a) n O( n ) (0.) (b) Θ(n ) O( n ) (0.) (c) Ω(n) Θ(n ) (0.) (d) log n Θ(n log n) (0.) (e) n! O(n n ) (0.) (f) (n 9!) Ω(n ) (0.). Betrakta följande algoritm. (Kontrollskrivningsuppgift) ( p) procedure P(array S[..n]): for i from to n do x S[i] j i while j > 0 and S[j] x do S[j + ] S[j] j j S[j + ] x (a) Bestäm algoritmens tidskomplexitet T(n) för värsta-fallet. Utförlig och noggrann ana- () lys krävs för full poäng. (b) Uppskatta algoritmens rumskomplexitet, dvs. algoritmens minnesåtgången beroende (0.) på n. Motivera ditt svar väl. (c) Ange ett fall då algoritmen går betydligt snabbare en för värsta-fallet. Beskriv varför () och ange tidskomplexiteten. Du behöver inte göra en utförlig analys. (d) Algoritmen ovan liknar en välkänd algoritm. Vad heter den? (0.) (e) Är algoritmen beskriven ovan stabil? Varför? Varför inte? (0.) (f) Det finns dock en betydande förbättring av ovan algoritm, där ytterligare en yttre (0.) loop läggs till, vilket gör den mot förmodan snabbare. Vad kallas denna förbättrade algoritm?
. Betrakta följande träd. (Kontrollskrivningsuppgift) ( p) (a) Vilket / vilka av ovan träd är (vänster)-fullständiga (complete). () (b) Vilket / vilka av ovan träd är AVL-träd? () (c) Vilket / vilka av ovan träd kan representera en heap. Skriv ner binärrepresentationen () för detta / dessa träd. (d) Ange ordningen av noder som besöks vid en in-order traversering av träd B. (). Hashtabeller (Kontrollskrivningsuppgift) ( p) Vi har en tom hashtabell bestående av 0 element, vilken använder sig av öppen adressering och linjär sondering. Hash-funktionen som används är h(k) = (k ) mod 0. (a) Visa hashtabellens utseende efter det att följande tal har satts in enligt den givna () ordningen.,,,, 6, 8, 6, 7 (b) Hur många sonderingsförsök (probes) behöver genomföras för att finna talet? (0.) (c) Hur många sonderingsförsök behöver genomföras för att konstatera att inte talet (0.) finns med i hashtabellen?
. Studera följande grafer (6 p) (a) Det finns två generella typer av datastrukturer för att representera grafer. Vilka är () det? Beskriv och rita representationen av graf A ovan enligt båda strukturerna. (b) Grafer som har utseendet enligt graf B har ett speciellt namn. Vilket? (0.) (c) Är graf B starkt kopplad (strongly connected)? Varför / varför inte? (0.) (d) Redogör för hur algoritmen djupet först sökning fungerar. Ange i vilken ordning noder- (.) na i graf B besöks (preorder) om en djupet först sökning genomförs. Välj noder i först hand efter grannbågars kostnader, dvs. låg kostnad först. Välj i andra hand noderna i alfabetisk ordning. Börja med nod a. (e) Redogör för begreppet topologisk sortering. Ange en topologisk sortering av graf B. (.) Redovisa ditt tillvägagångssätt noggrant. 6. Betrakta följande optimeringsproblem. (9 p) max z = x + x då x + x x + x x, x 0, heltal (a) Lös LP-relaxationen till problemet ovan med simplexmetoden. () (b) Lös heltalsproblemet med Land-Doig-Dakins trädsökningsmetod. (LP-problem i två () dimensioner får lösas grafiskt.) (c) Känslighetsanalys görs normalt sett inte på heltalsproblem, eftersom effektiva metoder () saknas. Två-dimensionella problem kan dock studeras grafiskt. Finn följande med hjälp av grafiska undersökningar. i) Ange bivillkorens skuggpris i optimum. ii) Ange optimallösning för samtliga värden på b. iii) Ange optimallösning för samtliga värden på c.
7. (7 p) 9 8 7 7 6 (a) Finn billigaste -träd i grafen ovan. () (b) Betrakta handelsresandeproblemet i grafen. Försök att finna en handelsresandetur ge- () nom att flytta enstaka bågar i lösningen till uppgift b. (Ta hänsyn till nodernas valens.) Vilka övre och undre gränser till det optimala målfunktionsvärdet för handelsresandeproblemet fås av detta, samt av lösningen i uppgift a? (c) Lös handelsresandeproblemet med optimerande trädsökning. Utnyttja resultaten i upp- () gift b. 8. En viss typ av s.k. inversa optimeringsproblem är att finna en uppsättning bågkostnader i ( p) en riktad graf så att en viss given väg blir billigast. Bågkostnaderna skall vara positiva heltal, dvs. större eller lika med ett. Betrakta mer specifikt problemet att finna positiva heltaliga bågkostnader så att ett givet riktat träd (innehållande en väg från nod till varje annan nod) skall vara de unika billigaste vägarna. (a) Hur kan man lösa detta problem exakt? Kan en lösning finnas i polynomisk tid? () (b) Finn, med en heuristisk metod, en lösning till nedanstående exempel, där de tjocka () bågarna är de billigaste vägarna. Verifiera att resultatet är korrekt.