PROV I MATEMATIK Algoritmik 26 mars 2008

Relevanta dokument
PROV I MATEMATIK Algoritmik 14 april 2012

1. a) (2p) Vilket aritmetiskt uttryck beskrivs av det binära trädet

PROV I MATEMATIK Automatateori och formella språk DV1 4p

Rekursion och induktion

Rekursion och induktion

Övning 2. (Länkade) Listor, noder

Problemdemonstration 1

Polynom över! Till varje polynom hör en funktion DEFINITION. Grafen till en polynomfunktion

Tentamen TEN1 HI

Linjärt minne. Sammanhängande minne är ej flexibelt. Effektivt

TDDC74 Programmering, abstraktion och modellering DUGGA 2

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Två fall: q Tom sekvens: () q Sekvens av element: (a b c) ; (sum-rec '(2 4 6)) = 12. q Första elementet uppfyller vissa villkor: (2 a b c)

Tillämpad Programmering (ID1218) :00-13:00

Lösningar Datastrukturer TDA

b) S Ø aa, A Ø aa» bb, B Ø aa» bc, C Ø ac» bc» 2. Låt L vara språket över 8a< som nedanstående NFA accepterar.

Programmering II (ID1019) :00-17:00

Föreläsning Datastrukturer (DAT037)

Träd och koder. Anders Björner KTH

x 23 + y 160 = 1, 2 23 = ,

DAI2 (TIDAL) + I2 (TKIEK)

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Källkodning. Egenskaper hos koder. Några exempel

PROV I MATEMATIK Transformmetoder 1MA april 2011

Tentamen TEN1 HI

Lösningar för tenta i TMV200 Diskret matematik kl. 14:00 18:00

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret Lektion 4

Tentamen Datastrukturer D DAT 035/INN960

Programkonstruktion och Datastrukturer

Datastrukturer. Föreläsning 5. Maps 1

Tentamen i Introduktion till programmering

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

Lennart Rolandsson, Uppsala universitet, Ulrica Dahlberg och Ola Helenius, NCM

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 2

Träd Hierarkiska strukturer

Dagens föreläsning Programmering i Lisp Fö 5

Tentamen, Algoritmer och datastrukturer

Bygga hus med LECA-stenar

Föreläsning 6: Induktion

TDDI16 Datastrukturer och algoritmer. Algoritmanalys

Tentamen Datastrukturer, DAT037 (DAT036)

Ekvivalensrelationer

KTH, NADA, Vahid Mosavat. 1. Flervalsfrågor (5p)

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

Tentamen TEN1 HI

3. Toppkvinnor på hög Låt lådan och de två kvinnornas famnar utgöra stackarna L, K1 respektive K2. Från början finns alla kort i L.

PROV I MATEMATIK Transformmetoder 1MA dec 2010

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Övningsuppgifter #11, Programkonstruktion och datastrukturer

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel

Tentamen i. TDDC67 Funktionell programmering och Lisp

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

IX Diskret matematik

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

Procedurer och villkor

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Programmering II (ID1019)

Övningshäfte 2: Induktion och rekursion

Träd. Rot. Förgrening. Löv

Uppgifter till tenta i 729G04 Programmering och diskret matematik. 17 december 2015, kl 14:00-18:00

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Föreläsning Datastrukturer (DAT036)

13 Prioritetsköer, heapar

Algoritmer, datastrukturer och komplexitet

LABORATION 1. Inledande Lisp - rekursion

Inlämningsuppgift, LMN100

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 19 oktober 2016, kl 14 18

Högstadiets matematiktävling 2017/18 Kvalificeringstävling 14 november 2017 Lösningsförslag och bedömningsmall

Lösning till tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610 och 5B1118, tisdagen den 7 januari 2014, kl

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2

Upplägg. Binära träd. Träd. Binära träd. Binära träd. Antal löv på ett träd. Binära träd (9) Binära sökträd (10.1)

Fredag 10 juni 2016 kl 8 12

Arbeta vidare med aritmetik 2018

Linköpings Tekniska Högskola Instutitionen för Datavetenskap (IDA) Torbjörn Jonsson, Erik Nilsson Lab 2: Underprogram

Föreläsning 7. Träd och binära sökträd

Tentamen Datastrukturer, DAT037 (DAT036)

Programmering II (ID1019) :00-12:00

Föreläsning 13. Träd

Algoritmer, datastrukturer och komplexitet

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

Lösning till tentamensskrivning i Diskret Matematik, SF1610 och 5B1118, torsdagen den 21 oktober 2010, kl

Föreläsning 8 Datastrukturer (DAT037)

Lösningsförslag till Tentamen i 5B1118 Diskret matematik 5p 11 april, 2002

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

Föreläsning 10. Grafer, Dijkstra och Prim

Föreläsning 10. Grafer, Dijkstra och Prim

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

Datastrukturer. föreläsning 10. Maps 1

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

Lösningsförslag till övningsuppgifter, del II

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare

1, 2, 3, 4, 5, 6,...

Algoritmer och datastrukturer 2012, fo rela sning 8

2 Matematisk grammatik

DEL I. Matematiska Institutionen KTH

Hela tal LCB 1999/2000

Inom datalogin brukar man använda träd för att beskriva vissa typer av problem. Om man begränsar sig till träd där varje nod förgrenar sig högst två

Föreläsning 12. Söndra och härska

Dagens föreläsning Programmering i Lisp Fö 7. Sammanfattning funktionell programmering Exempel på funktionella programspråk

Föreläsning 4 Datastrukturer (DAT037)

Transkript:

UPPSALA UNIVERSITET Matematiska institutionen Salling, Wilander PROV I MATEMATIK Algoritmik 26 mars 2008 SKRIVTID: 8-12. HJÄLPMEDEL: Inga. Lösningarna skall åtföljas av förklarande text. För godkänt prov krävs minst 18 p. 1. a) (3p) Rita det binära träd vars noder uppräknade i preordning är y z ÿ x y z. b) (2p) Räkna upp det binära trädets noder i in- respektive postordning. c) (1p) Presentera med hjälp av Add och Mult en funktion som beräknar det aritmetiska uttryck som beskrivs av det binära trädet. a) y z. z x y b) Postordning: y z x y z : Inordning: y z x y z c) AddHAddHy, zl, AddHMultHx, yl, zll

2 26 mars 2008.nb 2. (6p) Beskriv vad följande funktioner returnerar. Glöm inte bort att motivera! f H@ DL = @ D a) ; f H@nod» LDL = OmHLikaHLängdHLL, 5L, nod, f HLLL b) giökahnlm = hiökahnl, ÖkaHnLM hhn, 0L = @ D hin, Öka HmLM = OmIDelbarIn, ÖkaHmLM, FogaTill IhHn, ml, ÖkaHmLM, hhn, mlm a) f returnerar det sjätte elementet från slutet för en lista av längd minst 6. Motivering: Om L innehåller exakt 5 element, så är sjätte elementet från slutet i @nod» LD lika med nod. Och om L innehåller flera än 5 element, så är det sjätte elementet från slutet i @nod» LD samma element som det sjätte elementet från slutet i L. LängdH@ b c d e f gdl 5 LängdH@c d e f gdl=5 f H@a b c d e f gdl = f H@ b c d e f gdl = b För kortare listor returnerar f en tom lista. Motivering: Om L är kortare än 5, så finns det inget 6:e element från slutet i @nod» LD, och inte heller i L. Här är en provkörning: LängdH@ b c DL 5 LängdH@ c DL 5 LängdH@ DL 5 f H@a b c DL = f H@ b cdl = f H@cDL = f H@ DL = @ D b) g tar input 1, och returnerar en lista av alla tal som input är delbart med. T.ex. är gh6l = 81 2 3 6<. Motivering: Vid körning på säg talet k 1, så anropas hhk, kl. Det som händer då är att h utökar listan hhk, k - 1L i höger ände med k, eftersom k är delbar med k. På motsvarande sätt blir listan hhk, k - 1L en utökning i höger ände av listan hhk, k - 2L om k är delbar med k - 1, annars blir hhk, k - 1L lika med hhk, k - 2L. O.s.v. Detta upprepas tills h:s högra argument blir lika med 0, då returneras tom lista. Därför kommer hhk, kl att bli lika med en lista av alla tal som k är delbar med. Provkörning: g H6L = 6 är delbar med 6 6 är inte delbar med 5 6 är inte delbar med 4 6 är delbar med 3 hh6, 6L = @hh6, 5L» 6D = = @hh6, 4L» 6D = @hh6, 3L» 6D = 6 är delbar med 2 6 är delbar med 1 @hh6, 2L» 3 6D = @hh6, 1L» 2 3 6D = @hh6, 0L» 1 2 3 6D = @@ D» 1 2 3 6D = @1 2 3 6D

26 mars 2008.nb 3 3. (6p) Skriv en listfunktion som givet en lista av tal returnerar summan av alla tal i listan som är mindre än 10. Till exempel skall funktionen returnera 17 för listan [1 2 3 4 7 10 17 100D, liksom för listan @100 12 8 37 9D. ; f H@ DL = @ D f H@nod» LDL = OmHMindreHnod, 10L, Add Hnod, f HLLL, f HLLL Att summera de tal i listan @nod» LD som är mindre än 10 är lätt om vi redan har summerat alla tal i L som är mindre än 10. Allt som återstår är då att addera nod till det redan summerade ifall nod<10. 4. (6p) Tillverka både en stenhögsprocedur och en primitivt rekursiv funktion som givet två naturliga tal m, n beräknar produkten av n stycken på varandra följande tal av vilka det minsta talet är lika med m. T.ex. skall 2 ÿ 3 ÿ 4 ÿ 5 ÿ 6 returneras om de två givna talen är 2 och 5. Om n = 0, skall talet 1 returneras, oavsett vilket värde m har. Anmärkning: Du får använda dig av stenhögsproceduren Multiplicera y med x respektive den primitivt rekursiva funktionen Mult. Först en stenhögsprocedur (som lägger resultatet i r). r 1 Sålänge n är icketom 9 Multiplicera r med m Öka m Minska n= Sedan en primitivt rekursiv funktion f Hm, 0L = 1 f Im, ÖkaHnLM = MultHf Hm, nl, Add Hm, nll Att beräkna produkten 2 ÿ 3 ÿ 4 ÿ 5 ÿ 6 är lätt om vi redan har beräknat produkten 2 ÿ 3 ÿ 4 ÿ 5. Det enda som återstår är då att multiplicera (det vi redan har beräknat) med 6. Allmänt: Att beräkna produkten m ÿ Hm 1L ÿ ÿ Hm n - 1L ÿ Hm nl är lätt om vi redan har n1 stycken faktorer beräknat produkten m ÿ Hm 1L ÿ ÿ Hm n - 1L. Det enda som återstår är då att multiplicera (det n stycken faktorer vi redan har beräknat) med m n.

4 26 mars 2008.nb 5. Givet två godtyckliga listor L 1 och L 2, konstruera a) (4p) en funktion som returnerar en lista med samtliga gemensamma element till L 1, L 2, b) (1p) en funktion som avgör ifall L 1 och L 2 innehåller något gemensamt element. ANM. Du får använda dig av funktionen TillhörHx, LL som avgör ifall x tillhör listan L. a) SnittetH@ D, Y L = @ D Snittet H@nod» XD, Y L = OmHOchHTillhörHnod, Y L, Icke HTillhörHnod, XLLL, FogaInHnod, SnittetHX, Y LL, SnittetHX, Y LL b) InnehållerGemensamtElementHX, Y L = IckeHTomH SnittetHX, Y LLL där TomH@ DL = 1 och TomH@nod» XDL = 0. Det är lätt att skapa en lista med de gemensamma elementen till listan @nod» XD och listan Y, om vi redan har en lista innehållande de gemensamma elementen till X och Y. Ty då behöver vi bara utöka den redan skapade listan med elementet nod ifall nod förekommer i listan Y men inte i listan X. 6. (5p) Skriv en funktion som givet ett binärt träd T och en atom x, returnerar en lista av fädrerna till samtliga x-förekomster i T. Du får använda dig av funktionen NivåEttHTL som returnerar en lista av T:s noder på nivå 1, dvs. nivån under rotnivån. FädrerHx, @ DL = @ D FädrerHx, @rot vä hödl = OmHTillhörHx, NivåEttH@rot vä hödll, FogaInHrot, FogaSammanHFädrerHx, väl, FädrerHx, hölll, FogaSammanHFädrerHx, väl, FädrerHx, höll L Om vi redan har listor med fädren till x-förekomsterna i de binära underträden vä respektive hö, så kan vi foga samman dessa två listor till en lista. Sedan behöver vi bara utöka det sammanfogade resultatet med rot ifall rot är far till någon x-förekomst, dvs om x förekommer på nivå 1.

26 mars 2008.nb 5 7. (6p) Säg att ett träd av tal är avtagande om varje nod i trädet har egenskapen att skogen nedanför nämnda nod saknar större noder. Skriv en funktion som avgör ifall ett träd är avtagande. AvtagandeTrädH@rotDL = 1 AvtagandeTrädH@rot» skogdl = OchHAvtagandeSkogHskogL, IckeHStörreHNivåEtt@@rot» skogdd, rotlll AvtagandeSkogH@ DL = 1 AvtagandeSkogH@träd» skogdl = Och@AvtagandeTrädHträdL, AvtagandeSkog@skogDD StörreH@ D, rotl = 0 StörreH@nod» LD, rotl = EllerHnod > rot, StörreHL, rotll Ett träd som bara innehåller en enda nod är förstås avtagande. Och ett större träd är avtagande om varje träd i skogen under roten också är avtagande och ingen nod på nivån under roten är större än roten.