TENTAMEN HF1002, 6H3120, 6H3117 Diskret Matematik Skrivtid 13:15-18:15 Onsdagen 12 mars 2014 Tentamen består av 6 sidor Hjälpmedel Den kurslitteratur som använts under kursen, samt egna anteckningar, programlistningar och böcker. Mathematica, C och Java Dock inga egna USB-minnen eller CD-skivor. Tentamen består av 13 uppgifter. I katalogen W:\PROV\DM finns Kursbunten (pdf), Lathund i Mathematica (pdf) samt någon/några filer du kan komma att behöva för att lösa någon/några av uppgifterna. För varje uppgift med korrekt svar får du 1 poäng. 5 poäng av maximalt13 räcker säkert till godkänt. Resultatet 4 poäng berättigar till komplettering. Förutom svaret, ett eller flera tal, ska du för att få poäng på uppgiften redogöra för tankegången, med egna ord eller med några rader kod i Mathematica, som inte behöver vara syntaktiskt korrekta. Betygsskala A B C D E Fx 13-11 10 9 8-7 6-5 4 Håkan Strömberg 1 KTH STH
Uppgift 1 Två studenter, som inte går på KTH, har fått i uppdrag att ge en resumé av boken Diskret Matematik För Alla. Studenterna är osäkra på vad ordet resumé betyder och kan inte komma överens om hur uppgiften ska utföras. Den ene föreslår att man ska bestämma summan av samtliga siffror som ingår i sidnumren. Den andre tycker att det räcker med att beräkna totala antalet siffror i sidnumren. Eftersom de inte kan enas slår de ihop de två summor som de fått. Resultatet blir 10044. Hur många sidor innehåller boken? Lösning: Boken innehåller 684 sidor. För positiva heltal x låt S(x) vara summan av siffersummorna och T(x) totala antalet siffror hos talen 1,2,...,x. Vi finner till exempel att S(9) = 45, S(19) = 45+55 = 110, S(29) = 45+55+65 = 165, fram till S(99) = 45 + 55 +... + 135 = 900. Vidare är S(199) = 900 + 1000 = 1900, S(299) = 900+1000+1100 = 3000, också vidare. Antalet siffror bland de 99 första heltalen är 9 1 + 90 2 = 189. Om x är ett tresiffrigt tal är T(x) = 3(x 99)+189 = 3x 108. Vi söker det heltal k för vilket S(k) + T(k) = 10044. Efter något prövande finner vi att k är ett tresiffrigt tal och att 600 < k < 700. Låt x vara ett tresiffrigt tal som börjar på 6 och slutar på 9 (siffrorna 0 9 förekommer då i samma antal bland entalssiffrorna), det vill säga som kan skrivas 600+10a+9. Vi har och med summan S(x) = S(599) + summa siffersummor hos talen 600,601,...,x = (900+...+1400) +6(609+10a 599)+(45+55+...+(45+10a)) = 6900+60+60a+45(a+1)+10(1+2+...+a) = 7005+105a+5a(a+1) T(x) = 3(609+10a) 108 = 1719+30a S(x)+T(x) = 8724+140a+5a 2. Om detta sätts = 10044 får vi en andragradsekvation med den positiva lösningen a 7.45, vilket betyder att 779 < x < 789. För a = 7 har vi S(679) + T(679) = 9948. Vi prövar oss fram och finner att S(684) +T(684) = 10044, det vill säga boken måste innehålla 684 sidor. (För övrigt kan vi konstatera att a = 7.45 ger x = 600+10 7.45+9 = 683.5, det vill säga bra nära 684) Vi får svaret betydligt enklare med hjälp av Mathematica f := Block[{s = 0, tot = 0}, While[tot < 10044, s++; m = IntegerDigits[s]; tot = tot + Total[m] + Length[m]; ]; s ] f Håkan Strömberg 2 KTH STH
Uppgift 2 Arukone eller NumberLink heter det logiska pusslet i figuren. Pusslet dök upp första gången 1897 och har på senare år aktualiserats i Japan. Spelaren ska para samman alla matchande tal på brädet med en oavbruten linje. En linje får inte skära en annan och ej dras genom en numrerad ruta. Linjen ska starta och sluta i de två talen som ska förbindas. Dessutom ska alla brädets rutor innehålla en del av en linje (eller ett tal) när pusslet är löst. Till höger i figuren visas lösningen till en enkel Arukone Lösning: Håkan Strömberg 3 KTH STH
Uppgift 3 På rävfarmen Foxy Garden är de 250 rävarna antingen blå eller gula. Somliga djur har svans, andra är utan. Man vet att 40% av alla blå rävar är honor 30% av alla svanslösa rävar är blå 25% av alla honor saknar svans 20% av rävarna utgörs av gula, svanslösa hannar 40% av rävarna är blå en tredjedel av alla blå hannar är svanslösa en tredjedel av alla svanslösa honor är blå Hur många gula hannar har svans? Lösning: I figuren är frekvenserna för de möjliga kombinationerna betecknade med bokstäverna a,b...h. Till exempel är antalet blå hannar b+e medan antalet svanslösa honor är d +g. Från villkoren i uppgiften kan vi ställa upp följande 8 ekvationer e1 = (a + b + d + e)*40/100 == a + d; e2 = (d + e + f + g)*30/100 == d + e; e3 = (a + d + g + h)*25/100 == d + g; e4 = (a + b + c + d + e + f + g + h)*20/100 == f; e5 = (a + b + c + d + e + f + g + h)*40/100 == a + b + d + e; e6 = (b + e)/3 == e; e7 = (d + g)/3 == d; e8 = a + b + c + d + e + f + g + h == 250; Solve[{e1, e2, e3, e4, e5, e6, e7, e8}] Med lösningen a = 30, b = 40, c = 20, d = 10, e = 20, f = 50, g = 20, h = 60 Svar: Antalet gula hannar med svans c = 20 Håkan Strömberg 4 KTH STH
Uppgift 4 Läraren (det vill säga jag), skrev 10 konsekutiva (på varandra följande) positiva heltal på tavlan. Sedan strök jag ett tal. Summan av de återstående blev då 2002. Vilket tal strök jag? Lösning: Antag att följden av tal startar med x. Vi får då ekvationen x+(x+1)+(x+2)+(x+3)+(x+4)+(x+5)+(x+6)+(x+7)+(x+8)+(x+9) y = 2002 Vi vet dessutom att x > 0 och att x y x+9. Med hjälp av Mathematica kan vi nu skriva: Reduce[{10x+9*10/2-y==2002,x>0,y>=x,y<=x+9},Integers] Som ger den enda lösningen x = 218 och y = 223 Svar: Det strukna talet är 223 Håkan Strömberg 5 KTH STH
Uppgift 5 Bestäm antalet primtal, där talens alla siffror är olika. Till exempel: primtalet 1302647 tillhör denna mängd, dock inte primtalet 1299743, eftersom det innehåller två 9:or. Vi tar fram alla permutationer av de 10 siffrorna. s = Permutations[{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, 10]; n = 0; For[i = 2, i <= Length[s], i++, If[s[[i, 1]]!= 0 && PrimeQ[FromDigits[s[[i]]]], n++; ] ] n Inga tal inleds med siffran 0. Inga tal med 10-olika siffror kan vara primtal eftersom de alla har 9 som delare. Svar: Det finns 283086 primtal där alla siffror är olika Håkan Strömberg 6 KTH STH
Uppgift 6 Figur 1: Vilka av bläckfiskarna talar sanning och vilka ljuger? Bland bläckfiskarna finns det de som har 6,7 respektive 8 armar. De med 7 armar ljuger alltid. De med 6 och 8 armar talar alltid sanning. Fyra bläckfiskar träffas och uttalar sig: Blå: Tillsammans har vi 28 armar Grön: Tillsammans har vi 27 armar Gul: Tillsammans har vi 26 armar Röd: Tillsammans har vi 25 armar Hur många armar har var och en av de fyra bläckfiskarna? Lösning: Antag att det finns x 6-armade, y 7-armade och z 8-armade. Vi kan då ställa upp följande fyra diofantiska ekvationer som vi löser med Mathematica Reduce[{6 x + 7 y + 8 z == 28, x >= 0, y >= 0, z >= 0}, Integers] Reduce[{6 x + 7 y + 8 z == 27, x >= 0, y >= 0, z >= 0}, Integers] Reduce[{6 x + 7 y + 8 z == 26, x >= 0, y >= 0, z >= 0}, Integers] Reduce[{6 x + 7 y + 8 z == 25, x >= 0, y >= 0, z >= 0}, Integers] Ekvationerna har följande lösningar (x = 0,y = 4,z = 0) (x = 1,y = 2,z = 1) (x = 2,y = 0,z = 2) (x = 1,y = 3,z = 0) (x = 2,y = 1,z = 1) (x = 2,y = 2,z = 0) (x = 3,y = 0,z = 1) (x = 3,y = 1,z = 0) Högst en kan tala sanning. Summan x + z 1. Om alla ljuger har de tillsammans 28 ben och då talar Blå sanning, motsägelse. Återstår då endast att Grön talar sanning, har 6 armar och att de andra ljuger alla med 7 armar. Håkan Strömberg 7 KTH STH
Uppgift 7 I en kvadrat med sidan 4 inprickas nio punkter så som figuren visar. Man väljer slumpmässigt två av de nio punkterna och drar en rät linje genom dem. Härigenom delas kvadraten i två delar. Bestäm sannolikheten att delarna är lika stora. Lösning: Om den första punkten man väljer är mittpunkten kommer kvadraten alltid att delas mitt itu. Sannolikheten för detta är 1 9. Om den först valda punkten är en hörnpunkt, det finns 4 stycken och sannolikheten för detta val är 4 9, kommer kvadraten att delas mitt itu om den andra punkten ligger på samma diagonal. Det finns två sådana punkter och sannolikheten för detta val är 2 8. Om den först valda punkten ligger mitt på en sida, det finns 4 stycken och sannolikheten för detta är 4 9, kommer kvadraten att delas mitt itu i 2 fall av 8. Vi kan nu skriva ned uttrycket som ger svaret 1 9 + 4 9 2 8 + 4 9 2 8 = 1 3 Håkan Strömberg 8 KTH STH
Uppgift 8 Dela upp heltalen 1...16 i två lika stora mängder A = {a 1,a 2,...,a 8 } och B = {b 1,b 2,...,b 8 } så att dessa tre villkor gäller Vilka är mängderna? Lösning: 8 i=1 a i = 8 i=1 b i 8 i=1 a2 i = 8 i=1 b2 i 8 i=1 a3 i = 8 i=1 b3 i sums[m_] := Block[{s1, s2, s3}, s1 = Sum[m[[i]], {i, 1, 8}]; s2 = Sum[m[[i]]^2, {i, 1, 8}]; s3 = Sum[m[[i]]^3, {i, 1, 8}]; {s1, s2, s3} ] funk := Block[{s = Subsets[Range[1, 16], {8}], r = {}}, For[i = 1, i <= Length[s], i++, m1 = s[[i]]; m2 = Complement[Range[1, 16], m1]; If[sums[m1] == sums[m2], AppendTo[r, {m1, m2}] ] ]; r ] funk Svar: A = {1,4,6,7,10,11,13,16} och B = {2,3,5,8,9,12,14,15} Håkan Strömberg 9 KTH STH
Uppgift 9 Ett rätblock av trä har delats i 8 mindre rätblock genom tre snitt, parallella med sidorna, som figuren visar. Arean för begränsningsytorna hos de sju synliga blocken finns angivna. Bestäm begränsningsytan hos det åttonde, osynliga, blocket. Lösning: Om vi gör antaganden enligt figuren kan vi ställa upp 7 ekvationer, men det behövs endast 6 e1 = 2 x z + 2 v z + 2 v x == 46; e2 = 2 y z + 2 v y + 2 v z == 58; e3 = 2 u v + 2 u y + 2 v y == 28; e4 = 2 x z + 2 w z + 2 w x == 126; e5 = 2 y z + 2 w y + 2 w z == 148; e6 = 2 u w + 2 u y + 2 w y == 88; Reduce[{e1,e2,e3,e4,e5,e6,x>0,y>0,z>0,u>0,v>0,w>0}, Integers] Som ger lösningen Vi får så den eftersökta arean genom Svar: 22 x = 3, y = 4, z = 5, u = 2, v = 1, w = 6 2xv+2vu+2xu = 1 3 1+2 1 2+2 3 2 = 22 Håkan Strömberg 10 KTH STH
Uppgift 10 Tio personer sitter runt ett bord. De väljer var sitt heltal (möjligtvis negativt). Varje person meddelar sitt heltal till sina två bordsgrannar. Därefter beräknar varje person medelvärdet av de tal som som hen fått från sina bordsgrannar. Detta medelvärde skriver hen så på en lapp som hen lägger framför sig på bordet. På lapparna står talen som figuren visar. Vilket tal valde den person som skrev en sexa på sin lapp? Lösning: Antag att den som skriver 1 på sin lapp har valt a, den som skrivit 2 har valt talet b och så vidare medurs upp till den som skrivit 10 och som valt talet j. Vi kan då ställa upp ekvationssystemet: e1 = (j + b)/2 == 1; e2 = (a + c)/2 == 2; e3 = (b + d)/2 == 3; e4 = (c + e)/2 == 4; e5 = (d + f)/2 == 5; e6 = (e + g)/2 == 6; e7 = (f + h)/2 == 7; e8 = (g + i)/2 == 8; e9 = (h + j)/2 == 9; e10 = (i + a)/2 == 10; Solve[{e1, e2, e3, e4, e5, e6, e7, e8, e9, e10}] Som har lösningen: a = 6, b = 3, c = 2, d = 9, e = 10, f = 1, g = 2, h = 13, i = 14, j = 5, Vi är intresserade av f, hen som skrev en 6:a på lappen. Hen tänkte ursprungligen på talet 1. Håkan Strömberg 11 KTH STH
Uppgift 11 Adam, Bertil och Curt ställde upp i valet av elevkårsordförande där 20 studenter lämnade sina röster. På varje röst rangordnade man de tre kandidaterna som figuren visar. Vid rösträkningen visade det sig att 11 studenter föredrog Adam före Bertil, vilket betyder att 9 röstsedlar hade Bertil före Adam. På samma sätt föredrog 12 studenter Curt före Adam. Då föreslog man att Bertil skulle utgå och att en ny omröstning skulle göras mellan Adam och Curt. Då protesterade Bertil och det visade sig att 14 studenter föredrog Bertil före Curt. Den förvirringen som då uppstod har ännu inte lagt sig. Hur som helst, om man vet att alla möjliga röstsedlar förekom åtminstone en gång, på hur många röstsedlar förekom då Bertil på första plats? Lösning: Röstsedlarna kan ha följande 6 utseenden: x = (A,B,C), y = (A,C,B), z = (B,A,C), u = (B,C,A), v = (C,A,B), w = (C,B,A) Vi får följande ekvationssystem x+y+v = 11 z+u+w = 9 u+v+w = 12 x+y+z = 8 x+u+z = 14 y+v+w = 6 Dessutom vet vi att samtliga obekanta ska anta positiva heltal. Vi löser systemet med hjälp av Mathematica Reduce[{x+y+v==11, z+u+w==9, u+v+w==12, x+y+z==8, x+z+u==14, y+v+w==6, x>0, y>0,z>0,u>0,v>0,w>0}, Integers] och får lösningen Svar: Bertil stod först på 8 röstsedlar x = 6, y = 1, z = 1 u = 7, v = 4, w = 1 Håkan Strömberg 12 KTH STH
Uppgift 12 Adam har 7 par handskar i sju olika nyanser av grått. När han bestämmer att sortera upp dem i par har han lite svårt för att skilja nyanserna åt. Han bestämmer sig därför att det inte gör så mycket om en vänsterhandske inte skiljer sig med mer än ett steg i färgen från högerhandsken. Om han till exempel ska para ihop en högerhandske som har färgen 3, kan han tänka sig att acceptera en vänsterhandske av färgerna 2,3 och 4 (se figuren). Bestäm hur många olika möjligheter han har att para ihop de sju paren. Lösning: Vi tänker oss att alla högerhandskarna ligger i rad från den mörkaste till den ljusaste. Sedan genererar vi alla (7! = 5040) möjligheter att lägga upp de sju vänsterhandskarna. Återstår att kontrollera dessa möjligheter, en i taget. funk2 := Block[{s = Permutations[Range[1, 7]], i, j, m, n, r = {}}, For[i = 1, i <= Length[s], i++, m = s[[i]]; n = 0; For[j = 1, j <= 7, j++, If[Abs[j - m[[j]]] <= 1, n++ ]; ]; If[n == 7, AppendTo[r, m] ]; ]; r ] r = funk2 Length[r] Vi får utskriften 21. En alternativ möjlighet är funktionen f[1] = 1; f[2] = 2; f[n_] := f[n - 1] + f[n - 2] f[7] Svar: 21 möjligheter Håkan Strömberg 13 KTH STH
Uppgift 13 Bonusproblem På filen spel.zip finns spelet FörHemDamen. Ett spel mellan dig och datorn, där du kan avgöra vem som ska vara VIT, göra första draget, genom att klicka på valt alternativ nederst i fönstret. Spelaren som göra andra draget kallar vi för SVART. Vid spelets början befinner sig en vit schackdam högst upp till höger på brädet. VIT utför ett drag. Möjliga drag är markerade med svarta prickar. VIT och SVART turas sedan om att dra. Du utför dina drag med drag and drop. Den som lyckas föra ned damen till den röda rutan, längst ned i vänstra hörnet, har vunnit! I uppgiften ingår tre olika spelplaner. Du väljer en spelplan genom popup-menyn som visar sig genom att klicka på höger musknapp. Därefter väljer du Nytt parti från samma meny. Tänk på att datorn alltid spelar perfekt. Din uppgift är att bestämma vem som vinner vid bästa spel för de tre spelplanerna. Om det är VIT som alltid vinner anger du första draget på formen (x,y), där den röda rutan har koordinaterna (1,1). Om VIT alltid förlorar anger du bara detta, utan att ange något drag. Samtliga problem måste vara korrekt lösta för att ge poäng. Spelplan Vem vinner Drag 10 7 9 12 10 16 Lösning: Man kan genom att starta från målet bestämma vilka rutor man inte får beträda för att vinna. De grå rutorna i figuren är de rutor man vill hamna på för att vinna. Detta innebär att den som börjar för spelplanen 9 12 kommer att vinna genom att dra till (8,5). Håkan Strömberg 14 KTH STH
Spelplan Vem vinner Drag 10 7 VIT (5,8) 9 12 VIT (8,5) 10 16 SVART Håkan Strömberg 15 KTH STH