Opgave 1 è20èè To personer A og B spiller et spil, i hvilket de skiftes til at foretage et tr k Et spil ender altid enten med uafgjort eller med at A eller B vinder Samtlige mulige spil kan beskrives med det s kaldte spilletr, der er en bestemt v rdi af typen Spil: Type Stilling = en stilling i spillet Type Spil = Prodès: Stilling, t: Tr kè Type Tr k = ListèSpilè Et tr indeholder den aktuelle stilling og for samtlige mulige tr k de undertr er, disse f rer til Dette forts tter indtil man n r et blad, hvor spillet altid er slut Fx vil en del af spilletr et for det lidt kedelige spil 2 2 kryds-og-bolle se s ledes ud: g g g g g Vi er givet tre v rdiprocedurer: Proc Aès: Stillingè èboolè Proc Bès: Stillingè èboolè Proc Uès: Stillingè èboolè der afg r om en given stilling er henholdsvis vundet af A, vundet af B eller endt uafgjort Bem rk, at disse tre muligheder er gensidigt udelukkende, og at et blad altid vil opfylde en af dem
Vi er interesserede i at afg re, om A altid kan vinde spillet, hvis han f r lov til at starte Det g lder fx for 2 2 kryds-og-bolle, men ikke for 3 3 kryds-og-bolle, der jo kan ende uafgjort Denne egenskab kan formuleres p f lgende gensidigt rekursive facon: A er sikker vinder, hvis han enten har vundet roden af spilletr et eller kan foretage et tr k, der f rer til et spilletr, hvor B er sikker taber B er sikker taber, hvis han enten har tabt roden af spilletr et, eller kun kan foretage tr k, der f rer til spilletr er, hvor A er sikker vinder Skriv to gensidigt rekursive Trine v rdiprocedurer: Proc Avinderës: Spilë èboolè Proc Btaberës: Spilë èboolè der implementerer denne analyse Der l gges v gt p, at besvarelsen er letl selig, detaljeret og korrekt
Opgave 2 è20èè Heltalskvadratroden af et ikke-negativt heltal n er som bekendt det tal q, for hvilket: q 2 n<(q+1) 2 F lgende algoritme vides at v re korrekt: Algoritme: Heltalskvadratrod Stimulans: n: n 0 Respons: q: q 2 n < (q +1) 2 Metode: q,r:= 0, n do í (n = q 2 + r) (r 0) í r 2*q+1 q, r:= q+1, r-è2*q+1è od aè Angiv algoritmens udf relsestid Betragt f lgende alternative algoritme: Algoritme: Heltalskvadratrod Stimulans: n: n 0 Respons: q: q 2 n < (q +1) 2 Metode: q,r:= 0, n do í I í r 2*q+1 çnd x s (x 1) (2qx + x 2 r) q, r:= q+x, r-è2*q*x+x*xè od bè Find en passende invariant og bevis at algoritmen er korrekt cè Find en konkretisering af çnd x s, s udf relsestiden bliver v sentlig bedre end i sp rgsm l aè Den forbedrede udf relsestid skal angives, men der kr ves ikke noget bevis
Opgave 3 è20èè En datastruktur G skal indeholde punkter i planen, givet ved deres èheltalligeè èx,yè-koordinater I f rste omgang skal datastrukturen underst tte operationerne: InitëGë InsertëGëèx,yè DeleteëGëèx,yè MemberëGëèx,yè aè Angiv en implementation, s alle udf relsestiderne tilh rer O(log n), hvor n er antallet af punkter i strukturen G Et rektangel i planen angives ved to punkter, èpx,pyè og èqx,qyè, der angiver henholdsvis det sydvestlige og nord stlige hj rne: èqx,qyè u u èpx,pyè Vi nsker at tilf je operationen: ContainedëGëèpx,py,qx,qyè som udskriver samtlige de punkter i datastrukturen, der er indeholdt i rektanglet bè Angiv en hensigtsm ssig implementation af den udvidede datastruktur og angiv udf relsestiderne for operationerne
Opgave 4 è20èè I denne opgave indf rer vi en ny operator i Rasmus Syntaksen er: R $ a,b hvor a og b er navne p attributter i relationen R Resultatet er en delrelation af R + a,b,hvis tupler intuitivt er de, hvis a-attribut p çest m der kan forl nges til tupler i R I det f lgende bruger vi denne eksempelrelation: a:int b:int c:int 10 20 1 10 20 2 10 20 3 11 20 4 10 30 4 10 87 1 10 87 2 10 87 3 11 87 4 11 87 5 11 87 6 Formelt bestemmes tuplerne i R $ a,b som f lger Lad α β v re et tupel i R + a,b Vi deçnerer nu Nèα,βè som antallet af forskellige tupler τ i R - a,b s ledes at α β τ er et tupel i R aè Angiv for eksempelrelationen v rdierne af Nè10,20è, Nè11,20è, Nè10,30è, Nè10,87è ognè11,87è
For alle tupler β i R + b indeholder R $ a,b det eller de tupler α β, der maksimerer Nèα,βè bè Angiv resultatet af at beregne R $ a,b p denne relation cè Angiv, hvilke af f lgende regneregler, der er gyldige èunder antagelse af at begge sider er lovlige relationsudtrykè Begrund dine svar 1è R $ a,b = R $ b,a 2è èr + Sè $ a,b = èr $ a,bè + ès $ a,bè 3è èr $ a,bè $ a,b = R $ a,b dè Vis, hvorledes R $ a,b kan udtrykkes ved hj lp af de s dvanlige operatorer i Rasmus
Opgave 5 è20èè Et kvadratisk stykke ternet papir, hvor hvert felt enten er blankt eller indeholder et kryds eller en bolle, kan repr senteres som en v rdi af f lgende type: Type Felt = Sumèkryds, bolle, blank: Unitè Type Papir = ListèListèFeltèè Vi er interesserede i for hvert felt at t lle, hvormange krydser p stribe der maksimalt sk rer gennem feltet èlodret, vandret eller diagonaltè Svaret kan repr senteres som en v rdi af typen: Type Xtabel = ListèListèIntèè Det er bekvemt atnummerere de forskellige retninger som f lger: 4 3 5 2 6 1 0 7 Det f lgende er et eksempel p et stykke papir og det nskede svar: 2 3 0 0 0 2 0 0 2 6 0 0 3 0 0 2 0 0 6 0 0 0 0 3 0 0 0 6 0 0 0 0 7 0 0 0 6 0 5 0 3 3 7 0 0 6 0 5 2 0 0 0 7 0 6 0 5 0 0 2 0 0 7 0 0 5 0 0 0 0 0 3 7 0 5 0 0 0 0 1 0 0 7 0 0 0 2 0 0 0 0 0 7 3 0 2 0 0 1 0 Nedenst ende procedure Udfyld l ser denne opgave for en v rdi af type Papir med dimensioner n n:
Proc T lrët: Papirëèr: Int, i, j: Intè èintè if èi<0è èj<0è èi nè èj nè isètèi, jè, krydsè return 0 ç if r=0 return 1+T lrëtëè0, i+1, jè &r=1 return 1+T lrëtëè1, i+1, j+1è &r=2 return 1+T lrëtëè2, i, j+1è &r=3 return 1+T lrëtëè3, i-1, j+1è &r=4 return 1+T lrëtëè4, i-1, jè &r=5 return 1+T lrëtëè5, i-1, j-1è &r=6 return 1+T lrëtëè6, i, j-1è &r=7 return 1+T lrëtëè7, i+1, j-1è ç end T lr Proc T lxët: Papirëèi, j: Intè èintè if èi<0è èj<0è èi nè èj nè isètèi, jè, krydsè return 0 ç è+ Var x 04,x 15,x 26,x 37 :Int x 04 := T lrëtëè0, i, jè+t lrëtëè4, i, jè-1 x 15 := T lrëtëè1, i, jè+t lrëtëè5, i, jè-1 x 26 := T lrëtëè2, i, jè+t lrëtëè6, i, jè-1 x 37 := T lrëtëè3, i, jè+t lrëtëè7, i, jè-1 return maxèx 04,x 15,x 26,x 37 è +è end T lx Proc UdfyldëT: Papir, X: Xtabelë X:= ListèListè?-Int nè nè è+ Var i, j: Int i:= 0 do i<n j:= 0 do j<n Xèi, jè:= T lxëtëèi, jè j:= j+1 od i:=i+1 od +è end Udfyld
aè Forklar kort, hvorledes dette virker bè Angiv den asymptotiske udf relsestid for proceduren Udfyld cè Skits r, hvordan man kan bruge dynamisk programmering til at g re dette mere eçektivt Angiv den forbedrede udf relsestid Vink: brug en tabel med dimensioner (08) (0n) (0n)