Lösningar: Tentamen i Datavetenskapens grunder för D1, SDU, TDV A Tid och plats: måndagen 2006-11-06 kl 08:00-13:00 i sal L001 Examinator: Lars Karlsson, tel: 30 33 55 Hjälpmedel: penna, suddgummi. Totalt antal poäng: 48 Dataingenjörer: för betyg 3 krävs 24 poäng, för 4 krävs 32 poäng, och för 5 krävs 40 poäng. Övriga: för betyg G krävs 24 poäng, för VG krävs 36 poäng. Tänk på att motivera alla dina svar. 1
Uppgift 1 (6 poäng) Låt M = {g,h} och N = {h,i,j, {g,h}}. Svara Ja eller Nej på följande frågor, och motivera dina svar: a. g M? Svar: Ja, g är ett element i M. b. g N? Svar: Nej, g är inte ett element i N. c. {g,h} M? Svar: Nej, {g,h} är inte ett element i M. d. {g,h} N? Svar: Ja, {g,h} är ett element i N. e. M N? Svar: Nej, t ex har vi g M men inte g N. Alltså ej delmängd. f. N P(M)? Svar: Nej, t ex har vi h N men inte h P(M), eftersom den senare bara innehåller mängder (det är en potensmängd). Uppgift 2 (4 poäng) Visa följande mängdteoretiska likheter för godtyckliga mängder A, B genom att använda räknereglerna (du behöver dock inte namnge varje regel du använder): a. A (B A c ) = A B Svar: A (B A c ) = Distr (A B) (A A c ) = (A B) U = (A B). b. A (B A c ) = Svar: A (B A c ) = A (A c B) = (A A c ) B = B =. c. (A B) B = B Svar: (A B) B = B (B A) = Absorption B. d. (A c B c ) c = (A B) Svar: (A c B c ) c = demorgan (A c ) c (B c ) c = dubbel neg (A B) 2
Uppgift 3 (4 poäng) Primtalsfaktorisera talet 50 på alla sätt det går. Motivera också att du verkligen har fått med alla sätt. Svar: 50 = 2 5 5. Varje tal kan endast primtalsfaktoriseras på ett sätt. Uppgift 4 (4 poäng) Greve von Slumpf hade tre söner: Maximillan, Medimillian och Minimillian. Han hade också fyra slott: Solberg, Måndal, Äppelsjö och Pärontjärn. Greven beslutade att låta sina söner få ut det mesta av deras arv innan han själv avled genom att ge dem varsitt slott; ett slott behöll han själv så länge. Slotten delades ut genom lottdragning. a. På hur många sätt kan slotten fördelas till sönerna och greven? Svar: 4 3 2 1 = 24, eller 4! (permutationer) b. Vad är sannolikheten att greven får bo kvar på sitt favoritslott, Pärontjärn? Svar: 0.25. c. Vad är sannolikheten att Maximillian inte får slottet med de bästa jaktmarkerna, Solberg? Svar: 1-0.25 = 0.75 (komplementhändelsen till att få slottet). d. Greven hade också fyra paradvagnar, som fördelades på samma sätt genom lottning. På hur många sätt kan slott och paradvagnar fördelas (kombinerat)? Svar: 4! 4! = 576 (2 st permutationer samt multiplikationsprincipen). 3
Uppgift 5 (4 poäng) En relation kan i Python representeras som ett mängd av tupler, t ex: rel = set([(1,2),(2,3),(3,3)]). Mängden som relationen gäller över kan helt enkelt representeras som en mängd, t ex: mangd = set([1,2,3,4]). Med det i åtanke, vad testar följande funktion? def test(m, r): for e1 in m: for e2 in m: if (e1,e2) in r and (e2,e1) not in r: return False return True Och vad returneras när man anropar test(mangd,rel), med argumenten som ovan? Svar: Funktionen testar om relationen är symmetrisk. Om den hittar något (e1,e2) men ej (e2,e1) returnerar den False. I annat fall returnerar den True. test(mangd,rel) ger False. Uppgift 6 (4 poäng) Rita en graf med 6 noder som samtidigt är bipartit, har en Hamiltoncykel, och saknar en Eulerkrets. Motivera. Svar: noder: 1, 2, 3, 4, 5, 6, bågar: {{1, 2}, {1, 4}, {1, 6}, {3, 2}, {3, 4}, {5, 4}, {5, 6}}. Bipartit: ena sidan är 1, 3, 5 och andra sidan är 2, 4, 6. Hamiltonscykel: 1-2-3-4- 5-6-1. Eulerkrets: 1 och 4 har ojämn grad, så ingen sådan kan finnas. 4
Uppgift 7 (4 poäng) Ge sanningstabellen för den satslogiska formeln (P (R P)) och avgör om den är satisfierbar, en kontradiktion, och/eller en tautologi. Svar: P R (P (R P)) 0 0 0 0 1 0 1 0 1 1 1 0 Satisfierbar (det finns en 1:a i kolumnen). Uppgift 8 (6 poäng) Översätt följande påståenden till predikatlogisk form. Använd predikaten Filosof(x), Lärjunge(x,y), Klok(x), Lycklig(x). a. Sokrates är en filosof, och Platon är Sokrates lärjunge, och Aristoteles är Platons lärjunge. Svar: Filosof(Sokrates) Lärjunge(Platon, Sokrates) Lärjunge(Aristoteles,Platon). b. Alla filosofer är kloka, men inte alla filosofer är lyckliga. Svar: x(filosof(x) Klok(x)) x(filosof(x) Lycklig(x)). c. Alla som är lärjungar till någon filosof är kloka. Svar: x( y(lärjunge(x, y) Filosof(y)) Klok(x)). 5
Uppgift 9 (6 poäng) En trappstegspyramid består av ett block högst upp, 2 2 block därunder, 3 3 block därunder och så vidare. a. Ge en matematisk rekursiv funktion för att beräkna antalet block i en trappstegspyramid{ av höjden n. 1 om n = 1. Svar: block(n) = n n + block(n 1) om n > 1 b. Ge en summaberäkning för samma sak. Svar: block(n) = n i=1 i i. c. Skriv antingen (a) eller (b) som en Python-funktion. Svar (välj en): def block1(n): if n == 1: return 1 else: return n*n+block1(n-1) def block2(n): res = 0 for i in range(1,n+1): # Går från 1 till n res = res + i*i return res 6
Uppgift 10 (6 poäng) En hårtork har tre lägen: AV, LÅG EFFEKT och HÖG EFFEKT. Den har en knapp UPP som för varje tryckning ändrar läget ett steg, från AV till LÅG EFFEKT till HÖG EFFEKT, och den har en knapp NER som går på andra hållet. a. Rita en Mealy-automat som beskriver hårtorken. Som insignalalfabet har du de två knapparna, och som utsignalalfabet har du de tre lägena. Svar: Man behöver tre tillstånd: s 0,s 1 och s 2, samt följande övergångar: Från s 0 till s 0 : en båge med NER. Från s 0 till s 1 : en båge med UPP, LÅG EFFEKT. Från s 1 till s 0 : en båge med NER, AV. Från s 1 till s 2 : en båge med UPP, HÖG EFFEKT. Från s 2 till s 1 : en båge med NER, LÅG EFFEKT. Från s 2 till s 2 : en båge med UPP. b. Skriv en Python-funktion för automaten i (a) som tar ett tillstånd och en insignal som argument och returnerar en utsignal och ett nytt tillstånd. def hartork(tillstand,indata): if tillstand == s0 : if indata == NER : return s0, elif indata == UPP : return s1, LÅG EFFEKT elif tillstand == s1 : if indata == NER : return s0, AV elif indata == UPP : return s2, HÖG EFFEKT if tillstand == s2 : if indata == NER : return s1, LÅG EFFEKT elif indata == UPP : return s2, 7