TENTAMEN HF1002, 6H3120, 6H3117 Diskret Matematik Skrivtid 13:15-18:15 Onsdagen 21 maj 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 12 uppgifter. I katalogen W:\PROV\DM finns Kursbunten (pdf), Lathund i Mathematica (pdf) För varje uppgift med korrekt svar får du 1 poäng. 5 poäng av maximalt12 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 12-11 10 9 8-7 6-5 4 Håkan Strömberg 1 KTH STH
Uppgift 1 Gatans nummer börjar på 1. Summan av numren som är lägre än numret på porten där jag bor, är den samma, som summan av numren som är högre än mitt husnummer. Bestäm antalet hus på gatan då man vet att det ligger mellan 100 och 500. Lösning: Reduce[{Sum[x,{x,1,n-1}==Sum[x,{x,n+1,g},g>=100,g<=500}, Integers Jag bor på n = 204. Antalet hus på gatan är 288. Håkan Strömberg 2 KTH STH
Uppgift 2 I figuren ser du exempel på den japanska tankeleken Futoshiki. Till vänster det problem du ska lösa och till höger ett annat som redan är löst. Följande regler gäller. I varje rad ska talen 1 till 6 finnas med exakt en gång. I varje kolumn ska talen 1 till 6 finnas med exakt en gång. Hänsyn ska tas till < och > Lösning: 6 5 4 1 3 2 4 6 5 2 1 3 2 3 1 5 6 4 3 1 2 6 4 5 5 4 6 3 2 1 1 2 3 4 5 6 Håkan Strömberg 3 KTH STH
Uppgift 3 Tjejmeniens parlament består av två kamrar, en kvinnlig och en manlig, med egna sessionssalar. I vardera salen är sittplatserna ordnade i kvadratisk formation med lika många rader som kolumner. Det är 644 fler kvinnor än män. I den nya parlaments byggnaden som är under uppförande kommer samtliga ledamöter, kvinnor och män blandade, att rymmas i en och samma sal. Intressant nog kan stolarna fortfarande placeras i kvadratisk formation. Hur många kvinnor och män sitter i landets parlament? Lösning: Antag att sidorna i de två kamrarna består av ks rader i den kvinnliga kammaren och ms rader rader i den manliga kammaren. Genom denna diofantiska ekvation Reduce[{ks^2 - ms^2 == 644, ks > 0, ms > 0}, Integers får vi reda på att det finns två lösninger ks = 30 och ms = 16 respektive ks = 162 och ms = 160. När vi testar om ks 2 +ms 2 är en heltalskvadrat för dessa lösningar finner vi att detta gäller endast för 30 2 +16 2 = 34, ty 162 2 +160 2 227.7. Alltså sitter 30 2 = 900 kvinnor och 16 2 = 256 män i Tjejmeniens parlament. Håkan Strömberg 4 KTH STH
Uppgift 4 Lös ekvationssystemet ( ) n = 1 ( ) n = 1 ( ) n k 1 2 k 3 k+1 Lösning: Vi antar att det bara finns en lösning och begränsar oss till n < 100 m = {}; For[n = 1, n < 100, n++, For[k = 2, k <= n, k++, If[Binomial[n, k - 1 == 1/2 Binomial[n, k && 1/2 Binomial[n, k == 1/3 Binomial[n, k + 1, AppendTo[m, {n, k} m Svar: n = 14 och k = 5 Håkan Strömberg 5 KTH STH
Uppgift 5 Pelle och Måns startar samtidigt i var sin ände A respektive B av en simbassäng. När Pelle har simmat 30 m möts de för första gången och när Måns har simmat 120 m möts de för andra gången. Båda simmar med konstant hastighet. Var befinner sig Pelle när Måns har simmat 6 bassänglängder? Lösning: Låt s vara bassänglängden. När Pelle och Måns möts har de tillsammans simmat sträckan s. När de möts för andra gången har de tillsammans simmat sträckan 3s. Måns måste därför ha simmat 120 3 = 40 m när de båda möts för första gången. Följaktligen är s = 30 + 40 = 70 m. Per tidsenhet räknat simmar alltså Pelle 3 4 av Måns sträcka. När Måns har simmat sträckan 6s = 420 m har Pelle simmat 315 = 4 70+35 m och han befinner sig således mitt i bassängen. Håkan Strömberg 6 KTH STH
Uppgift 6 Hur många primtal kan erhållas som summan av elementen ur delmängder till mängden M = {2, 5, 9, 12, 17, 21, 34} Ange dessutom det största och det minsta av dessa. Lösning: m = {2,5,9,12,17,21,34}; m2 = Subsets[m; m3 = Select[m2, PrimeQ[Apply[Plus, # &; m4 = Union[Map[Apply[Plus, # &, m3 Ger primtalen 2, 5, 7, 11, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 79, 83, 89 Håkan Strömberg 7 KTH STH
Figur 1: Till vänster: Pyramiden sedd uppifrån. Till höger: Pyramiden sedd från sidan. Uppgift 7 Figur 1 visar en så kallad triangulär pyramid uppbyggd av kulor. Bestäm det minsta antal kulor man behöver för att först kunna bygga två olika stora pyramider och sedan slå samman kulorna från dessa, så att de exakt räcker till en ny triangulär pyramid. Lösning: Pyramiderna kan innehålla kulor. 1,4,10,20,35,56,84,120,165,220,286,364,455,560,680,... m := Table[Sum[x*(x + 1)/2, {x, 1, n}, {n, 1, 20} lista = {}; For[t1 = 1, t1 < Length[m, t1++, For[t2 = t1 + 1, t2 <= Length[m, t2++, If[MemberQ[m, m[[t1 + m[[t2, AppendTo[lista, {m[[t1, m[[t2, m[[t1 + m[[t2} lista Rutinen ovan ger utskriften 120, 560, 680 Håkan Strömberg 8 KTH STH
Uppgift 8 Vi definierar universum som och tre mängder U = {1,2,3,...,2000} A = {x U x är ett primtal} B = {x U x kan skrivas på formen n 2 n för något n N} C = {x U 7 är en delare till x} (kommentar till B: Talen 42 = 7 2 7 och 90 = 10 2 10 tillhör B men inte 13 därför att det inte finns något tal n så att n 2 n = 13) Hur många element har följande mängder: a) A B b) (A B C) Lösning: Genom en del tester finner man gränserna i de olika mängderna u = Table[i,{i,1,200}; a = Table[Prime[i,{i,1,303}; b = Table[i^2-i,{i,2,45}; c = Table[7*i,{i,1,285}; Length[Intersection[a,b Length[Complement[u,Union[a,b,c Svar: 1 respektive 118 Håkan Strömberg 9 KTH STH
Uppgift 9 Ruskaby skolbibliotek renoverades 1991, vilket medförde att anslagen till bokinköp kraftigt minskade under åren som följde. För 1991 var anslaget 10000 kr men minskade med a procent till 1992. Från 1992 till 1993 minskade beloppet med b procent och från 1993 till 1994 med c procent. Talen a, b, c är alla heltal och bildar en aritmetisk följd, a b = b c. Senare visade det sig att anslagen skulle ha reducerats i ordningen c, b, a. Tack vare detta misstag av en handläggare på kommundelsförvaltningen tjänade skolan 3000 kr. Bestäm procentsatserna a, b, c. Lösning: Sätt A = 1 a 100, B = 1 b c 100 och C = 1 100. Skolan fick 10(A+AB+ABC) kkr i stället för avsedda 10(C+BC+ABC) och tjänade 3 kkr. Alltså är (A+AB) (C+BC) = (A C)(B+l) = 0.3, vilket kan skrivas (c a)(200 b) = 3000; båda faktorerna är heltal med 0 < c a < 100 och 100 < 200 b < 200. Enda möjligheter är c a 200 b b 1) 20 150 50 2) 24 125 75 3) 25 120 80 Kravet att a, b, c ska bilda en aritmetisk följd ger i de tre fallen 1) c = 60 b = 50 a = 40 2) c = 87 b = 75 a = 63 3) c = 92.5 b = 80 a = 67.5 Vi finner att endast i det första fallet är villkoren uppfyllda (tjugofemöringar förekommer ju inte). Procentsatserna är alltså resp 60, 50 och 40. Håkan Strömberg 10 KTH STH
Uppgift 10 Talet 357129648 har följande egenskap: 8 357129648, 4 35712964, 6 3571296, 9 357129, 2 35712, 1 3571, 7 357, 5 35, 3 3 Hur många 9-siffriga heltal där siffrorna 1...9 förekommer precis en gång finns det med samma egenskap som talet 357129648? Lösning: a = Permutations[{1, 2, 3, 4, 5, 6, 7, 8, 9}; funk[a_ := Block[{b, ok, i, r}, b = FromDigits[a; ok := True; For[i = 1, i <= 9, i++, r = Mod[b, 10; If[Mod[b, r!= 0, ok := False; ; b = IntegerPart[b/10; ; ok n = 0; For[i = 1, i <= Length[a, i++, If[funk[a[[i, n++ ; n Det finns 758 sådana tal. Håkan Strömberg 11 KTH STH
Uppgift 11 Uppgift 8 Adam, Bertil, Curt och David fick se fotografier på 5 äldre bilar och fick i uppgift att para ihop dem med följande märken: ALFA ROMEO, BUICK, CADILLAC, DAIMLER, EDSEL. Ingen lyckades pricka in alla rätt, ganska långt därifrån. Här är resultatet från deras gissningar Namn Foto 1 Foto 2 Foto 3 Foto 4 Foto 5 Antal rätt Adam CADILLAC BUICK DAIMLER EDSEL ALFA ROMEO 1 Bertil ALFA ROMEO CADILLAC DAIMLER BUICK EDSEL 2 Curt BUICK EDSEL ALFA ROMEO CADILLAC DAIMLER 2 David DAIMLER EDSEL CADILLAC BUICK ALFA ROMEO 1 Bestäm, med hjälp av denna information, vilka bilmärken som fanns på vilka foton? Det är förstås inte alls nödvändigt att använda datorn för detta problem, men här har vi gjort det. Svar: Funktionen f3 ger svaret {{a, e, d, c, b}} vilket betyder att fotona från 1 till 5 föreställer ALFA ROMEO, EDSEL, DAIMLER, CADILLAC och BUICK. fcomp[r_, G_ := Block[{r = 0, i}, For[i = 1, i <= 5, i++, If[R[[i == G[[i, r++; ; r f3[ := Block[{Q, L = {}, q}, Q = Permutations[{a, b, c, d, e}; For[i = 1, i <= Length[Q, i++, q = Q[[i; If[fcomp[q, {c, b, d, e, a} == 1 && fcomp[q, {a, c, d, b, e} == 2 && fcomp[q, {b, e, a, c, d} == 2 && fcomp[q, {d, e, c, b, a} == 1, AppendTo[L, q; ; L Håkan Strömberg 12 KTH STH
Uppgift 12 En dödsdömd datastudent får av läraren en sista chans att klara tentan på följande sätt. Han får två lika lådor och 20 kulor, av vilka 10 är svarta och 10 är vita. Studenten skall placera kulorna på något sätt i de båda lådorna. Sedan tar läraren på måfå en kula ur en på måfå vald låda. Om denna kula är svart, blir studenten underkänd, i annat fall blir han godkänd. På vilket sätt bör studenten lämpligen fördela kulorna i de båda lådorna för att maximera sin chans till godkänt? (Om läraren träffar på en tom låda drar han en kula från den andra lådan. Både analytiska och simulerade lösningar godtas). Lösning: Antag först att ingen av lådorna är tom. Låt då den låda, som innehåller det mindre antalet kulor, innehålla totalt a kulor (0 < a 10), varav s stycken svarta. Sannolikheten att en svart kula dras blir då 1 2 s a + 1 2 10 s 20 a = s(10 a)+5a a(20 a) 5a a(20 a) = 5 20 a 5 19 Likhet inträffar då och endast då s = 0 och a = 1. Sannolikheten att studenten underkänns, blir då 5 alltså så liten som möjligt 19, när en vit kula placeras i den ena lådan och resterande kulor i den andra. Antag nu att en av lådorna är tom och att läraren fortsätter dragningen, tills han träffar på den låda som innehåller alla kulorna. Sannolikheten att studenten underkänns blir då 1 2. Sannolikheten för underkännande är alltså minst när en vit kula placeras i den ena lådan och resterande kulor i den andra. 1 #include <stdio.h> 2 #include <math.h> 3 float storsta=0.0; 4 int storstav, storstas; 5 void rekord(float res,int vit,int svart){ 6 if (res>storsta){ 7 storsta=res; 8 storstav=vit; 9 storstas=svart; 10 } 11 } 12 int main(void){ 13 int vit,svart,lyckade,forsok,drag; 14 srand(time(0)); 15 for(vit=0;vit<=10;vit++) 16 for(svart=0;svart<=10;svart++){ 17 if(vit+svart==0 vit+svart==20) 18 rekord(0.5,vit,svart); 19 else{ 20 lyckade=0; 21 for(forsok=1;forsok<10000000;forsok++){ 22 if(rand()%2==1){ // Vänstra lådan 23 drag=rand()%(vit+svart)+1; 24 if(drag<=vit) 25 lyckade++; 26 } 27 else{ 28 drag=rand()%(10-vit+10-svart)+1; 29 if(drag<=10-vit) 30 lyckade++; 31 } 32 } 33 rekord((float)lyckade/10000000,vit,svart); 34 } 35 } 36 printf("med %d vita och %d svarta i en låda är p=%.3f\n", 37 storstav,storstas,storsta); 38 } Håkan Strömberg 13 KTH STH