Skriflig Eksamen aasrukurer og Algorimer (M0) Insiu for Maemaik og aalogi Odense Universie Fredag den 5. januar 1996, kl. 9{1 Alle sdvanlige hjlpemidler (lrebger, noaer, ec.) sam brug af lommeregner er illad. Eksamensse besar af 4 opgaver pa 5 nummererede sider (1{5). Fuld besvarelse er besvarelse af alle 4 opgaver. e enkele opgavers vg ved bedmmelsen er angive i procen. er ma gerne refereres il algorimer og resulaer fra lrebogen inklusive velsesopgaverne. Speciel ma man gerne begrunde en pasand med a henvise il, a de umiddelbar flger fra e resula i lrebogen (hvis dee alsa er sand!). Henvisninger il andre bger (udover lrebogen) acceperes ikke som besvarelse af e sprgsmal. Bemrk, a hvis der er e sprgsmal i en opgave, man ikke kan besvare, ma man gerne besvare de eferflgende sprgsmal og blo anage, a man har en lsning il de foregaende sprgsmal. 1
Opgave 1 (15%) Opgaven drejer sig om en ype ikke-orienerede, vgede grafer, kalde blegrafer. En blegraf er en kde af ringe med o srlige knuder kalde endepunkerne. er ndes e endepunk i hver af de yderse ringe. Nedenfor ses e eksempel, hvor kden besar af re ringe, og endepunkerne er u og v. 4 Q QQQ u 0 1 Q H Q HHHH 1 6 H HH 5 1 4 I de flgende bruges n for analle af knuder, m for analle af kaner, og k for analle af ringe i en blegraf. Anag, a grafen er reprsenere ved, a hver knude har ilknye en lise af alle naboknuder (adjacency liss). v Sprgsmal a: Hvad er m udryk ved n og k i en vilkarlig blegraf. Sprgsmal b: Forklar i ord, hvordan man alid kan nde den korese vej mellem endepunkerne (u og v) i en blegraf i id O(n). Opgave (5%) Opgaven drejer sig om sorering. Vi har give en lise af helal A med index fra 0 il n. Elemenerne fra index 1 il n skal soreres. e anages, a A[0] ndes, og a alle i A[0] er mindre end alle andre al i A. Vi anager, a A ikke indeholder dubleer. vs. alle al er forskellige. Nedenfor er angive o soreringsalgorimer. Udvalgssorering Indselsessorering for i = 1 o n 1 do m = i for j = i+1 o n do if A[j] < A[m] hen m = j if i 6= m hen emp = A[i] A[i] = A[m] A[m] = emp for i = 1 o n do j = i x = A[j] while A[j 1] > x do A[j] = A[j 1] j = j 1 A[j] = x Sprgsmal a: Hvad er kompleksieen af de o soreringsalgorimer, hvis de udelukkende kres pa liser, der i forvejen er sorerede? For hver soreringsalgorime angives en af de re muligheder: O(n ), O(n log n) eller O(n), sam en kor begrundelse (angiv i hver ilflde den mindse vre grnse for kompleksieen).
Vi denerer nu, a en lise er i c-uorden, hvor c er e helal, hvis enhver ngle i lisen er anbrag hjs c pladser fra den plads, den ville sa pa, hvis lisen var sorere. I de flgende lille eksempel er A[0] ikke medage. Lisen 0 7 4 6 9 8 er i -uorden, som de ses ved a sammenligne med den sorerede lise 0 4 6 7 8 9 e ses, a sar o pladser vk fra sin rigige plads, sar rigig, 0 sar o pladser forker, 7 sar ogsa o plads forker, 4 sar en plads forker, osv. Lisen er derimod ikke i 1-uorden, neop fordi der er elemener, der sar mere end en plads forker. Hvis en lise er i 0-uorden, er den alsa hel sorere. Sprgsmal b: Hvad er kompleksieen af de o soreringsalgorimer, hvis de udelukkende kres pa liser, der er i c-uorden for en konsan c > 0? For hver soreringsalgorime angives en af de re muligheder: O(n ), O(n log n) eller O(cn), sam en kor begrundelse (angiv i hver ilflde den mindse vre grnse for kompleksieen). Sprgsmal c: Angiv, om der kan laves ganske sma ndringer i algorimerne, sa kompleksieen pa liser, der er i c-uorden (c > 0), kommer ned pa O(cn) (hvis de ikke sker auomaisk). Bemrk, a algorimerne nu ikke behver a virke pa inpu, der ikke er i c-uorden. Forklar kor, hvori ndringerne besar. Opgave (5%) Opgaven drejer sig om a udregne den mes proable plan for a invesere e anal kroner i en rkke virksomheder. Vi har give d virksomheder nummerere fra 1 : : : d. esuden har vi funkionen udbye il radighed. Vi anager, a udbye(p; c) for vilkarlige p og c i konsan id reurnerer de forvenede udbye af a invesere p kroner i virksomhed c. Alle vrdier er helal srre end eller lig med nul. Ved a kalde inveser(p; 1), hvor pseudo-koden for inveser er give nedenfor, kan vi fa beregne de maksimale forvenede udbye af a invesere p kroner i de d virksomheder. funcion inveser(p,c) if c > d hen reurn 0 else max = 1 for i = 0 o p do emp = udbye(i,c) + inveser(p i,c+1) if emp > max hen max = emp reurn max
Sprgsmal a: Forklar kor i ord, hvad inveser(p; c) beregner. Sprgsmal b: Vi berager nu kalde inveser(p; 1). Gr rede for, a de samme resulaer beregnes ere gange. vs. a der ndes q og c, sa kalde inveser(q; c) foreages adskillige gange. Kompleksieen af algorimen er eksponeniel, neop fordi de samme kald laves genagne gange. Sprgsmal c: Konsruer en bedre lsning ved a anvende dynamisk programmering. Hvad bliver kompleksieen udryk i p og d? Opgave 4 (5%) Opgaven drejer sig om sgerer. Vi ser pa sgerer, hvor knuderne som sdvanlig har en ngle og en vrdi. Vi besemmer os for, a vrdien i en knude skal vre summen af alle nglerne i knudens underr (husk, a de inkluderer knuden selv). Nedenfor ses e eksempel. Nglerne sar vers og vrdifele neders. Vi anager, a ingen ngler oprder o gange. 7 40 AA 8 16 17 AA 0 5 9 0 14 9 AA 6 6 En knude har alsa re feler: key, val, lef og righ il henholdsvis ngle, vrdi, vensre barn og hjre barn. esuden kan man anage, a variablen roo refererer il res rod. Sprgsmal a: Beskriv dealjere (gerne i Pyhon eller Modula-), hvordan man for en give ngle k kan beregne summen af alle ngler srre end eller lig med k. Kompleksieen skal vre begrnse af en konsan gange res hjde. NB! k behver ikke ndes i re. Sprgsmal b: Forklar, hvordan man give o ngler k 1 < k kan beregne summen alle ngler i re, der ligger mellem k 1 og k (begge ngler inklusive). Kompleksieen skal vre begrnse af en konsan gange res hjde. Vink: anvend algorimen fra sprgsmal a. 4
Flgende ransformaion pa e sger kendes fra Kingson side 11. s y s y \ \\ x s x A B C =) A y s 0 y B x s 0 x,,,, l l ll C s 0 Sprgsmal c: Forklar, hvordan vrdifelerne kan bringes i orden i konsan id, hvis ovensaende ransformaion foreages e sed i re. Man kan anage, a X, Y og Z er variabler, der refererer il knuderne med nglerne henholdsvis x, y og efer ransformaionen. Vi er nu ineressere i en operaion average, som give o ngler k 1 < k nder gennemsnie af nglevrdier i re, der ligger mellem k 1 og k (begge ngler inklusive). I eksemple frs i opgaven med k 1 = 4 og k = 8 fas e gennemsni pa 6, da nglerne 5, 4 6, 7 og 8 ligger mellem 4 og 8. Sprgsmal d: Beskriv en srukur, der kan underse operaionerne inser og delee, som de kendes fra Kingson side 10{104, sam operaionen average, alle i id O(log n) amorisere, hvor n er analle af elemener i srukuren pa e give idspunk. Forklar, hvordan srukuren vedligeholdes under operaionerne. 5