Tentamen i kurserna Beräkningsmodeller (TDA181/INN110) och Grundläggande Datalogi (TDA180)

Relevanta dokument
Tentamen i kurserna Beräkningsmodeller (TDA181/INN110) och Grundläggande Datalogi (TDA180)

Tentamen i kurserna Beräkningsmodeller (TDA181/INN110) och Grundläggande Datalogi (TDA180)

Lösning till tentamensskrivning i Diskret Matematik för CINTE, CL2 och Media 1, SF1610 och 5B1118, onsdagen den 17 augusti 2011, kl

1. Varje bevissteg ska motiveras formellt (informella bevis ger 0 poang)

LUNDS TEKNISKA HÖGSKOLA Institutionen för Elektro- och Informationsteknik

Tentamen i Matematik 2: M0030M.

Uppgifter om funktioner

Objektorienterad modellering och diskreta strukturer. 13. Problem. Sven Gestegård Robertz. Datavetenskap, LTH

Tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610, onsdagen den 20 augusti 2014, kl

Procedurer och villkor. Rekursiva procedurer. Exempel: n-fakultet

Procedurer och villkor

En bijektion mellan två mängder A och B som har ändligt antal element kan endast finnas om mängderna har samma antal element.

Föreläsning 5: Kardinalitet. Funktioners tillväxt

TDDC74 Programmering, abstraktion och modellering DUGGA 1

Tentamen i Matematik 2: M0030M.

Övningshäfte 3: Funktioner och relationer

Tentamen i. TDDC67 Funktionell programmering och Lisp

Tentamen del 2 SF1511, , kl , Numeriska metoder och grundläggande programmering

denna del en poäng. 1. (Dugga 1.1) och v = (a) Beräkna u (2u 2u v) om u = . (1p) och som är parallell

TDDC74 Programmering, abstraktion och modellering DUGGA 2

Tentamen i Matematik 3: M0031M.

Pre-Test 1: M0030M - Linear Algebra.

6. a) Visa att följande vektorer är egenvektorer till matrisen A = , och ange motsvarande

Tentamen TMV210 Inledande Diskret Matematik, D1/DI2

BERÄKNINGSBARHET FÖR DATALOGER

BER AKNINGSBARHET F OR DATALOGER. Kent Petersson. Institutionen for Datavetenskap Goteborgs Universitet / Chalmers Goteborg, Sweden

Typsystem. Typsystem... Typsystem... Typsystem... 2 *

Typsystem. DA2001 (Föreläsning 23) Datalogi 1 Hösten / 19

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

and u = och x + y z 2w = 3 (a) Finn alla lösningar till ekvationssystemet

DD1361 Programmeringsparadigm. Carina Edlund

1. Compute the following matrix: (2 p) 2. Compute the determinant of the following matrix: (2 p)

LUNDS TEKNISKA HÖGSKOLA Inst. for Elektro- och Informationsteknik. SIGNALBEHANDLING I MULTIMEDIA, ETI265 Inlämningsuppgift 1 (av 2), Task 1 (out of 2)

Programkonstruktion och datastrukturer. Formell verifiering eller hur man bevisar att program gör rätt utan att testa dem

Sådana avbildningar kallar vi bijektioner mellan A och B (eller från A till B).

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

Diskret matematik, lektion 2

1. (3p) Bestäm den minsta positiva resten vid division av talet med talet 31.

Tentamen i. Programmering i språket C

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner

Föreläsning 9 Exempel. Intervallhalveringsmetoden. Intervallhalveringsmetoden... Intervallhalveringsmetoden...

Övningshäfte 2: Induktion och rekursion

Föreläsning 9 Exempel

ÄNDLIGT OCH OÄNDLIGT AVSNITT 4

Datalogi, grundkurs 1

En bijektion mellan två mängder A och B som har ändligt antal element kan finnas endast om mängderna har samma antal element.

Programmeringsmetodik DV1 Programkonstruktion 1. Moment 4 Om rekursion. PK1&PM1 HT-06 moment 4 Sida 1 Uppdaterad

Explorativ övning 4 ÄNDLIGT OCH OÄNDLIGT. Övning A

DD1350 Logik för dataloger. Fö 7 Predikatlogikens semantik

Introduktion till programmering SMD180. Föreläsning 5: Fruktbara funktioner

Lösningar till tentamen i EIT070 Datorteknik

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011

Chalmers tekniska högskola Datum: kl Telefonvakt: Linnea Hietala MVE480 Linjär algebra S

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1

Föreläsning 6: Introduktion av listor

Chalmers tekniska högskola Datum: kl Telefonvakt: Jonny Lindström MVE475 Inledande Matematisk Analys

Tentamen i Introduktion till programmering

MITTUNIVERSITETET TFM. Tentamen Algebra och Diskret Matematik A (svenska) Skrivtid: 5 timmar. Datum: 9 januari 2007

Matematiska Institutionen KTH. Lösning till tentamensskrivning på kursen Linjär algebra II, SF1604, den 9 juni 2011 kl

8 < x 1 + x 2 x 3 = 1, x 1 +2x 2 + x 4 = 0, x 1 +2x 3 + x 4 = 2. x 1 2x 12 1A är inverterbar, och bestäm i så fall dess invers.

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

2. (a) Skissa grafen till funktionen f(x) = e x 2 x. Ange eventuella extremvärden, inflektionspunkter

12.6 Heat equation, Wave equation

Lösningar till tentamen i EIT070 Datorteknik

Tentamen Grundläggande programmering

Kontinuitet och gränsvärden

COMPUTABILITY BERÄKNINGSBARHET. Källa: Goldschlager, Lister: Computer Science A Modern Introduction 2. upplaga 1988, Prentice Hall

Försättsblad till skriftlig tentamen vid Linköpings universitet

Lösning till tentamensskrivning på kursen Linjär algebra, SF1604, den 12 mars 2013 kl

Lösningar till utvalda uppgifter i kapitel 3

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Bakgrund. Bakgrund. Bakgrund. Håkan Jonsson Institutionen för systemteknik Luleå tekniska universitet Luleå, Sverige

DD1314 Programmeringsteknik

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

1 Find the area of the triangle with vertices A = (0,0,1), B = (1,1,0) and C = (2,2,2). (6p)

Exempel. Komplexkonjugerade rotpar

JavaScript del 3 If, Operatorer och Confirm

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

Isometries of the plane

Tentamen: Programutveckling ht 2015

TENTAMEN TDDB53. Programmering i Ada för MI (provkod TEN2) den 7 april 2010 kl Institutionen för datavetenskap, IDA Olle Willén mars 2010

Chalmers tekniska högskola Datum: kl Telefonvakt: Christoffer Standar LMA033a Matematik BI

Tentamen i TDDC75 Diskreta strukturer

Diskret Matematik A för CVI 4p (svenska)

Programmering II (ID1019)

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Algebra och Diskret Matematik A (svenska)

Att skriva till och läsa från terminalfönstret

Primitivt rekursiva funktioner och den aritmetiska hierarkin

TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 29 augusti 2015, kl 8 12

kvivalenta. Ange rangen för A samt en bas för kolonnrummet för A. och U =

Tentamen 1 i Matematik 1, HF okt 2018, Skrivtid: 14:00-18:00 Examinator: Armin Halilovic

Chalmers tekniska högskola Datum: kl Telefonvakt: Carl Lundholm MVE475 Inledande Matematisk Analys

Våra enkla funktioner eller procedurer

TENTAMEN I REGLERTEKNIK TSRT03, TSRT19

Övning 3 - Tillämpad datalogi 2012

6. Temperaturen u(x) i positionen x av en stav uppfyller värmeledningsekvationen. u (x) + u(x) = f(x), 0 x 2, u(0) = 0 u(2) = 1,

Transkript:

Göteborgs Universitet och Chalmers Tekniska Högskola 25 oktober 2005 Datavetenskap TDA180/TDA181/INN110 Tentamen i kurserna Beräkningsmodeller (TDA181/INN110) och Grundläggande Datalogi (TDA180) Onsdagen den 19 oktober 2005, kl 8.30 12.30 i V-huset. Ansvarig lärare: Bengt Nordström, tel 0730-79 42 89. Tillåtna hjälpmedel: Inga. Börja varje uppgift på nytt blad. Skriv endast på en sida av papperet. Varje svar skall motiveras! Komplicerade lösningar och motiveringar kan ge poängavdrag. Poäng från hemuppgifter inlämnade under 2005 kan tillgodoräknas. Kursen är värd 4 p vid Chalmers och 5 p vid universitetet. Detta förklarar följande betygsgränser: CTH: 3=80p, 4=100p, 5=120p, GU: G=100p, VG=150p. Det finns ett fåtal elever på Chalmers som läste motsvarande 3p-kurs. För dem är poänggränserna 3=60p, 4=75p, 5=90p. Examensvisning kommer att äga rum onsdagen den 2 november kl 11.00 i Bengt Nordströms tjänsterum. Lösningar till tentan kommer att finnas tillgängliga från kursen Beräkningsmodellers hemsida. 1. Bevisa eller motbevisa följande påståenden: (a) Funktionen (10) { x om x är udda, f(x) = odefinierat för övrigt är beräkningsbar. Svar: Funktionen är beräkningsbar eftersom den kan beräknas av programmet F x = if (even x) then loop else x, där programmet loop aldrig terminerar och programmet even avgör om argumentet är jämnt. Programmet even är t.o.m. primitivt rekursivt eftersom det kan skrivas på primitivt rekursiv form: even 0 = true och even (s x) = not (even x) ) (b) Om M är normalformen av N (i lambda-kalkyl) och N är öppet, så är M öppet. (15) 1

Svar: Detta gäller inte, låt N vara det öppna uttrycket (λ x.(λ y.y))z, som har variabeln z fri. Då blir M uttrycket λ y.y som är slutet. (Vi låter allstå N vara en funktion som inte beror påsitt argument, och applicerar det på ett öppet uttryck.) (c) Om M är ett slutet uttryck så har M en normalform (i lambdakalkyl). Svar: Nej, det finns ju uttryck i lambda-kalkyl som inte terminerar, t.ex. T T, där T är uttrycket λx.(x x) (15) (d) Mängden av totala funktioner från N till Bool är uppräknelig. (20) Svar: Falskt. Mängden är inte uppräkningsbar, om de vore det skulle det finnas en uppräkning f i av dem. Men uppräkningen kan inte innehålla funktionen d som är definierad av d(n) = f n (n) eftersom den skiljer sig från alla funktioner i uppräkningen. Om den skulle vara lika med funktionen f j skulle d(i) = f j (i) för alla i. Men detta gäller inte för i = j. (e) Mängden av totala funktioner från Bool till N är uppräknelig. (20) Svar: Ja. Intuitionen är att mängen har samma kardinalitet som N N, mängden av par av naturliga tal. Ett element f i funktionsmängden är ju fullständigt beskriven av två tal, funktionens värde för de två boolska elementen. För att bevisa att mängden är uppräkningsbar räcker det att ge en total och injektiv funktion g (Bool N) N. En sådan är: g(f) = 2 f(true)+1 3 f(false)+1 Den är ju total (definitionen gäller för alla f) och injektiv. Om g(f) = g(f ), så gäller 2 f(true)+1 3 f(false)+1 = 2 f (true)+1 3 f (false)+1 Men eftersom primtalsuppdelningen är unik måste f(true) = f (true) och f(false) = f (false), dvs f = f. 2. Enligt läroboken är en icketom mängd A uppräkningsbar om det finns en total surjektiv funktion f N A. 2

(a) Är det väsentligt att funktionen skall vara total? (14) (b) Är det väsentligt att funktionen skall vara surjektiv? (14) Om svaret är ja, skall du motivera det genom att visa att de reella talen skulle vara uppräkneliga om kravet inte finns med i definitionen. Om svaret är nej, skall du visa hur man givet en funktion som inte uppfyller kravet kan konstruera en funktion med kravet uppfyllt. Svar: Det är inte väsentligt att funktionen är total, om vi har en icke-total surjektiv funktion f N A så kan vi ju alltid konstruera en total funktion g genom: { f(x) om f(x) är definierad, g(x) = (1) a för övrigt där a är ett godtyckligt element i A. Däremot är det viktigt att funktionen är surjektiv. Annars skulle ju identitetsfunktionen räkna upp de reella talen. 3. (a) Vad är en fixpunktskombinator? (5) (b) Ge ett exempel på en fixpunktskombinator och visa att det är en sådan! (10) (c) Varför är fixpunktskombinatorer viktiga? (5) Svar: Se läroboken! 4. Lös en av följande uppgifter (beroende på om du studerat χ eller PCF): (a) Följande uppgift är för de som har studerat språket χ: i. Skriv ett program prod i χ (utan syntaktiskt socker) som är definierat så att (10) prod n = (0 + 1) (1 + 2)... (n 1 + n) Du kan anta att vi har definierat funktionerna add och mult som utför additon respektive multiplikation. Förklara hur du representerar de naturliga talen (om du inte vill behöver du inte använda standard-representationen). ii. Bevisa (med induktion) att ovanstående gäller! (12) 3

Svar: Vi använder standard-representationen av tal, dvs talet 0 representeras av zero och talet n + 1 av succ n, där n är representationen av n. Vi ser att programmet skall uppfylla följande ekvationer: prod (zero ) =one prod (succ n ) =(mult (prod n))(add n (succ n)) Låt oss införa förkortingen f m n = (mult m)(add n (succ n)) Vi skall alltså lösa ekvationerna prod (zero ) = one prod (succ n ) = f (prod n) n Vi kan förenkla problemet till att lösa ekvationen prod z = case z of{ vilken löses av zero : one, succ n : f (prod n) n} prod = def rec p = λz case z of{ zero : one, succ n : f (p n) n} vilket utan syntaktiskt socker skrives: prod = def rec p = λz case z of{ zero : λ u one, succ : λ n f (p n.arg1) n.arg1} Denna definition av konstanten prod är korrekt ty, i basfallet får vi: prod (zero <>) = {enl definitionen av prod} (rec p = \z -> case z of { 4

succ: \n -> f (p n.arg1) n.arg1})(zero <>) = {enl beräkningsregel för rec} \z -> case z of { succ:...} (zero <>) = {enl beräkningsregel för applikation} case zero <> of { succ:... }) = {enl beräkningsregel för case} (\u -> one) <> = one I efterföljarfallet får vi följande beräkningar: prod (succ <n>) = {enl definitionen av prod} (rec p = \z -> case z of { succ: \n -> f (p n.arg1) n.arg1})(succ <n>) = {enl beräkningsregel för rec} \z -> case z of { succ: \n -> f (prod n.arg1) n.arg1})(succ <n>) = {enl beräkningsregel för applikation} case succ <n> of { succ: \n -> f (prod n.arg1) n.arg1}) = {enl beräkningsregel för case} (\n -> f (prod n.arg1) n.arg1) <n> = f (prod n) n) (b) Följande uppgift är för de som studerat PCF: i. Define a PCF-program that behaves as prod, for any n > 0 (10) prod n = (0 + 1) (1 + 2)... (n 1 + n) You can assume that you already have two PCF-programs add and mult performing addition and multiplication of Natural numbers, respectively. 5

ii. What is the output of your PCF-program when applied to the value Zero? Justify by showing the main steps in the (7) reduction of prod Zero. Explain. Here you should assume that both add and mult have the expected semantics. You can use either big or small semantics. iii. What is the purpose of the fix operator in PCF? (5) Give a PCF-program that contains no fix operator and that does not terminate. Justify! Lycka till! 6