TENTAMEN HF1002, 6H3120, 6H3117 Diskret Matematik Skrivtid 13:15-18:15 Torsdagen 16 januari 2014 Tentamen består av 5 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 Vilket är det minsta naturliga tal som slutar på 38, är delbart med 38 och har siffersumman 38? Lösning: Talet är 478838 f := Block[{tal = 38, ok = False}, While[Not[ok, If[Total[IntegerDigits[tal == 38 && Mod[tal, 38 == 0, ok = True, tal = tal + 100; ; tal f Håkan Strömberg 2 KTH STH
Uppgift 2 Katrina har ett stort antal tändstickor av vilka hon gör en rektangel uppdelad i delrutor. I figuren visas en sådan tändsticksfigur med två rader och tre kolumner bildad av 17 tändstickor. När Katrina med stor möda har placerat ut sina stickor kommer lillasyster Eva och förstör den vackra figuren. När Katrina ska rekonstruera figuren finner hon att hon har glömt hur många rader och hur många kolumner med smårutor som ingick i figuren. Hon ber nu om hjälp. Hur många rader och kolumner bestod figuren av, om totala antalet tändstickor är 161? Lösning: Figuren visar ett upplägg med m rader och n kolumner. Detta ger direkt den diofantiska ekvationen m(n+1)+n(m+1) = 161 Reduce[{n(m+1)+m(n+1)==161, n>0, m>0}, Integers Med lösningen m = 8 och n = 9, eller tvärt om. Håkan Strömberg 3 KTH STH
Uppgift 3 Noa och hans fru Hanna har tre barn: Sem, Ham och Jafet. Hanna är 3 år yngre än Noa. Första siffran i Noas ålder anger Sems ålder, medan andra siffran anger Hams ålder. Jafet är lika gammal som Sem och Ham tillsammans. Alla förekommande åldrar är olika heltal. Summan av de fem åldrarna är en heltalskvadrat. Hur gamla är de fem familjemedlemmarna? Lösning: Antag att Noa är 10a+b år. Hanna är då 10a+b 3, Sem a, Ham b och Jafet a+b Reduce[{(10a+b)+(10a+b-3)+a+b+(a+b)==c^2,10a+b<100,a>0,b>0,a!=b,b<10},Integers Med lösningen a = 4,b = 9 och c = ±11, som ger åldrarna Noa= 49, Hanna= 46, Sem= 4, Ham= 9 och Jafet= 15. Summan av deras åldrar är 49+41+4+9+15 = 125 = 15 2 Håkan Strömberg 4 KTH STH
Uppgift 4 Lös vidstående korstal (som korsord, men med siffror i stället för bokstäver) Vågrätt Lodrätt 1. Primtalskub l. Primtalskvadrat 4. Kvadrat 2. Tre gånger kubikroten ur vågrätt 1 5. Kvadrat 3. Primtalskvadrat 7. Kub 6. Dubbla kubikroten ur vågrätt 7 Lösning: Med hjälp av Mathematica kan vi plocka fram kandidaterna till de olika talen. Vågrätt 1 1331, 2197, 4913, 6859 Lodrätt 1 och Lodrätt 3 1369, 1681, 1849, 2209, 2809, 3481, 3721, 4489, 5041, 5329, 6241, 6889, 7921, 9409 Lodrätt 2 Vågrätt 4 och Vågrätt 5 Vågrätt 7 33,39,51,57 16,25,36,49,64,81 Lodrätt 6 (1000),1331,(1728),(2197),(2744),(3375),(4096),(4913),(5832),(6859),(8000),9261 20,22,24,26,28,30,32,34,36,38,40,42 Eftersom varken Lodrätt 1 eller Lodrätt 3 kan sluta med en jämn siffra faller alla utom tre tal bort i Lodrätt 6. Även talet 3375 kan strykas. Återstår då bara 1331 och 9261. Att fortsätta härifrån blir enkelt och vi får lösningen 1 3 3 1 3 3 6 6 4 8 9 2 6 1 Håkan Strömberg 5 KTH STH
Uppgift 5 I en skola i ett främmande land hade man samtidigt prov på A-, B- och C-kurserna i matematik. Det visade sig att 40% av alla eleverna klarade A-kursen och en fjärdedel av dessa klarade också B-kursen; 30% av alla klarade minst två av proven och 80% minst ett av proven; en tredjedel av dem som klarade såväl B- som C-provet klarade också A-provet; andelen som klarade enbart A-provet var lika med andelen som enbart klarade B-provet; två tredjedelar av dem som varken klarade A- eller B-provet klarade inte heller C-provet. Hur stor andel av eleverna klarade B-provet? C-provet? Hur stor andel klarade alla tre proven? Lösning: Med beteckningar enligt figuren kan vi ställa upp följande samband (med andelar uttryckta i %): a+b+c+d+e+f+g+h = 100 a+b+d+e = 40 b+e = 10 b+d+e+f = 30 a+b+c+d+e+f+g = 80 3e = e+f a = c 3h = 2(g+h) Solve[{a + b + c + d + e + f + g + h == 100, a + b + d + e == 40, b + e == 10, b + d + e + f == 30, a + b + c + d + e + f + g == 80, 3 e == e + f, a == c, 3 h == 2 (g + h)} Ger lösningen a = 20%,c = 20%,b = 5%,e = 5%,d = 10%,f = 10%,g = 10%,h = 20% Vi finner att b+c+e+f = 40% av eleverna klarade B-provet, d+e+f+g = 35% klarade C-provet, medan e = 5% av eleverna klarade alla tre proven. Håkan Strömberg 6 KTH STH
Uppgift 6 Betrakta talföljden Vilket tal uppträder som nr 100000? Lösning: Det sökta talet är 317 1,2,2,2,3,3,3,3,3,4,4,4,4,4,4,4,... Tal 1 2 3 4 5 6 7 Antal av tal 1 3 5 7 9 11 13 Totalt antal 1 4 9 16 25 36 49 Vi ser att det totala antalet tal i följden inklusive talet n är n 2. Vi har att lösa olikheten n 2 < 100000 som har lösningen n < 316. Eftersom 316 2 = 99856 och 317 2 = 100489 så förstår vi att det sökta talet är 317. Ett omständligare sätt: f[s_ := Block[{m = {}, i = 1, j, n = 1, t = 0}, While[t <= s, For[j = 1, j <= n, j++, AppendTo[m, i ; t = t + n; i++; n = n + 2; ; m[[s f[100000 Håkan Strömberg 7 KTH STH
Uppgift 7 Figuren visar en karta över den by där Adam, Bertil och Curt bor. Adam bor vid nod 2, Bertil vid nod 5 och Curt vid nod 8. De har bestämt att träffas och mötas i den nod, som innebär att de tillsammans behöver gå en så kort sträcka som möjligt. Avstånden är givna i meter. För att klara problemet kan man under biblioteket Combinatorica använda funktionen Dijkstra. Grafen finns definierad i filen karta1.txt. Ett alternativ är att använda GraphDistance i Mathematica. För detta alternativ finns grafen definierad i filen karta2.txt. Svara med numret på den nod där de ska träffas, samt hur långt de tillsammans måste gå. Lösning: Om de tre herrarna möts i 22 behöver de endast, tillsammans, gå 3080 meter. Efter att ha gjort cut and paste på grafen i karta2.txt får vi det rätta svaret med hjälp av denna funktion f := Block[{a, i, min = 10000, nodmin}, For[i = 1, i <= 35, i++, a = GraphDistance[g, i, 2 + GraphDistance[g, i, 5 + GraphDistance[g, i, 8; If[a < min, min = a; nodmin = i; ; {min, nodmin} f Efter att ha gjort cut and paste på grafen i karta1.txt och öppnat Combinatorica, får vi det rätta svaret med hjälp av dessa rader. a=dijkstra[g, 2[[2+Dijkstra[g, 5[[2+Dijkstra[g, 8[[2; b=table[{i, a[[i}, {i, 1, 35}; Sort[b, #1[[2 < #2[[2 &[[1 Håkan Strömberg 8 KTH STH
Uppgift 8 I en ask finns det tre fack med ett mynt i varje. Man väljer först ett fack slumpmässigt, tar myntet ur detta och lägger det slumpmässigt i ett av de tre facken. Eventuellt lägger man alltså tillbaka det. Man upprepar denna procedur i ännu ett steg. (Om man då råkar på ett tomt fack gör man ingenting; om det finns flera mynt väljer man ett slumpmässigt.) Bestäm sannolikheten att det efter dessa två steg ligger ett mynt i varje fack. Problemet kan lösas antingen teoretiskt eller med hjälp av simulering. Lösning: Låt A 111 vara händelsen att fördelningen av mynten är 1,1,1, medan A 012 anger att den är 0,1,2 och A 003 händelsen att den är 0,0,3. Någon mer fördelning finns inte. Man får följande övergångssannolikheter: A 111 A 012 A 003 A 111 1 3 A 012 1 9 2 3 0 7 9 1 9 Låt oss se på första raden i tabellen. Om fördelningen är 1,1,1 blir den på nytt 1,1,1 om man väljer ett fack vilket som helst, drar ett mynt och lägger det tillbaka igen, vilket sker med sannolikheten 1 3. Om man lägger myntet i ett annat fack blir fördelningen 0, 1, 2, vilket alltså sker med sannolikheten 2 3. Andra raden blir en aning besvärligare att reda ut. (Det finns givetvis en tredje rad också, men den behöver vi inte.) Den sökta händelsen inträffar om man successivt får fördelningarna 1,1,1 1,1,1 1,1,1 eller 1,1,1 0,1,2 1,1,1 Enligt tabellen inträffar denna händelse med sannolikheten 1 3 1 3 + 2 3 1 9 = 5 27 0.185 f[n_ := Block[{forsok, a, s, i = 0}, For[forsok = 1, forsok <= n, forsok++, a = {1, 1, 1}; s = Table[Random[Integer, {1, 3}, {4}; a[[s[[1--; a[[s[[2++; If[a[[s[[3 > 0, a[[s[[3--; a[[s[[4++; If[a == {1, 1, 1}, i++; ; i/n // N f[10000 Håkan Strömberg 9 KTH STH
Uppgift 9 I den binära 10-siffriga följden 0101110001 förekommer alla de åtta möjliga tripplarna som delföljder. 000,001,010,011,100,101,110,111 Hur många binära 10-siffriga följder finns det med denna egenskap? Lösning: Det finns 16 strängar, där de 8 mindre strängarna ingår som delsträngar 0001011100 0001110100 0010111000 0011101000 0100011101 0101110001 0111000101 0111010001 1000101110 1000111010 1010001110 1011100010 1100010111 1101000111 1110001011 1110100011 Vi ser att alla strängar slutar med samma två tecken som återfinns i strängens början och så måste det vara. För om strängen startar med 11 och slutar med någon av de andra tre, 10,01 eller 00. f[n_:= Block[{m={},i,j,k,t}, t=table[integerstring[i,2,3,{i,0,7}; For[i=0,i<=2^n-1,i++, s=integerstring[i,2,n; k=0; For[j=1,j<=8,j++, If[StringCount[s,t[[j>0, k++; ; If[k==8, AppendTo[m,s ; m f[10 Håkan Strömberg 10 KTH STH
Uppgift 10 En shejk vill pröva om hans son besitter tillräcklig vishet för att rätt förvalta hans stora förmögenhet. Han visar upp tre påsar som var och en innehåller 3 mynt. Mynten är av tre slag: guld, silver och koppar. Varje mynt har en vikt som är ett helt antal gram. Sonen får veta följande: I den första påsen ligger 2 guldmynt och 1 silvermynt med sammanlagda vikten 41 g. I den andra påsen ligger 2 silvermynt och 1 kopparmynt med sammanlagda vikten 39 g. I den tredje påsen är de tre myntens sammanlagda vikt 36 g. Här vet man emellertid inte vilka mynt som ingår. Hur mycket väger vart och ett av de tre typerna av mynt? Lösning: Om G,S,K betecknar respektive vikter av enskilda guld-, silver och kopparmynt gäller sambanden (1) 2G+S = 41 (2) 2S+K = 39 Vi ser att såväl S som K är udda. Det betyder att vi måste ha ett jämnt antal av S och K totalt i den tredje påsen: Fall 1 S+K+G = 36 Fall 2 2S+G = 36 Fall 3 2K+G = 36 Fall 4 3G = 36 Låt oss i varje aktuellt fall beteckna ekvationen gällande den tredje påsen med (3). Fall 1. Bilda (1) +(3) (2) som ger 3G = 38: saknar heltalslösning Fall 2. Bilda (1) +(3) som ger 3(G + S) = 77: saknar heltalslösning Fall 3. Bilda (1) +(2) +(3) som ger 3(G + S + K) = 116: saknar heltalslösning Fall 4. Vi får G = 12 som insatt i (1) ger S = 17 som i sin tur insatt i (2) ger K = 5. Detta är den enda möjliga lösningen. Varje guldmynt väger alltså 12g, varje silvermynt 17g och varje kopparmynt 5g. f := Block[{g, s, k, m = {}}, For[g = 1, g <= 20, g++, For[s = 1, s <= 20, s++, If[2 g + s == 41, k = 39-2 s; If[k > 0, AppendTo[m, {g, s, k} ; m m = f Vi får 10 kandidater För dessa löser vi en diofantisk ekvation (11,19,1) (12,17,5) (13,15,9) (14,13,13) (15,11,17) (16,9,21) (17,7,25) (18,5,29) (19,3,33) (20,1,37) g[s_:=reduce[{x s[[1+y s[[2+z s[[3==36, s[[1>0,s[[1<= 20, s[[2>0, s[[2<20, s[[3>0, x+y+z==3, x>=0,y>=0,z>=0}, Integers Table[g[m[[i, {i, 1, 10} och får den enda lösningen från (12,17,5) som alltså säger att Guldmyntet väger 12g, silvermyntet 17g och kopparmyntet 5g. I den sista påsen finns alltså 3 guldmynt Håkan Strömberg 11 KTH STH
Uppgift 11 Vi har tre kranar som var och en för sig kan fylla en tank på mellan 500 och 560 minuter. Hur lång tid behövs för att fylla tanken om alla tre kranarna är öppna samtidigt? Alla i problemet ingående tal är olika heltal. Lösning: Antag att tiden som krävs för att fylla tanken med de olika kranarna är x,y och z minuter. Det betyder att hastigheten för att fylla en tank för kranarna är 1 x, 1 y respektive 1 y. När alla tre kranarna är öppna är tiden att fylla tanken, enligt t = s v 1 t = 1 x + 1 y + 1 z Eftersom t ska vara ett heltal har vi att testa med x,y och z som alla finns i intervallet 500...560. Med Mathematica får vi f[s_, n_ := Block[{x, y, z, t, m = {}}, For[x = s, x <= n, x++, For[y = x + 1, y <= n, y++, For[z = y + 1, z <= n, z++, t = 1/(1/x + 1/y + 1/z); If[IntegerQ[t, AppendTo[m, {x, y, z, t} ; m f[500,560 Vi får svaret 176 minuter som erhålles då x = 506, y = 528, z = 552 Håkan Strömberg 12 KTH STH
Uppgift 12 Ett antal föremål har heltalsvikter som alla är olika. Den genomsnittliga vikten är 10 g. Plockar man bort de båda lättaste föremålen blir vikten av de övriga 79 g. Om man i stället plockar bort de båda tyngsta blir vikten av de resterande 59 g. Hur många föremål rör det sig om? Lösning: Det finns 9 föremål. Låt x vara sammanlagda vikten av de båda minsta föremålen och y vikten av de båda största. Beteckna antalet föremål med n. Eftersom genomsnittsvikten är 10 för samtliga föremål måste den vara mindre än 10 för de båda minsta och större än 10 för de båda största: x < 20 och y > 20 (strikta olikheter, ty alla vikter är olika). Villkoren ger nu det vill säga x+79 = 10n och y+59 = 10n 10n < 20+79 resp 10n > 20+59 7.9 < n < 9.9 Således är n = 8 eller n = 9. Men n = 8 ger x = 1 vilket inte är möjligt om båda vikterna ska vara > 0. Däremot fungerar n = 9. Vi får x = 11 och y = 31 medan summan av mittenvikterna blir 48. Håkan Strömberg 13 KTH STH
Uppgift 13 Bonusproblem På filen spel.zip finns spelet SilverDollar. Ett spel mellan VIT och SVART, där VIT alltid gör första draget. Spelplanen består av 15 rutor. I fyra eller fem av dessa har ett mynt placerats, som överst i figuren. Ett drag innebär att man flyttar ett mynt åt vänster. Myntet får dock inte passera ett framförvarande mynt. Inte heller landa uppå ett annat. Tre av de 11 möjliga dragen är inritade i figuren. Den av spelarna som fullföljer ställningen nederst i figuren har vunnit. Du kan utmana programmet, som spelar perfekt, i detta spel. Under MENY kan du välja om datorn ska vara VIT (dra först) och om du vill spela med fyra eller fem mynt. När du väljer NYTT slumpar datorn ut det antal mynt du bestämt och spelet kan börja. Din uppgift är att bestämma vem som vinner i de tre problem som är definierade under PROBLEM. Om du har kommit fram till att VIT alltid kan vinna vid perfekt motstånd, anger du det inledande draget genom att ange numret på från- och till-ruta. De markerade dragen i figuren är med denna notation 3 1, 10 7 respektive 15 12. Om SVART vinner anger du bara detta, då utan att ange något drag. Samtliga problem måste vara korrekt lösta för att ge poäng. Lösning: Man betraktar vart annat avstånd mellan mynten och räknar tomma rutor (de grå rutorna i figuren). Dessa tal motsvarar så antalet stickor i NIM-högar. Vi får enligt figuren (2,4), (3,3) och (1,4,2). I problem 1 minskar man avståndet så att man får (2,2) och säkerställer därmed vinsten för VIT. I problem 2 står vi inför en förlustställning och SVART kommer att vinna vid perfekt spel. I problem tre minskar man avståndet så att man får (1,3,2), som leder till vinst för VIT. Problem Vinnare Inledningsdrag 1 VIT 15-12 2 SVART 3 VIT 9-8 Håkan Strömberg 14 KTH STH