PROV I MATEMATIK Algoritmik 14 april 2012

Relevanta dokument
PROV I MATEMATIK Algoritmik 26 mars 2008

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

Algoritmer och datastrukturer 2012, fo rela sning 8

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

PROV I MATEMATIK Transformmetoder 1MA dec 2010

Tentamen TEN1 HI

Tabeller. Programkonstruktion. Moment 8 Om abstrakta datatyper och binära sökträd. Implementering av tabellen. Operationer på tabellen

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.

PROV I MATEMATIK Transformmetoder 1MA april 2011

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)

Tentamen, Algoritmer och datastrukturer

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

Föreläsning 9 Datastrukturer (DAT037)

Rekursion och induktion

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

Rekursion och induktion

Ett generellt träd är. Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn

Programmeringsmetodik DV1 Programkonstruktion 1. Moment 8 Om abstrakta datatyper och binära sökträd

Föreläsning 5. Träd Binära träd Binärt sökträd som ADT Implementering av binärt sökträd Travestera binärt sökträd Sökning Insättning/borttagning

Självbalanserande träd AVL-träd. Koffman & Wolfgang kapitel 9, avsnitt 1 2

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

Programkonstruktion och. Datastrukturer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU

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å

TDDC74 Programmering, abstraktion och modellering DUGGA 2

Föreläsning Datastrukturer (DAT036)

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

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)

Teoretisk del. Facit Tentamen TDDC (6)

Föreläsning Datastrukturer (DAT036)

Tentamen Datastrukturer D DAT 035/INN960

13 Prioritetsköer, heapar

Träd och koder. Anders Björner KTH

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Problemdemonstration 1

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

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

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

Programmering II (ID1019)

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

Tentamen Datastrukturer, DAT037 (DAT036)

729G04: Inlämningsuppgift Diskret matematik

Fredag 10 juni 2016 kl 8 12

Tabeller. Programkonstruktion. Moment 8 Om abstrakta datatyper och binära sökträd. Specifikationer för tabellfunktionerna. Operationer på tabellen

Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5

Binära sökträd. Seminarium 9 Binära sökträd Innehåll. Traversering av binära sökträd. Binära sökträd Definition. Exempel på vad du ska kunna

Tentamen Datastrukturer för D2 DAT 035

Algoritmer och datastrukturer 2012, föreläsning 6

Datastrukturer. Föreläsning 5. Maps 1

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

BINÄRA TRÄD. (X = pekarvärdet NULL): struct int_bt_node *pivot, *ny; X X X 12 X X 12 X X -3 X X

Föreläsning 2. AVL-träd, Multi-Way -sökträd, B-träd TDDD71: DALG. Innehåll. Innehåll. 1 Binära sökträd

Föreläsning 9 Innehåll

Föreläsning 13. Träd

Föreläsning 4 Datastrukturer (DAT037)

Datastrukturer. föreläsning 10. Maps 1

Träd Hierarkiska strukturer

Föreläsning 6: Induktion

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.

Lösningsförslag till tentamensskrivning i SF1610 Diskret Matematik för CINTE 30 maj 2018, kl

Föreläsning 3 Datastrukturer (DAT037)

Trädstrukturer och grafer

DAI2 (TIDAL) + I2 (TKIEK)

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

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.'

Seminarium 13 Innehåll

Optimala koder. Övre gräns för optimala koder. Gränser. Övre gräns för optimala koder, forts.

Optimala koder. Det existerar förstås flera koder som har samma kodordsmedellängd. Enklaste fallet är att bara byta 0:or mot 1:or.

Självbalanserande AVL-träd Weiss, avsnitt 4.4

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Innehåll. Föreläsning 12. Binärt sökträd. Binära sökträd. Flervägs sökträd. Balanserade binära sökträd. Sökträd Sökning. Sökning och Sökträd

Datastrukturer. föreläsning 10. Maps 1

Föreläsning Datastrukturer (DAT036)

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

Ekvivalensrelationer

Lösningar Datastrukturer TDA

MÖNSTER OCH TALFÖLJDER

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning 5 TDDC91,TDDE22,725G97: DALG. Föreläsning i Datastrukturer och algoritmer 18 september 2018

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer, DAT037 (DAT036)

Föreläsning 10 Innehåll. Prioritetsköer och heapar. ADT Prioritetskö. Interface för Prioritetskö. Exempel på vad du ska kunna

Tentamen Datastrukturer D DAT 036/INN960

Föreläsning 9 Innehåll

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.

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar

Lösningsförslag till exempeltenta 1

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

Föreläsning Datastrukturer (DAT037)

Tentamen TMV210/MMGD10 Inledande Diskret Matematik, D1/GU

Föreläsning 6. Sökträd: AVL-träd, Multi-Way -sökträd, B-träd TDDC70/91: DALG. Innehåll. Innehåll. 1 AVL-träd

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

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

Dekomposition och dynamisk programmering

Tentamen TEN1 HI

Programmering i C++ EDAF30 Dynamiska datastrukturer. EDAF30 (Föreläsning 11) HT / 34

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

Algoritmer, datastrukturer och komplexitet

Transkript:

UPPSALA UNIVERSITET Matematiska institutionen Salling (070-6527523) SKRIVTID: 9-13 HJÄLPMEDEL: Inga. PROV I MATEMATIK Algoritmik 14 april 2012 Svar/lösningar skall åtföljas av förklarande text. För godkänt prov krävs minst 18 p, och för väl godkänt 28 p. 1. a) (2p) Hur ser det binära träd ut vars postordningstraversering ges av 3 x y + ÿ 2 z + 5 ÿ + b) (1p) Konstruera med hjälp av Add och Mult en funktion som beräknar det aritmetiska uttryck som trädet beskriver. + al. 3 + +. 5 bl AddHMultH3, AddHx, yll, MultHAddH2, zl, 5LL x y 2 z 2. (5p) Red ut huruvida de två funktionerna nedanför beräknar samma sak eller ej. Glöm inte bort att motivera! f H0L = 2 ghxl = AddHMultH3, xl, 2L f IÖkaHxLM = Add Hf HxL, 3L ghxl = 3 x + 2 för alla x. Härav, ghx + 1L = 3 Hx + 1L + 2 = 3 x + 2 + 3 = ghxl + 3. Dvs. giökahxlm = Add HgHxL, 3L. ghxl Således har g samma rekursiva beskrivning som f. Bottenvärdena är också lika: f H0L = gh0l = 2. Det följer att f och g beräknar samma sak. 3. (5p) Provkör den Booelska stenhögsproceduren nedanför på n = 0, 1, 2, 3, 4. Vilken fråga besvarar proceduren för ett godtyckligt n? Ärtig? n i s = Töm m Sålänge m < n 8 m n? i s Addera 3 till m< Proceduren undersöker om n ligger i treans multiplikationstabell, dvs. om n är delbar med 3. MOTIVERING Undersökningen går till på följande sätt: Om n = 0, så körs inte sålänge-slingan, och därmed kommer likhetstestet (som nu har formen 0 0?) att ge svaret ja, vilket är ett korrekt svar, eftersom 0 ligger i treans tabell.

0 0?) att ge svaret ja, vilket är ett korrekt svar, eftersom 0 ligger i treans tabell. Om n > 0, så körs slingan en eller flera gånger, och inuti densamma tillverkas tal m = 3, 6, 9, osv. ur treans tabell. Eftersom det sist tillverkade m:et får slingan att stanna måste det vara lika med det först påträffade talet ur treans tabell som inte är mindre än n. Antag nu att n ligger i treans tabell. Då kan de tal i treans tabell som är mindre än n skrivas m = 0, 3, 6,, n - 3. Nästkommande m (det som får slingan att stanna) blir i detta fall lika med n. Därvid kommer likhetstestet (som nu har formen n n?) att ge svaret ja. Antag till sist att n inte ligger i treans tabell. Det närmsta talet till vänster om n som ligger i treans tabell är nu lika med n - 1 eller n - 2. (Eftersom vart tredje tal ligger i treans tabell, måste något av de tre talen n - 2, n - 1, n ligga i nämnda tabell!) Då kan de tal i treans tabell som är mindre än n skrivas m = 0, 3, 6,, n - 2, eller m = 0, 3, 6,, n - 1. Nästkommande m blir därför lika med n + 1 eller n + 2. Därvid kommer likhetstestet (som nu har formen n + 1 n? eller n + 2 n?) att ge svaret nej. 2 4. (6p) Funktionen papiipap definieras av papiipaph@ DL = @ D papiipaph@nod LDL = FogaInHnod, FogaTillHpapiipapHLL, nodll (a) Visa (med provkörning) vad papiipaph@a bdl blir. (b) Förklara vad papiipap returnerar för en godtycklig inputlista. (a) papiipaph@a bdl = FogaInHa, FogaTillHpapiipapH@bDL, all = FogaInHa, FogaTillHFogaInHb, FogaTillHpapiipapH@ DL, bll, all = FogaInHa, FogaTillHFogaInHb, FogaTillH@ D, bll, all = FogaInHa, FogaTillH@b b D, all = @a b b ad (b) papiipap returnerar sammanfogningen av inputlistan och en reverserad kopia av densamma. MOTIVERING: Det stämmer (enligt basfallet) för tom inputlista. Och för en längre inputlista @a 1 a 2 a n D så är papiipaph@a 1 a 2 a 3 a n DL = @a 1 papiipaph@a 2 a 3 a n DL a 1 D = @a 1 a 2 papiipaph@ a 3 a n DL a 2 a 1 D = @a 1 a 2 a 3 a n papiipaph@ DL a n a 3 a 2 a 1 D = @a 1 a 2 a 3 a n a n a 3 a 2 a 1 D

3 5. (6p) Låt X = @x 0 x 1 x n D och Y = @y 0 y 1 y n D vara två lika långa listor. Konstruera funktionerna BlandaInNollor och Blanda så att (a) BlandaInNollorHXL = @x 0 0 x 1 0 x n 0D, (b) BlandaHX, Y L = @x 0 y 0 x 1 y 1 x n y n D. BlandaInNoll HnilL = nil HaL ; BlandaInNoll H @x X DL = @x @0 BlandaInNoll HXLDD Blanda H nil, nill = nil HbL ; Blanda H @x X D, @y Y DL = @x @y Blanda HX, Y LDD 6. (5p) Antag att X, Y är atomära listor av tal. Konstruera en funktion Differensen HX, Y L som returnerar de tal (paketerade i en lista) som finns i X men inte i Y. T.e.x. så att DifferensenH@5 2 5D, @2 5 1DL = @ D, och DifferensenH@2 5 1 2 1 3D, @2 5 5DL = @1 3D. Du får använda dig av funktionen Tillhör Hx, LL som undersöker ifall x tillhör listan L. DifferensenH nil, Y L = nil DifferensenH @x X D, Y L = OmHInteHTillhörHx, Y LL, @x DifferensenHX, Y LD, DifferensenHX, Y LL KOMMENTAR: Om den vänstra listans första element inte tillhör den högra listan skall nämnda element finnas med i differensen, och annars skall den inte göra det. Eventuella övriga element i differensen ges av differensen mellan vänstra listans återstod och den högra listan.

4 7. (5p) I ett fullständigt k-ställigt träd har varje förälder k stycken barn, och föräldrar på samma nivå är rötter till lika djupa underträd. Nedanför är två fullständiga träd ritade: ett 2-ställigt och ett 3-ställigt (båda med djupet 3). Komponera funktionen Fullständigt?Hk, TL så att den besvarar frågan Är T ett fullständigt k- ställigt träd? Du får använda dig av funktionerna TrädDjup och SkogsDjup som returnerar antalet nivåer i ett träd, respektive antalet nivåer i en skogs djupaste träd. Fullständigt?Hk, @rotdl = 1 Fullständigt?Hk, @rot skogdl = OchHLikaHLängdHskogL, kl, FullständigSkog?Hk, skogll FullständigSkog?Hk, @träddl = Fullständigt?Hk, trädl FullständigSkog?Hk, @träd skogdl = OchHLikaHTrädDjupHträdL, SkogsDjupHskogLL, OchHFullständigt?Hk, trädl, FullständigSkog?Hk, skoglll KOMMENTAR: Ett träd är fullständigt och k-ställigt, om skogen under roten innehåller k träd, som alla är lika djupa och dessutom är fullständiga och k-ställiga. Om trädet bara innehåller en rotnod, finns det inga föräldrar, med följd att ett sådant träd är fullständigt och k-ställigt oavsett k-värde. (Se basfallet.) Funktionen FullständigSkog?Hk, skogl undersöker om träden i skog är lika djupa och dessutom är fullständiga och k-ställiga. Ifall skogen bara innehåller ett träd, räcker det att konstrollera att trädet ifråga är fullständigt och k-ställigt. (Se basfallet.)

5 8. (5p) Låt oss kalla ett binärt träd T för balanserat, om det för varje nod i T skiljer högst en enhet mellan trädjupen hos nodens två underträd. Konstruera en funktion som undersöker om ett binärt träd är balanserat. T.ex. är de första två binära träden nedanför balanserade, men inte det tredje eftersom det innehåller en nod x, vars vänstra underträd har djupet 2 medan det högra (som är tomt) har djupet 0. x BalanseratH@ DL = 1; BalanseratH@rot vä hödl = OchH OchHBalanseratHväL, BalanseratHhöLL, MindreHSkillnadHDjupetHväL, DjupetHhöLL, 2L L där SkillnadHx, yl = OmHStörreHx, yl, SubHx, yl, SubHy, xll KOMMENTAR: Ett obalanserat binärt träd kännetecknas av att det har någon nod vars två underträd skiljer sig i djup med minst två enheter. Det följer att ett tomt binärt träd är balanserat (eftersom det saknar noder). Ett icketomt binärt träd är balanserat om vänster- och höger underträd (till roten) är balanserade, och deras djup skiljer sig åt med mindre än två enheter.