Hjemmeeksamen 1 i INF3110/4110

Like dokumenter
Hjemmeeksamen 2 i INF3110/4110

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

E K S A M E N. Algoritmiske metoder I. EKSAMENSDATO: 11. desember HINDA / 99HINDB / 99HINEA / 00HDESY ( 2DA / 2DB / 2EA / DESY )

UNIVERSITETET I OSLO

Algoritmer og Datastrukturer

Eksamensoppgave i TMA4140 Diskret matematikk

Dagens tema Syntaks (kapittel Komp. 47, kap. 1 og 2)

Litt om kompilering og interpretering. Dagens tema Syntaks (kapittel Komp. 47, kap. 1 og 2) Syntaks og semantikk

Semantisk Analyse del I

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet. INF1080 Logiske metoder for informatikk

UNIVERSITETET I OSLO

Eksamensoppgave i TMA4140 Diskret matematikk

UNIVERSITETET I OSLO

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet

Dagens tema: Regulære språk og uttrykk

MAT-INF 1100: Obligatorisk oppgave 1

UNIVERSITETET I OSLO

INF2220: Forelesning 2

Løsningsforslag. Oppgavesettet består av 9 oppgaver med i alt 20 deloppgaver. Ved sensur vil alle deloppgaver telle omtrent like mye.

UNIVERSITETET I OSLO

INF 2820 V2018: Innleveringsoppgave 1

Følger Sipsers bok tett både i stoff og oppgaver.

INF1080 Logiske metoder for informatikk. 1 Små oppgaver [70 poeng] 1.1 Grunnleggende mengdelære [3 poeng] 1.2 Utsagnslogikk [3 poeng]

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO

Oppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Kap. 5, del 1: Parsering nedenfra-opp (Bottom up parsing) INF5110. Stein Krogdahl Ifi, UiO

PG 4200 Algoritmer og datastrukturer Innlevering 2

E K S A M E N. Algoritmiske metoder I. EKSAMENSDATO: 11. desember HINDA / 00HINDB / 00HINEA ( 2DA / 2DB / 2EA ) TID:

Syntax/semantics - I INF 3110/ /29/2005 1

Prøveeksamen IN1000. IN Prøveeksamen. Dato november 2017 Tid 12:30-12:00 Alle trykte og skrevne hjelpemidler er tillatt.

Høgskoleni østfold EKSAMEN

UNIVERSITETET I OSLO

Oppgaver til INF 5110, kapittel 5 Fullt svar på oppgave 5.4, og en del andre oppgaver med svar

Kap. 5, del 1: Parsering nedenfra-opp (Bottom-up parsering) INF / Stein Krogdahl Ifi, UiO

LØSNINGSFORSLAG EKSAMEN V06, MA0301

KONTINUASJONSEKSAMEN

TMA4140 Diskret Matematikk Høst 2016

IN2080. Oppgave 1. Oppgave 2. Eksamen. Vår Den nondeterministiske endelige automaten A er gitt ved (Q, Σ, δ, q 0, F ) der

Algoritmer og Datastrukturer

Algoritmer og Datastrukturer

Syntaksanalyse. Skanner (repetisjon) Parsering top-down bottom-up LL(1)-parsering Recursive descent Forutsetninger. IN 211 Programmeringsspråk

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000

Definisjon: Et sortert tre

TDT4110 IT Grunnkurs Høst 2014

INF 2820 V2015: Obligatorisk innleveringsoppgave 3

Innlevering 2b i INF2810, vår 2017

EKSAMENSOPPGAVE. INF-1101 Datastrukturer og algoritmer. Adm.bygget, rom K1.04 og B154 Ingen

Hvor er vi nå - kap. 3 (+4,5)? Forenklet skisse av hva en parser gjør PARSER. Kontekstfrie grammatikker og syntaksanalyse (parsering)

HØGSKOLEN I SØR-TRØNDELAG

Norsk informatikkolympiade runde

EKSAMEN med løsningsforslag

Manual for innlevering av eksamensbesvarelser på it s learning (ITL)

INF Algoritmer og datastrukturer. Hva er INF2220? Algoritmer og datastrukturer

Obligatorisk oppgave 1 INF1020 h2005

Løsningsforslag. Emnekode: Emne: Matematikk for IT ITF Eksamenstid: Dato: kl til kl desember Hjelpemidler: Faglærer:

Binære søketrær. Et notat for INF1010 Stein Michael Storleer 16. mai 2013

UNIVERSITETET I OSLO

EKSAMEN I FAG TMA4140 DISKRET MATEMATIKK Tirsdag 16. desember 2003 Tid :

INF1010 Sortering. Marit Nybakken 1. mars 2004

Hva er en algoritme? INF HØSTEN 2006 INF1020. Kursansvarlige Ragnar Normann E-post: Dagens tema

UNIVERSITETET I OSLO

Sekventkalkyle for utsagnslogikk

Obligatorisk oppgave 1 i INF 4130, høsten 2008

INF 2820 V2016: Obligatorisk innleverinsoppgave 1

MAT-INF 1100: Obligatorisk oppgave 1

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 v2009

INF / Kap. 5, Del 2 Stein Krogdahl, Ifi, UiO

Bruk av oppgaver og grupper i

E K S A M E N. EKSAMENSDATO: 15. desember 1994 TID: Kladd og oppgavearkene leveres sammen med besvarelsen. Kladd merkes med "KLADD".

KONTINUASJONSEKSAMEN I TMA4140 LØSNINGSFORSLAG

INF2220: Forelesning 2. Balanserte søketrær Rød-svarte trær (kapittel12.2) B-trær (kapittel 4.7)

Transkript:

Hjemmeeksamen i INF30/40 Innleveringsfrist: fredag 24. oktober kl. 500 Innlevering Hele besvarelsen skal leveres skriftlig på papir i IFI-ekspedisjonen innen fredag 24. oktober kl. 500. Merk besvarelsen med navn, samt ditt brukernavn ved IFI. Programkoden fra Del skal også sendes per e-post innen den samme fristen. Hvis du er på gruppe x, så sender du e-post til inf30-x@ifi.uio.no. Programkoden skal sendes som vedlegg og ha navnet brukernavn.sml hvor brukernavn er ditt brukernavn (!) ved IFI. Fristen er absolutt; det gis ingen utsettelse uten gyldig grunn. Det gis heller ingen mulighet for å ta denne hjemmeeksamen på nytt etter innlevering. Samarbeid og egenerklæring Denne oppgaven er ment som en individuell oppgave, siden resultatet av oppgaven inngår som en del av den samlede karakteren for kurset, men det er også tillatt å samarbeide to og to. I så tilfelle skal begge levere hver sin oppgave, men skrive klart og tydelig på forsiden hvem de har samarbeidet med. Begge vil da få samme uttelling for besvarelsen. Alle som leverer må også fylle ut og underskrive en egenerklæring som leveres sammen med besvarelsen. Dette er et krav for å kunne gå opp til eksamen. Skjemaet kandulastenedogskriveutherfra: Norsk versjon: http://www.ifi.uio.no/studinf/skjemaer/erklaring.pdf Engelsk versjon: http://www.ifi.uio.no/studinf/skjemaer/declaration.pdf Vurdering Eksamensform i dette kurset består av to hjemmeeksamener og en avsluttende 3- timers eksamen. Begge hjemmeeksamenene teller 20%; den avsluttende eksamen teller 60%. For å gjøre regningen noe enklere vil du kunne oppnå 20 poeng på hver hjemmeeksamen, samt 60 poeng på avsluttende eksamen. Til slutt vil din poengsum bli regnet om til en bokstavkarakter. Manglende innlevering av hjemmeeksamen gir 0poeng. Annen informasjon Filen med programkode skal være kjørbar i SML/NJ, dvs. kunne hentes inn ved å bruke use "brukernavn.sml";. Kommenter programkoden slik at den blir forståelig! Hvis du ikke klarer alt i en oppgave, så forklar hvordan du har tenkt og hvor langt du har kommet. Lykke til!

Del - Programmering i ML I denne oppgaven skal du lage funksjoner som gjør operasjoner på trær. Følgende datatype skal benyttes: datatype a tre = Node of a Tre of a * ( a tre list); I Figur finner du eksempler på trær av heltall (tegnet med roten nederst) og hvordan disse kan representeres som verdier av typen over. Du kan bruke disse til å teste funksjonene dine. Et minstekrav til funksjonene dine er at de gjør det de skal. Utover det oppfordres du til å skrive enkle og elegante funksjoner. Du står fritt til å benytte alle de deler av språket vi har gått igjennom til nå. Husk å kommentere det du gjør. ( poeng) Oppgave dybde : a tre -> int Skriv en ML-funksjon dybde av type ( a tre -> int) som gir lengden på den lengste grenen i treet. Vi sier at en enkelt node har dybde 0. dybde(tre) gir 0 dybde(tre2) gir dybde(tre3) gir dybde(tre4) gir 2 dybde(tre5) gir 3 dybde(tre6) gir 2 ( poeng) Oppgave 2 forgrening : a tre -> int Skriv en ML-funksjon forgrening av type ( a tre -> int) som gir størrelsen på den største forgreningen i treet. forgrening(tre) gir 0 forgrening(tre2) gir 2 forgrening(tre3) gir 3 forgrening(tre4) gir 4 forgrening(tre5) gir 3 forgrening(tre6) gir 3 ( poeng) Oppgave 3 antall : a tre -> int Skriv en ML-funksjon antall av type ( a tre -> int) som gir antall elementer i treet. antall(tre) gir antall(tre2) gir 3 antall(tre3) gir 4 antall(tre4) gir 6 antall(tre5) gir 8 antall(tre6) gir 3 2

val tre = Node(); 2 3 val tre2 = Tre(,[Node(2), Node(3)]); 2 3 4 val tre3 = Tre(,[Node(2), Node(3), Node(4)]); 6 val tre4 = Tre(, [Node(2), 2 3 4 5 Node(3), Node(4), Tre(5, [Node(6)])]); 5 6 7 2 3 4 8 val tre5 = Tre(, [Node(2), Tre(3, [Node(5)]), Tre(4, [Node(6), Tre(7, [Node(8)])])]); val tre6 = Tre(, [Tre(2, [Node(5), Node(6), 5 6 2 7 8 9 3 0 2 4 3 Node(7)]), Tre(3, [Node(8), Node(9), Node(0)]), Tre(4, [Node(), Node(2), Node(3)])]); Figur : Eksempler på trær 3

( poeng) Oppgave 4 flatd : a tre -> a list Skriv en ML-funksjon flatd av type ( a tre -> a list) som flater ut et tre ved å gå gjennom treet dybde først fra venstre mot høyre. Elementene i listen skal bestå av elementene i treet, og rekkefølgen skal svare til å gå gjennom treet dybde først. flatd(tre5) gir [,2,3,5,4,6,7,8]. flatd(tre6) gir [,2,5,6,7,3,8,9,0,4,,2,3]. Oppgave 5 flatb : a tre -> a list Skriv en ML-funksjon flatb av type ( a tre -> a list) som flater ut et tre ved å gå gjennom treet bredde først fra venstre mot høyre. Elementene i listen skal bestå av elementene i treet, og rekkefølgen skal svare til å gå gjennom treet bredde først. flatb(tre5) gir [,2,3,4,5,6,7,8]. flatb(tre6) gir [,2,3,4,5,6,7,8,9,0,,2,3]. Oppgave 6 trelik : a tre -> a tre -> bool Skriv en ML-funksjon trelik av type ( a tre -> a tre -> bool) som sjekker om to trær er like. For at to trær skal være like, så må alle elementene som de er byggetavværelikeogdemåhasammestruktur. trelik tre2 (Tre(,[Node(2), Node(3)])) gir true trelik tre2 (Tre(,[Node(3), Node(2)])) gir false trelik tre tre2 gir false Oppgave 7 speil : a tre -> a tre Skriv en ML-funksjon speil av type ( a tre -> a tre) som speilvender et tre. Eksempel: speil tre5 gir følgende tre: 8 7 4 6 5 3 2 val tre5 = Tre(, [Tre(4, [Tre(7, [Node(8)]), Node(6)]), Tre(3, [Node(5)]), Node(2)]); 4

Del 2 - Syntaks (3 poeng) Oppgave 8 a) Definer en regulær grammatikk (i klassisk BNF) over alfabetet {,2,3} som kun tillater ikke-tomme strenger hvor alle forekomster av 3 kommer til venstre for alle forekomster av 2 og alle forekomster av 2 kommer til venstre for alle forekomster av. Eksempler på tillatte strenger:, 2, 2, 32, 33333222, 333, 3, 32, 333 Eksempler på ikke-tillatte strenger: 2, 3, 3, 2223 b) Definer den samme grammatikken i utvidet BNF. c) Gi en endelig, deterministisk automat som godkjenner nøyaktig setningene i dette språket. d) Utvid grammatikken (og alfabetet) over slik at den også tillater strenger med tegnet + hvor tegnet umiddelbart til høyre for + må være, 2 eller 3. (Tenkpå+ som et tegn som nullstiller rekkefølgen, slik at man kan begynne på et større tall igjen.) Eksempler på tillatte strenger:, 2, 2+, 2+33, +++3 Eksempler på ikke-tillatte strenger: 2, 3, +3, 33+, +2 e) Definer den samme grammatikken i utvidet BNF. f) Gi til slutt en endelig, deterministisk automat som godkjenner nøyaktig setningene i dette språket. Oppgave 9 Se på følgende grammatikk over alfabetet {(, )}, dvs. de eneste tegnene er venstreparentes og høyreparentes: U () ( U ) U U a) Vis at grammatikken er flertydig. b) Er grammatikken regulær? Hvis ja, hvorfor? Hvis nei, hvorfor ikke? c) Modifiser grammatikken slik at den ikke lenger er flertydig. Den skal fortsatt gi nøyaktig samme setninger som den opprinnelige. 5

(3 poeng) Oppgave 0 a) Definer en grammatikk over alfabetet {a, b} slik at alle setninger har like mange a er som b er. Eksempler på tillatte strenger: ε, ab, aabb, aabbba, abab Eksempler på ikke-tillatte strenger: a, bba, aaa b) Er det mulig å gi en regulær grammatikk for dette språket? Hvis ja, gi den regulære grammatikken. Hvis nei, gi en kort begrunnelse for hvorfor det ikke går. Oppgave Gitt følgende endelige, deterministiske automat: 0 B 0 0 X B angir starttilstanden og X angir sluttilstanden/aksepterende tilstand. a) Finn en kort og intuitiv beskrivelse av språket som denne automaten definerer. b) Skriv et uttrykk i utvidet BNF som uttrykker nøyaktig samme språk. SLUTT 6