Tentamen vraag 1 Als L en M talen zijn, dan nL  M is gelijk aan { s  t | s  L, t  M } nL M is gelijk aan { s t | s  L, t  M } nL n is gelijk aan.

Slides:



Advertisements
Verwante presentaties
H3 Tweedegraads Verbanden
Advertisements

LRP PASTORALE EENHEID release 2.1 Koos Willemse.
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.
Lijsten in de -calculus Een lijst [E 1, E 2,..., E n ] kan in de -calculus voorgesteld worden als z.((z E 1 ) z.((z E 2 )... z.((z E n ) nil)...) met nil.
Uitwerking tentamen Functioneel Programmeren 29 januari 2009.
Hogere-ordefuncties nEen lijst langs lopen en met elk element iets doen nEen lijst langs lopen en sommige elementen selecteren map filter.
Herleiden (= Haakjes uitwerken)
Polymorf zoeken zoek :: (a  a  Bool)  [ (a, b) ]  a  b zoek eq [ ] x = ??? zoek eq ((a,b):ts) x | eq a x = b | otherwise = zoek eq ts x MayBe b No.
Grammatica’s en Ontleden
Hogere-orde functies: herhaald patroon? Parametrizeer! product :: [Int]  Int product [ ]= product (x:xs)= 1 product xs x * and :: [Bool]  Bool and [
Functies op Proposities evalueer:: Bedeling  Prop  Bool tautologie:: Prop  Bool contradictie:: Prop  Bool equivalentie:: Prop  Prop  Bool vervulbaar::
Hoger-ordefuncties op lijsten nDoorloop een lijst en... map :: (a  b)  [a]  [b] filter :: (a  Bool)  [a]  [a] foldr :: (a  a  a)  a  [a]  a.
Parallelle Algoritmen String matching. 1 Beter algoritme patroonanalyse Bottleneck in eenvoudig algoritme: WITNESS(j) (j = kandidaat in eerste i-blok)
1. Parsing (epsilon’s, tabellen) 2. Unificatie grammatica Natuurlijke taalverwerking week 7.
Natuurlijke taalverwerking week 4
Inleidend probleem Data structuur (hiërarchie van classes)
AI91  Het Probleem  Grammatica’s  Transitie netwerken Leeswijzer: Hoofdstuk AI Kaleidoscoop College 9: Natuurlijke taal.
Functies als Getallen Jan Martin Jansen.
Flow controle Keuzes maken. Het if-statement Soms moet code alleen in bepaalde situaties uit gevoerd worden Hiervoor heeft C de if-else constructie: if(voorwaarde1){
BEWIJSPATRONEN EN LOGICA
Functies definiëren nDoor combinatie van standaardfuncties fac :: Int  Int fac n = product [1..n] oneven :: Int  Bool oneven n = not (even n) negatief.
Char en String nCharéén letter uord ::Char  Int uchr ::Int  Char nString[Char] uwords :: String  [String] uunwords :: [String]  String ”hoi” ”CKI”
Hogere-ordefuncties nVoeg de elementen van een lijst samen nCombineer twee functies foldr :: (a  b  b)  b  [a]  b [a] (.) :: (b  c)  (a  b)  a.
Reguliere talen nReguliere grammatica: versimpelde Contextvrije grammatica nFinite-state Automaton: andere manier om een taal te beschrijven nReguliere.
Opg.1a: substring } String substring(int a) { int t; for (t=a; t
Logaritmen (heel eventjes)
Imperatief programmeren nProgramma bestaat uit nRunnen is opdrachten gegroepeerd in methoden één voor één uitvoeren te beginnen met main.
Ontleden nNon-deterministisch m.b.v. Parser-combinators nDeterministisch m.b.v. Stack-machine type Parser a b = [a]  [ (b, [a]) ] type Parser a b = [a]
Functioneel Programmeren Daan Leijen. Wat gaan we doen? 3 fundamentele principes van computatie Equationeel redeneren IO-monad GUI's in Haskell (wxHaskell)
Hogere wiskunde Limieten college week 4
Opleiding INFORMATICA Programmeertaal Implementatie Taal ontwerp Vertalen.
Parsing: Top-down en bottom-up
Opgave 1a: void nvoid staat in de header van een methode die geen resultaatwaarde heeft nde aanroep van een void-methode is dan een opdracht i.p.v. een.
1 Datastructuren Een informele inleiding tot Skiplists Onderwerp 13.
ANother Tool for Language Recognition
, 17h30Recursie 1 Inleiding tot recursie Karel Popelier.
Algoritme Inhoud: Definitie algoritme Recursieve algoritmes Opgaven
Taal nEen Alfabet is… een eindige verzameling symbolen nEen Taal is… een deelverzameling van T* bij een bepaald alfabet T nEen Zin is… een element van.
Modelleren van XML element content of Hoe doe je dat? Harrie Passier & Bastiaan Heeren TouW-dag 13 november 2010.
Reguliere talen nReguliere grammatica: versimpelde Contextvrije grammatica nFinite-state Automaton: andere manier om een taal te beschrijven nReguliere.
Overloading My name is overloading, cause we are many.
Samenvatting hst. 3 sec. 1-3 ( ) :: Parser a b  Parser a b  Parser a b ( ) :: Parser a (b  c)  Parser a b  Parser a c ( ) :: (b  c)  Parser a b.
Variabelen en berekeningen
Parsing 1. Situering Contextvrije grammatica’s Predictive (of recursive-descent) parsing LR-parsing Parser generator: Yacc Error recovery 2.
tircms02-p les 1 Operating Systems practicum
PROGRAMMEREN LOGISCH en FUNCTIONEEL Ik zeg wat ik denk!
Functioneel programmeren Een snelle herhaling…. Functie-definitie static int kwad (int x) { return x*x ; } kwad x = x * x Haskell kwad :: Int  Int.
Definitie LL(1) Een grammatica is LL(1) nAls je op grond van het eerstvolgende input-symbool kunt kiezen uit alternatieven Formeel: nAls de lookahead-sets.
AWK A Pattern scanning and processing language made by Aho Weinberger Kernighan and explained by Albert Montijn.
In een reguliere taal… zin yxz S E A B vuwuwxzvuwxzvvuwxzvvvuwxzvvv lengte  n.
Syntaxis 1. Inleiding: Combinaties Combinaties op verschillende niveaus: Lettergrepen als combinaties van fonemen. (College 3,4) Woorden als combinaties.
Definitie Taal van een grammatica nZij grammatica G = ( T, N, R, S ) nde taal van G is { z  T* | S  * z } L(G)
Tentamen vraag 1 nElke reguliere zin is ook contextvrij nElke reguliere taal is ook contextvrij nElke contextvrije grammatica is ook regulier nonsens “regulier”
Java Objectgeoriënteerd Programmeren in Java met BlueJ
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 7 Polymorfie en overerving © 2014, Gertjan Laan, versie 2.
Aangepaste timing nTheorie (16 colleges + 2 deeltentamens) nPraktijk (16 keer, 3 inleveropdrachten) college Tent. 1 Tent. 3 college prakt. 1 prakt. 3 prakt.
Welkom! maandag 16 November 2015 Les B-2.
Na de praktijk, de theorie.. Zoals een gehaktmolen 1.Je stopt er iets in. 2.Je hoeft niet te weten wat er binnenin gebeurt. 3.Het resultaat verschijnt.
Gameprogrammeren: Objecten en geheugen
Recursie in de wiskunde
Gameprogrammeren: Keuzeopdrachten
Gameprogrammeren: Expressies
7.2 Buiten haakjes brengen De ontbinding a2 – b2 = (a – b)(a + b)
Tinpro015b-les 1 C++ voor C-kenners Voor Technische Informatica.
Gameprogrammeren: Herhalingen
Wat gaan we doen? Theorie (14 colleges + 3 deeltentamens)
Opdrachten herhalen public void tekenScherm (object o, PEA pea)
7.2 Buiten haakjes brengen Zo veel mogelijk factoren
Software Development fundamentals
Transcript van de presentatie:

Tentamen vraag 1 Als L en M talen zijn, dan nL  M is gelijk aan { s  t | s  L, t  M } nL M is gelijk aan { s t | s  L, t  M } nL n is gelijk aan { s n | s  L } nonsens je kan strings niet verenigen waar per definitie onwaar het hoeft niet steeds dezelfde string te zijn

en dus toch weer waar (uit tegenspraak volgt alles) Tentamen vraag 2 Zij G een Contextvrije grammatica nAls A  b C regel van G, dan A X  * b C X nAls A X  b C regel van G, dan A X  * b C nAls A  b C X regel van G, dan A  * b C nonsens links van  mag maar één NT waar dit is de definitie van  onwaar, i.h.a. geldt alleen als X epsilon kan produceren

Tentamen vraag 3 nSommige ambigue grammatica’s kunnen worden getransformeerd naar een niet-ambigue grammatica met dezelfde taal nSommige ambigue talen kunnen worden getransformeerd naar een niet-ambigue taal met dezelfde grammatica nEr zijn geen transformaties mogelijk die ambiguiteit verwijderen nonsens een taal bestaat puur uit strings, daarbij kan je niet van ambiguiteit spreken waar dit hebben we op college gedaan voor Java if-statements onwaar

waar vrijwel elke grammatica met recursie doet dit nonsens alfabet is per definitie eindig Tentamen vraag 4 nEen grammatica met een eindig alfabet kan een taal beschrijven met oneindig lange zinnen nEen grammatica met een eindig alfabet kan een taal beschrijven met oneindig veel zinnen nEen grammatica met een oneindig alfabet kan een taal beschrijven met oneindig veel zinnen onwaar (ook nonsens) zinnen zijn per definitie eindig

Tentamen vraag 5a na is het alfabet (niet: inputstring, de te ontleden tekst) nb is het ontleedresultaat, de “boom” (niet: functieresultaat) nResultaat is lijst voor geval van ambiguiteit ook handig bij syntax-fouten (lege lijst) nResultaat bevat tupels om ook de rest-string te kunnen opleveren type Parser a b = [a]  [ (b, [a]) ]

Tentamen vraag 5b X  B;B;B listOf:: Parser a b  Parser a s  Parser a [b] listOf p s = p  many ( s  p ) separator (\s b  b)  (:) 

Abstracte syntax voor Rekenkundige Expressies data Expr =ConInt |VarString |FunString [Expr] |Expr :+: Expr |Expr :–: Expr |Expr :*: Expr |Expr :/: Expr

Tentamen vraag 5c Haskell Type-Expressies data TypeExpr =Prim String |List TypeExpr |Tupel [TypeExpr] |Fun TypeExpr TypeExpr Int | Bool vooral géén haken! Nultupels, twee- èn meertupels vooral géén pijltje! Geval “expressie tussen haakjes” hoeft niet apart in de abstracte syntax

Tentamen vraag 5d Parser voor Type-Expressies expr=token “Int”  token “Bool”  bracketed expr  listOf expr (symbol “,”) Prim  List  parenthesized ( option ( ) [ ] ) f  where f xs = Tupel xs f [x] = x factor expr = listOf factor (token “–>”) f  where f = foldr1 Fun

Tentamen vraag 6a NFA  RG S Z X Y a b a T b b a a b S  aY | aX | bT T  aT | bZ X  bZ Y  aZ | bY Z   S  aY | aX | bT T  aT | b X  b Y  a | bY

Tentamen vraag 6b NFA  DFA S Z X Y a b a T b b a a b S Z XY Y b a T b b a a S Z Y b a T b b a a a YZ b S Z XY Y b a T b b a a a YZ b a b

Tentamen vraag 6c DFA  RE S Z P Y b a T b b a a a Q b a b S = aP + bT T = aT + bZ P = aZ + bQ Q = aZ + bY +  Y = aZ + bY Z =  S = aP + bT T = aT + b P = a + bQ Q = a + bY +  Y = a + bY T = a*b Y = b*a Q = a + bb*a +  P = a + b(a + bb*a +  ) S = a(a+b(a+bb*a+  ))+b(a*b)

Tentamen vraag 6c (altern.) NFA  RE S Z X Y a b a T b b a a b S = ab*a + ab + ba*b S = a(a+b(a+bb*a+  ))+b(a*b)

Tentamen vraag 6e (altern.) RE  NFA S Z a a Y c S = ( a + a*b ) c b T b a

Tentamen vraag 6d (altern.) NFA  RG S Z a a Y c b T b a S  aY | bY | aT T  aT | bY Y  cZ Z  