rij karakters scanner rij tokens parser ontleedboom (filteren separatoren) (niet expliciet geconstrueerd) (+ add. inform.) (contextvrije analyse)

Maat: px
Weergave met pagina beginnen:

Download "rij karakters scanner rij tokens parser ontleedboom (filteren separatoren) (niet expliciet geconstrueerd) (+ add. inform.) (contextvrije analyse)"

Transcriptie

1 scanning and parsing 1/57 rij karakters scanner (filteren separatoren) rij tokens (+ add. inform.) (niet expliciet geconstrueerd) parser (contextvrije analyse) ontleedboom (parse tree) representeert syntactische structuur programma

2 concrete versus abstracte syntax 2/57 concrete syntax if B then S t else S e fi als B dan S t anders S e sla abstracte syntax (boom) (AST ) if 2 (AST(B), AST(S t ), AST(S e )) if 2 B S t S e

3 beschrijving syntactische structuur 3/57 reguliere expressies niet geschikt geen nesting ( n id) n klasse van programma s (n > 0) [ var a n : int read(a n ) ] niet regulier contextvrije grammatica s grotere klasse van talen nesting klasse van programma s (n > 0) [ var a n : int read(a n ); write(a n ) ] niet contextvrij

4 contextvrije ontleding (parsing) 4/57 contextvrije grammatica G acceptor: nondeterministische stapelautomaat (hoge mate van nondeterminisme) algemene ontleedmetode Earley s algoritme tijd: O(N 3 ) geheugen (tabel): O(N 2 G ) eisen aan grammatica/taal deterministische stapelautomaat LALR(1) (meeste programmeertalen) LL(1) (stringenter, eenvoudiger parser)

5 LL(1)-grammatica/taal 5/57 LL(1)-grammatica/taal acceptor: recursive descent parser (stelsel recursieve procedures corresponderend met productieregels) parse tree expliciet opgebouwd (als synthesized attribuut) nog geen contextcondities

6 contextvrije grammatica 6/57 contextvrije grammatica G = (N, Σ, P, S) N eindige, niet lege verzameling (nonterminals) Σ eindige, niet lege verzameling (terminals) N Σ = P N (N Σ), P eindig (productieregels) (A, α) P notatie: A α S N, start symbol vocabulaire grammtica: V = N Σ

7 afleidingen en taal contextvrije grammatica 7/57 G ( leidt af in 1 stap ) α β als G α = δ 1 Cδ 2 en β = δ 1 γδ 2 met δ 1, δ 2 V en C γ P leidt af in 0 of meer stappen G + G leidt af in 1 of meer stappen afleiding (derivation) met lengte k α 0 α 1 α 2 α k verzameling terminal strings afleidbaar uit α V L(α) = {x Σ α x} G taal gegenereerd door contextvrije grammatica G L(G) = L(S) = {x Σ S x} G

8 voorbeeld contextvrije grammatica en afleidingen 8/57 G = ({EXPR, OP}, {p, q, (, ), +, }, P, EXPR) P : EXPR p OP + EXPR q OP EXPR (EXPR OP EXPR) verkorte notatie EXPR p q (EXPR OP EXPR) OP + EXPR (EXPR OP EXPR ) ( EXPR OP (EXPR OP EXPR)) (p OP ( EXPR OP EXPR)) (p OP (q OP EXPR)) (p OP (q EXPR )) (p OP (q p)) (p + (q p)) EXPR ( + ) (p + (q p))

9 voorbeeld linkspreferente afleiding/taal 9/57 linkspreferente afleiding (uniek) EXPR p q (EXPR OP EXPR) OP + taal EXPR ( EXPR OP EXPR) (p OP EXPR) (p + EXPR ) (p + ( EXPR OP EXPR)) (p + (q OP EXPR)) (p + (q EXPR )) (p + (q p)) L(G) = L(S) = {p, q, (p + q), (p q), (p + p), (p p),..., (p + (q p)),...}

10 voorbeeld bouwstenen concrete syntaxboom 10/57 A u 1 u 2... u n A u 1 u 2... u n A ε A ε

11 voorbeeld concrete syntaxboom 11/57 EXPR ( EXPR OP EXPR ) p + ( EXPR OP EXPR ) EXPR p q (EXPR OP EXPR) q p OP +

12 voorbeeld goedgehaakte rijen 12/57 S B S ε B (S) linkspreferente afleiding S B S ( S )S () S () B S ()( S )S ()() S ()() niet links- of rechtspreferente afleiding S B S B B S B(S) S B (S) ( S )(S) ()( S ) ()() dezelfde afleidingsboom S B S ( S ) B S ε ( S ) ε ε

13 dangling else (ambigue grammatica) 13/57 S if b then S else S S if b then S S a if b then if b then a else a 2 afleidingsbomen S S if b then S if b then S else S if b then S else S if b then S a a a a

14 2 afleidingsbomen/geen betekenisverschil 14/57 E p q E + E E E p + q + q E E E + E E + E E + E q p E + E p q q q (p + q) + q p + (q + q) 2 afleidingsbomen, geen verschil in betekenis

15 2 afleidingsbomen/betekenisverschil 15/57 E p q E + E E E p q + q E E E + E E E E E q p E + E p q q q (p q) + q p (q + q) (gebruikelijke prioriteiten) (ongebruikelijk) + p q q p + q q p q q + p q q + 2 afleidingsbomen, wel betekenis -verschil

16 prioriteiten 16/57 hogere prioriteit dan + E:expressie (som van termen) T :term (product van factoren) F :factor F F } {{ } T + F F } {{ } T + + F F } {{ } T } {{ } E T + T + T + T = ((T + T ) + T ) + T F F F F = ((F F ) F ) F E E + T (linksassociativiteit) E T T T F T F F p F q F (E) (doorbreken prioriteiten)

17 prioriteiten (vervolg) 17/57 E E + T T T T F F F p q (E) p q + q wordt ontleed als (p q) + q E E + T BINEXPR T F BINEXPR + VAREXPR q T F q VAREXPR p VAREXPR q F q p

18 syntax / acceptor / parser 18/57 beschrijving syntax programmeertaal: contextvrije grammatica G = (N, Σ, P, S) acceptor voor L(G): beslist voor x Σ of x L(G) (ja/nee-antwoord) parser voor L(G) (nuttiger): beslist voor x Σ of x L(G) en levert, als het antwoord ja is, een afleidingsboom van x S (te construeren) x 1 x 2 x m

19 constructie parser 19/57 1. stapelautomaten contextvrije grammatica G stapelautomaat (LL(0)) (nondeterministisch) 2. dominospel stapelautomaat (LL(1)) ((minder non)determ.) recursive descent parsing procedures implementatie indien determ.

20 syntactisch dominospel (beginsituatie/dominostenen) 20/57 beginsituatie (invoer x 1 x 2... x m ) bovenkant S onderkant boven dominostenen x 1 x 2 x m onder A u 1 u 2... u n flexibel A boven u 1 u 2 u n onder vaste volgorde A ε A ε

21 syntactisch dominospel (spelregels/doel) 21/57 aanleggen stenen goede oriëntatie geen kruisende verbindingen gelijk gelabelde vlakke kanten tegen elkaar doel bord volleggen volgens regels zodat er geen vlakke kanten meer over zijn (indien mogelijk)

22 syntactisch dominospel (voorbeeld) 22/57 S S B S BS ε B (S) invoerstring: ()() B S ε ( ) S

23 syntactisch dominospel (voorbeeld) 22/57 S S B S BS ε B (S) invoerstring: ()() B S ε ( ) S S S B B S S S S B B S S ε S S ε ( ( ) ) ( ε ) ( )

24 strategie dominospel 23/57 geen backtracking ( eenmaal gelegd blijft gelegd ) aansluiten legrichting horizontaal: links rechts legrichting verticaal: van boven naar beneden (top-down, LL-strategie) strategie behandel steeds de meest linkse, vrije, vlakke onderkant

25 LL(1)-strategie 24/57 S S v 1 v 2 v l x 1 x 1 x n x n y 1 y k y m meest linkse vrije vlakke onderkant ( ) v 1 Σ: v1 = y 1 : vlakke kanten samenvoegen v 1 y 1 : afbreken (foutmelding) v 1 N: plaats tegen deze onderkant een domino met een bovenkant gelabeld v 1 welke domino? gebruik k invoersymbolen lookahead LL(k)-strategie (k 1) (hier LL(1)-strategie)

26 uitgebreide grammatica 25/57 nieuwe symbolen S en uitgebreide grammatica G G = (N {S }, Σ { }, P {S S }, S ) S S S S v 1 v 2 v l x 1 x 1 x n x n y 1 y k y m meest linkse vrije vlakke onderkant ( )

27 dominoselectie 26/57 S Aβ x y aaneengesloten stuk S S xaβ rij vrije onderkanten v 1 v 2 v l = Aβ rij vrije bovenkanten y 1 y 2 y m = y Aβ αβ spelen A α spel is te voltooien y noodzakelijke voorwaarde: el 1 (y ) is 1e element van een eindproductie van αβ criterium dominoselectie: kies een domino A α zodat el 1 (y ) 1e element van een eindproductie van αβ is (β te specifiek)

28 lookaheadset/selectiecriterium domino 27/57 S S xaβ xαβ xy strings x en β specifiek voor deze afleiding lookaheadset productieregel A α LA(A α) = {a Σ { } ( w, γ, δ : w Σ γ, aδ V : S S waγ wαγ waδ)} selectiecriterium el 1 (y ) LA(A α)

29 berekening lookaheadsets 28/57 S S waγ wαγ waδ α ε? First(α) = {a Σ { } ( β : β V : α aβ)} Follow(A) = {a Σ { } ( α, β : α, β V : S αaaβ)} LA(A α) { = Follow(A) als α ε First(α) als (α ε) lookaheadsets eenvoudige grammatica s kunnen bepalen

30 transitive closure / Warshall s algorithm (1) 29/57 R : V V B binary relation on V U V xr + y there is a non-empty directed path from x to y with all intermediate nodes on the path in V (x, y V ) xr U y there is a non-empty directed path from x to y with all intermediate nodes on the path in U (x, y V ) R = R R V = R +

31 transitive closure / Warshall s algorithm (2) 30/57 v V \ U xr U+{v} y xr U y (xr U v vr U y) xr U+{v} v {property R U+{v} } xr U v (xr U v vr U v) {absorption} xr U v vr U+{v} y vr U y

32 transitive closure / Warshall s algorithm (3) 31/57 [ var r : array(v V )of bool; U : set of V U : = ; for x, y : x, y V do r[x, y] : = xry od; { invariant: U V r = R U } do U V [ var v : V ; v : v V \ U; for x, y : x, y V do r[x, y] : = r[x, y] (r[x, v] r[v, y]) od; { r = R U+{v} } U : = U + {v} ] od { r = R V = R + } ]

33 transitive closure / Warshall s algorithm (4) 32/57 f R (x) = {y V xry} (x V ) f RU+{v} (x) { } = definition fru+{v} {y V xr U+{v} y} = {property R U+{v} } {y V xr U y (xr U v vr U y)} = {set calculus} {y V xr U y} {y V xr U v vr U y} = {definition f RU } f RU (x) {y V (v f RU (x)) vr U y} = {set calculus, definition f RU } { fru (v) if v f f RU (x) RU (x) if v / f RU (x) f RU+{v} (v) = f RU (v)

34 transitive closure / Warshall s algorithm (5) 33/57 [ var fr : array(v )of set of V for x : x V do fr[x] : = ; for y : v V do if xry fr[x] : = fr[x] {y} [] (xry) skip fi od od; { fr = f R } for v : v V do for x : x V do if v fr[x] fr[x] : = fr[x] fr[v] [] v / fr[x] skip fi od od { fr = f R + } ]

35 First as reflexive and transitive closure 34/57 for all x, y V xfy α, β : α, β V : x αyβ P α ε xf y β : β V : x yβ for all x V First 1 (x) = {y V α, β : α, β V : x αyβ P α ε } First(x) = {y V β : β V : x yβ }

36 voorbeeld lookaheadsets (1) 35/57 S S S BS ε B (S) FOLLOW (S) = { ), } symbool ) uit regel B (S) symbool uit regel S S regel S BS levert geen bijdrage LA(S S ) = First(S ) = { (, } LA(S BS) = First(BS) = { ( } (BS ε) LA(S ε) = Follow(S) = { ), } LA(B (S)) = First( (S) ) = { ( } LA(S BS) en LA(S ε) zijn disjunct

37 voorbeeld lookaheadsets (2) 36/57 S E E E + T E T T T F T F F p F q F (E) LA(S E ) = { p, q, ( } LA(E E + T ) = { p, q, ( } LA(E T ) = { p, q, ( } laatste 2 lookaheadsets zijn niet disjunct

38 LL(1)-strategie / LL(1)-voorwaarde 37/57 rij vrije onderkanten v 1 v 2 v l rij vrije bovenkanten y 1 y 2 y m meest linkse vrije onderkant v 1 v1 Σ v 1 = y 1 : voeg samen v 1 = A N: speel A α met y 1 LA(A α) v 1 = = y 1 : voeg samen en klaar anders blokkade blokkade invoer / L(G) verkeerde domino gespeeld geen verkeerde keuze te spelen domino LL(1)-voorwaarde voor alle A α P, A β P en α β geldt LA(A α) LA(A β) =

39 implementatie LL(1)-strategie 38/57 stelsel recursieve procedures symbool X V = N Σ procedure P X construeert een parse tree met wortel X voor een prefix van de resterende invoer X X w (NB als X Σ, dan X = w) w

40 tokens en terminals 39/57 STAT ifsym EXPR thensym STATS elsesym STATS fisym STAT if EXPR then STATS else STATS fi STAT idsym becomessym EXPR STAT ID := EXPR ID n voor alle n L(e idsym ) ID pseudoterminal

41 recursive descent parsing procedures (terminals) 40/57 a Σ proc P a = (if sym = a voeg a en sym samen ;NEXTSYM fi ) huidige token sym: meest linkse vrije bovenkant meest recente aanroep parsing procedure: meest linkse vrije onderkant

42 recursive descent parsing procedures (nonterminals) 41/57 A N met productieregels A α 1, A α 2,..., A α k proc P A = (if sym LA(A α 1 ) speel A α 1 ; Q α1 [] sym LA(A α 2 ) speel A α 2 ; Q α2. [] sym LA(A α k ) speel A α k ; Q αk fi ) waarin Q v1 v 2 v n = P v1 ; P v2 ; ; P vn

43 analyse van invoerstring x 42/57 NEXTSYM { sym = el 1 (x ) } ; speel S S ;P S ;if sym = voeg en fi samen (NB geen procedure P : na volgen geen symbolen meer) abortie (blokkade): x / L(G) beëindiging: x L(G) parse tree: - expliciet construeren (als uitvoerparameter parsing procedures) - stapel actieve recursieve procedure-aanroepen wortelpad in parse tree

44 voorbeeld recursive descent parsing procedures (1) 43/57 lookaheadset S S {a, b, c} S asa {a} S bsb {b} S cx {c} X ε {a, b, } X cx {c} proc P S = (if sym {a} P a ; P S ; P a [] sym {b} P b ; P S ; P b [] sym {c} P c ; P X fi) proc P X = (if sym {c} P c ; P X [] sym {a, b, } skip fi) proc P a = (if sym = a NEXTSYM fi) proc P b = (if sym = b NEXTSYM fi) proc P c = (if sym = c NEXTSYM fi)

45 voorbeeld recursive descent parsing procedures (2) 44/57 lookaheadset S S {(, } S BS {(} S ε {), } B (S) {(} proc P S = (if sym {(} P B ; P S [] sym {), } skip fi) proc P B = (if sym {(} P ( ; P S ; P ) fi) proc P ( = (if sym = ( NEXTSYM fi) proc P ) = (if sym =) NEXTSYM fi)

46 vereenvoudiging recursive descent parsing procedures (1) 45/57 proc P a = (if sym = a NEXTSYM fi) (a Σ) TERM(a) met proc TERM = ( a : Σ if sym = a NEXTSYM fi) A α enige regel met A in linkerlid proc P A = (if sym LA(A α) Q α fi) proc P A = (Q α )

47 vereenvoudiging recursive descent parsing procedures (2) 46/57 A α 1,..., A α k, A ε alle regels met A in linkerlid proc P A = (if sym LA(A α 1 ) Q α1 [] sym LA(A α 2 ) Q α2. [] sym LA(A α k ) Q αk [] sym / ( i : 1 i k : LA(A α i )) skip fi)

48 staartrecursie 47/57 A βa A ε LA(A βa) = LA(A ε) = Follow(A) First(β) (β ε) First(β) First(A) Follow(A) LL(1)-conditie leidt tot de eisen (β ε) First(β) Follow(A) = proc P A = (if sym First(β) Q β ; P A [] sym / First(β) skip fi) equivalente procedure (β bevat geen A) proc P A = (do sym First(β) Q β od) andere notatie productieregels A {β} β ε

49 ambigu 48/57 STATS STAT STATS STATS; STATS STATS STATS STATS STATS STATS STATS STATS STATS STATS STATS STAT ; STAT ; STAT STAT ; STAT ; STAT

50 niet ambigu, niet LL(1) 49/57 STATS STATS ; STAT STATS STAT STATS STATS; STAT STATS ; STAT ; STAT STATS STAT ; STATS STATS STAT STATS STAT ; STATS STAT ; STATS STAT ;

51 expressies en prioriteiten 50/57 ambigu E E + E E E E 2 afleidingsbomen E (E) E 3 niet ambigu (prioriteiten) E T (E T {+T }) E E + T T F (T F { F }) T T F F (E) F 3 algemeen (prioriteiten) E i E i+1 (1 i < i MAX ) E i E i OP i E i+1 E imax ID NUMBER (E 1 )

52 factoriseren naar LL(1)-vorm 51/57 A αβ LA(A αβ) = First(αβ)... A αγ LA(A αβ) = First(αγ)... factoriseren A αa A β A γ nieuwe LL(1)-conditie (α ε) niet disjunct als First(α) LA(A β) LA(A γ) =

53 voorbeeld factoriseren 52/57 STATS STAT α = STAT β = ε STATS STAT ; STATS γ =; STATS STATS STAT RSTATS First(STAT ) RSTATS ε Follow(STATS) RSTATS ; STATS { semicolonsym } LL(1)-conditie: {semicolonsym} Follow(STATS) = alternatief RSTATS ; STAT RSTATS eenvoudiger: STATS STAT { ; STAT } proc P STATS = (P STAT ; do sym = semicolonsym NEXTSYM; P STAT od)

54 eliminatie linksrecursie (1) 53/57 A γ LA(A γ) = First(γ)... A Aβ LA(A Aβ) = First(Aβ)... First(γ) First(Aβ) niet disjunt als First(γ) γββ A A β A γ β (γβ)β (linksassociatief)

55 eliminatie linksrecursie (2) 54/57 A γa A γa A γ{β} A ε A {β} A βa LL(1)-conditie: (β ε) First(β) Follow(A ) = (Follow(A ) = Follow(A)) γββ A γ A γ(ββ) β A β A ε

56 eliminatie linksrecursie (3) 55/57 A t γ A γ γ A t β A β A β A γ t β A β t : A A β β A γ ε

57 array variabelen (1) 56/57 a[i + j][2 k] interpretatie: (a[i + j]) [2 k] VAR ID VAR VAR [ EXPR ] LA(VAR ID) = {idsym} LA(VAR VAR [ EXPR ]) = {idsym} LL(1)-vorm VAR ID RVAR RVAR ε RVAR [ EXPR ] RVAR LA(RVAR ε) = Follow(VAR) LA(RVAR [ EXPR ] RVAR) = {lsqbrsym} LL(1)-conditie: lsqbrsym / Follow(VAR)

58 array variabelen (2) 57/57 compacter VAR ID { [ EXPR ] } P VAR = (P ID ; do sym = lsqbrsym NEXTSYM; P EXPR ; TERM(rsqbrsym) od)

Tentamen Compilers (2M220) 19 maart 2002, 9.00u-12.00u

Tentamen Compilers (2M220) 19 maart 2002, 9.00u-12.00u 12/k Tentamen Compilers (2M220) 19 maart 2002, 9.00u-12.00u 1. Beschouw de volgende deelverzameling van de ASCII-karakters V = { 0, 1,..., 9, A, B,..., Y, Z, a, b,..., y, z } De karakters in V staan vermeld

Nadere informatie

Inhoud eindtoets. Eindtoets. Introductie 2. Opgaven 3. Terugkoppeling 6

Inhoud eindtoets. Eindtoets. Introductie 2. Opgaven 3. Terugkoppeling 6 Inhoud eindtoets Eindtoets Introductie 2 Opgaven 3 Terugkoppeling 6 1 Formele talen en automaten Eindtoets I N T R O D U C T I E Deze eindtoets is bedoeld als voorbereiding op het tentamen van de cursus

Nadere informatie

Tentamen Compilers (2IC25) 21 juni 2010, 9.00u-12.00u

Tentamen Compilers (2IC25) 21 juni 2010, 9.00u-12.00u Tentamen Compilers (2IC25) 21 juni 2010, 9.00u-12.00u 1. Beschouw de reguliere expressie e = (a (a b) ) c (Er mag geen materiaal worden geraadpleegd.) (De TL-interpretator is als bijlage toegevoegd.) Faculteit

Nadere informatie

Samenvatting hoorcolleges Vertalerbouw

Samenvatting hoorcolleges Vertalerbouw Samenvatting hoorcolleges Vertalerbouw J.H. Jongejan 7 juni 2010 LaTeX van Hedde Bosman en Jan Jongejan. 1 Inhoudsopgave 1 Voorbeeld van een vertaling 3 1.1 Brontaal (source language)......................................

Nadere informatie

Compilers (2IC25) docent: G. Zwaan, HG 5.41, tel. ( )4291, webpagina:

Compilers (2IC25) docent: G. Zwaan, HG 5.41, tel. ( )4291,   webpagina: Compilers (2IC25) docent: G. Zwaan, HG 5.41, tel. (040 247)4291, e-mail: G.Zwaan@tue.nl webpagina: http://www.win.tue.nl/~wsinswan/compilers/ compileren compilatie vertalen (een werk) bijeenbrengen door

Nadere informatie

Automaten & Complexiteit (X )

Automaten & Complexiteit (X ) Automaten & Complexiteit (X 401049) Beschrijven van reguliere talen Jeroen Keiren j.j.a.keiren@gmail.com VU University Amsterdam 5 Februari 2015 Talen Vorig college: Talen als verzamelingen Eindige automaten:

Nadere informatie

c, X/X a, c/λ a, X/aX b, X/X

c, X/X a, c/λ a, X/aX b, X/X ANTWOORDEN tentamen FUNDAMENTELE INFORMATICA 3 vrijdag 25 januari 2008, 10.00-13.00 uur Opgave 1 L = {x {a,b,c} n a (x) n b (x)} {x {a,b,c} n a (x) n c (x)}. a. Een stapelautomaat die L accepteert: Λ,

Nadere informatie

Het omzetten van reguliere expressies naar eindige automaten, zie de vakken Fundamentele Informatica 1 en 2.

Het omzetten van reguliere expressies naar eindige automaten, zie de vakken Fundamentele Informatica 1 en 2. Datastructuren 2016 Programmeeropdracht 3: Patroonherkenning Deadlines. Woensdag 23 november 23:59, resp. vrijdag 9 december 23:59. Inleiding. Deze opdracht is gebaseerd op Hoofdstuk 13.1.7 in het boek

Nadere informatie

Logische Complexiteit Hoorcollege 4

Logische Complexiteit Hoorcollege 4 Logische Complexiteit Hoorcollege 4 Jacob Vosmaer Bachelor CKI, Universiteit Utrecht 8 februari 2011 Contextvrije grammatica s Inleiding + voorbeeld Definities Meer voorbeelden Ambiguiteit Chomsky-normaalvormen

Nadere informatie

Reguliere Expressies

Reguliere Expressies Reguliere Expressies Een reguliere expressie (regexp, regex, regxp) is een string (een woord) die, volgens bepaalde syntaxregels, een verzameling strings (een taal) beschrijft Reguliere expressies worden

Nadere informatie

Automaten en Berekenbaarheid 2016 Oplossingen #4

Automaten en Berekenbaarheid 2016 Oplossingen #4 Automaten en Berekenbaarheid 2016 Oplossingen #4 28 oktober 2016 Vraag 1: Toon aan dat de klasse van context vrije talen gesloten is onder concatenatie en ster. Antwoord Meerdere manieren zijn mogelijk:

Nadere informatie

Taaltechnologie. Januari/februari Inhoud

Taaltechnologie. Januari/februari Inhoud Taaltechnologie Januari/februari 2002 1 Finite state............................................... 4 1.1 Deterministic finite state automata.................... 4 1.2 Non-deterministic finite state automata................

Nadere informatie

Deeltentamen Grammatica s en ontleden 22 december 2005

Deeltentamen Grammatica s en ontleden 22 december 2005 Tentamen Grammatica s en ontleden 22 december 2005 1 Deeltentamen Grammatica s en ontleden 22 december 2005 Let op: opgave 1 t/m 4 tellen voor (slechts) 5 punten mee, opgave 5 voor maar liefst 50 punten,

Nadere informatie

compileren & interpreteren - compileren: vertalen (omzetten) - interpreteren: vertolken

compileren & interpreteren - compileren: vertalen (omzetten) - interpreteren: vertolken compileren & interpreteren - compileren: vertalen (omzetten) - interpreteren: vertolken - belangrijkste punten: - ontleden van de programmatekst - bijhouden van de datastructuren Data Structuren en Algoritmen

Nadere informatie

Samenvatting hst. 3 sec. 1-3

Samenvatting hst. 3 sec. 1-3 Samenvatting hst. 3 sec. 1-3 infixr 4 (< >) :: Parser a b! Parser a b! Parser a b (p < > q) xs = p xs ++ q xs infixl 6 () :: Parser a (b!c)! Parser a b! Parser a c (p q) xs = [(f b,zs) (f,ys)"p

Nadere informatie

De klasse van recursief opsombare talen is gesloten onder en. Dit bewijzen we met behulp van een recursieve opsomming

De klasse van recursief opsombare talen is gesloten onder en. Dit bewijzen we met behulp van een recursieve opsomming Recursieve talen De klasse van recursief opsombare talen is gesloten onder en. Echter, het is niet zo dat L recursief opsombaar is voor alle recursief opsombare talen L. Dit bewijzen we met behulp van

Nadere informatie

TENTAMEN Basismodellen in de Informatica VOORBEELDUITWERKING

TENTAMEN Basismodellen in de Informatica VOORBEELDUITWERKING TENTAMEN Basismodellen in de Informatica vakcode: 211180 datum: 2 juli 2009 tijd: 9:00 12:30 uur VOORBEELDUITWERKING Algemeen Bij dit tentamen mag gebruik worden gemaakt van het boek van Sudkamp, van de

Nadere informatie

colleges recursieve datastructuren college 9 prioriteit van operatoren prioriteit in recursive descent parser

colleges recursieve datastructuren college 9 prioriteit van operatoren prioriteit in recursive descent parser colleges recursieve datastructuren college 9 interpreteren: waarde van bomen bepalen transformeren: vorm van bomen veranderen parseren herkennen van expressie in de tekst herkennen van functies onderwerp

Nadere informatie

Talen & Automaten. Wim Hesselink Piter Dykstra Opleidingsinstituut Informatica en Cognitie 9 mei 2008

Talen & Automaten. Wim Hesselink Piter Dykstra Opleidingsinstituut Informatica en Cognitie   9 mei 2008 Talen & Automaten Wim Hesselink Piter Dykstra Opleidingsinstituut Informatica en Cognitie www.cs.rug.nl/~wim 9 mei 2008 Talen & automaten Week 1: Inleiding Dit college Talen Automaten Berekenbaarheid Weekoverzicht

Nadere informatie

Recursive-Descent Parsing

Recursive-Descent Parsing Week 2 Recursive-Descent Parsing PRACTICUM Tijdens dit practicum wordt een eenvoudige one-pass recursive-descent vertaler ontwikkeld in Java. We volgen daarbij hoofdstuk 4 van Watt & Brown. De te ontwikkelen

Nadere informatie

Zevende college algoritmiek. 23/24 maart Verdeel en Heers

Zevende college algoritmiek. 23/24 maart Verdeel en Heers Zevende college algoritmiek 23/24 maart 2017 Verdeel en Heers 1 Algoritmiek 2017/Backtracking Tweede Programmeeropdracht 0 1 2 3 0 1 2 3 4 1 2 3 4 5 2 Algoritmiek 2017/Backtracking Tweede Programmeeropdracht

Nadere informatie

Zevende college Algoritmiek. 6 april Verdeel en Heers

Zevende college Algoritmiek. 6 april Verdeel en Heers Zevende college Algoritmiek 6 april 2018 Verdeel en Heers 1 Algoritmiek 2018/Backtracking Programmeeropdracht 2 Puzzel 2: D O N A L D G E R A L D + R O B E R T Elke letter stelt een cijfer voor (0,1,...,9)

Nadere informatie

Automaten. Informatica, UvA. Yde Venema

Automaten. Informatica, UvA. Yde Venema Automaten Informatica, UvA Yde Venema i Inhoud Inleiding 1 1 Formele talen en reguliere expressies 2 1.1 Formele talen.................................... 2 1.2 Reguliere expressies................................

Nadere informatie

Uitwerking tentamen Algoritmiek 9 juni :00 17:00

Uitwerking tentamen Algoritmiek 9 juni :00 17:00 Uitwerking tentamen Algoritmiek 9 juni 2015 14:00 17:00 1. Clobber a. Toestanden: m x n bord met in elk hokje een O, een X of een -. Hierbij is het aantal O gelijk aan het aantal X of er is hooguit één

Nadere informatie

Programmeermethoden. Recursie. week 11: november kosterswa/pm/

Programmeermethoden. Recursie. week 11: november kosterswa/pm/ Programmeermethoden Recursie week 11: 21 25 november 2016 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Pointers Derde programmeeropgave 1 Het spel Gomoku programmeren we als volgt: week 1: pointerpracticum,

Nadere informatie

Vierde college complexiteit. 26 februari Beslissingsbomen en selectie Toernooimethode Adversary argument

Vierde college complexiteit. 26 februari Beslissingsbomen en selectie Toernooimethode Adversary argument Complexiteit 2019/04 College 4 Vierde college complexiteit 26 februari 2019 Beslissingsbomen en selectie Toernooimethode Adversary argument 1 Complexiteit 2019/04 Zoeken: samengevat Ongeordend lineair

Nadere informatie

start -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c

start -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c Een Minimaal Formalisme om te Programmeren We hebben gezien dat Turing machines beschouwd kunnen worden als universele computers. D.w.z. dat iedere berekening met natuurlijke getallen die met een computer

Nadere informatie

p. 1/39 Voorbeeld: R = {R 1 : if same(x,a) and same(y,b) then R 2 : if same(x,b) then add(u,f) fi, R 3 : if same(z,c) and same(w,d) then

p. 1/39 Voorbeeld: R = {R 1 : if same(x,a) and same(y,b) then R 2 : if same(x,b) then add(u,f) fi, R 3 : if same(z,c) and same(w,d) then Bottom-up Inferentie Data-gestuurde inferentievorm: Vergelijking Top-down inferentie: selectie regels match (sub)doel conclusie Uiteindelijke Feiten Doelen Initiële feitenverzameling: F = {A} Regelverzameling:

Nadere informatie

Kennisrepresentatie & Redeneren. Piter Dykstra Instituut voor Informatica en Cognitie

Kennisrepresentatie & Redeneren. Piter Dykstra Instituut voor Informatica en Cognitie Kennisrepresentatie & Redeneren Piter Dykstra Instituut voor Informatica en Cognitie www.math.rug.nl/~piter piter@math.rug.nl 8 oktober 2007 GRAMMATICA S Kennisrepresentatie & Redeneren Week6: Grammatica

Nadere informatie

Zevende college complexiteit. 17 maart Ondergrens sorteren, Quicksort

Zevende college complexiteit. 17 maart Ondergrens sorteren, Quicksort College 7 Zevende college complexiteit 17 maart 2008 Ondergrens sorteren, Quicksort 1 Sorteren We bekijken sorteeralgoritmen gebaseerd op het doen van vergelijkingen van de vorm A[i] < A[j]. Aannames:

Nadere informatie

CLIPS en het Rete-algoritme. Productieregels in CLIPS. Feiten. Productiesysteem (voorbeeld)

CLIPS en het Rete-algoritme. Productieregels in CLIPS. Feiten. Productiesysteem (voorbeeld) CLIPS en het Rete-algoritme CLIPS: acroniem voor C Language Integrated Production System Verwant aan OPS5 (Carnegie-Mellon University), en gebaseerd op ART (Artificial Reasoning Tool) Ontwikkeld door Lyndon

Nadere informatie

Natuurlijke-Taalverwerking

Natuurlijke-Taalverwerking Natuurlijke-Taalverwerking Week 5 Parsing Overzicht DCG s en links-recursie Shift-reduce parsing Chart parsing Generatie Links-recursie?- voorouder(geert,youri). ouder(geert,jan). ouder(jan,youri). voorouder(x,y)

Nadere informatie

Constraint satisfaction. Computationele Intelligentie. Voorbeelden. Een constraint satisfaction probleem. Constraint Satisfaction

Constraint satisfaction. Computationele Intelligentie. Voorbeelden. Een constraint satisfaction probleem. Constraint Satisfaction Constraint satisfaction Computationele Intelligentie Constraint Satisfaction Een constraint satisfaction probleem (CSP) bestaat uit: een verzameling variabelen; een domein van waarden voor elke variabele;

Nadere informatie

Programmeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/

Programmeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/ Programmeermethoden Recursie Walter Kosters week 11: 20 24 november 2017 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Vierde programmeeropgave 1 De Grote getallen programmeren we als volgt: week 1: pointerpracticum,

Nadere informatie

Recursion. Introductie 37. Leerkern 37. Terugkoppeling 40. Uitwerking van de opgaven 40

Recursion. Introductie 37. Leerkern 37. Terugkoppeling 40. Uitwerking van de opgaven 40 Recursion Introductie 37 Leerkern 37 5.1 Foundations of recursion 37 5.2 Recursive analysis 37 5.3 Applications of recursion 38 Terugkoppeling 40 Uitwerking van de opgaven 40 Hoofdstuk 5 Recursion I N

Nadere informatie

Opdracht 1 Topics on Parsing and Formal Languages - fall 2010

Opdracht 1 Topics on Parsing and Formal Languages - fall 2010 Opdracht 1 Topics on Parsing and Formal Languages - fall 2010 Rick van der Zwet 8 december 2010 Samenvatting Dit schrijven zal uitwerkingen van opgaven behandelen uit het boek [JS2009]

Nadere informatie

Opdracht 1 Topics on Parsing and Formal Languages - fall 2010

Opdracht 1 Topics on Parsing and Formal Languages - fall 2010 Opdracht 1 Topics on Parsing and Formal Languages - fall 2010 Rick van der Zwet 13 november 2010 Samenvatting Dit schrijven zal uitwerkingen van opgaven behandelen uit het boek [JS2009]

Nadere informatie

Compilers.

Compilers. Compilers joost.vennekens@denayer.wenk.be Job van een compiler Job van een compiler 68: newarray int int grens = min + (max - min) / 2; int[] kleiner = new int[n]; int[] groter = new int[n]; int k = 0;

Nadere informatie

Uitwerking tentamen Algoritmiek 10 juni :00 13:00

Uitwerking tentamen Algoritmiek 10 juni :00 13:00 Uitwerking tentamen Algoritmiek 10 juni 2014 10:00 13:00 1. Dominono s a. Toestanden: n x n bord met in elk hokje een O, een X of een -. Hierbij is het aantal X gelijk aan het aantal O of hooguit één hoger.

Nadere informatie

Derde college complexiteit. 7 februari Zoeken

Derde college complexiteit. 7 februari Zoeken College 3 Derde college complexiteit 7 februari 2017 Recurrente Betrekkingen Zoeken 1 Recurrente betrekkingen -1- Rij van Fibonacci: 0,1,1,2,3,5,8,13,21,... Vanaf het derde element: som van de voorgaande

Nadere informatie

software constructie recursieve datastructuren college 15 5 stappen plan ontwerpen de software bestaat uiteindelijk uit datatypen functies

software constructie recursieve datastructuren college 15 5 stappen plan ontwerpen de software bestaat uiteindelijk uit datatypen functies software constructie recursieve datastructuren college 15 software engineering highlights 1 de software bestaat uiteindelijk uit datatypen functies verbindingen geven gebruik aan main is de top van het

Nadere informatie

Uitgebreide uitwerking tentamen Algoritmiek Dinsdag 2 juni 2009, uur

Uitgebreide uitwerking tentamen Algoritmiek Dinsdag 2 juni 2009, uur Uitgebreide uitwerking tentamen Algoritmiek Dinsdag 2 juni 2009, 10.00 13.00 uur Opgave 1. a. Een toestand wordt bepaald door: het aantal lucifers op tafel, het aantal lucifers in het bezit van Romeo,

Nadere informatie

recursie Hoofdstuk 5 Studeeraanwijzingen De studielast van deze leereenheid bedraagt circa 6 uur. Terminologie

recursie Hoofdstuk 5 Studeeraanwijzingen De studielast van deze leereenheid bedraagt circa 6 uur. Terminologie Hoofdstuk 5 Recursion I N T R O D U C T I E Veel methoden die we op een datastructuur aan kunnen roepen, zullen op een recursieve wijze geïmplementeerd worden. Recursie is een techniek waarbij een vraagstuk

Nadere informatie

Vijfde college complexiteit. 21 februari Selectie Toernooimethode Adversary argument

Vijfde college complexiteit. 21 februari Selectie Toernooimethode Adversary argument Complexiteit 2017/05 College 5 Vijfde college complexiteit 21 februari 2017 Selectie Toernooimethode Adversary argument 1 Complexiteit 2017/05 Opgave 28 Gegeven twee oplopend gesorteerde even lange rijen

Nadere informatie

Vierde college algoritmiek. 2 maart Toestand-actie-ruimte Exhaustive Search

Vierde college algoritmiek. 2 maart Toestand-actie-ruimte Exhaustive Search Algoritmiek 2018/Toestand-actie-ruimte Vierde college algoritmiek 2 maart 2018 Toestand-actie-ruimte Exhaustive Search 1 Algoritmiek 2018/Toestand-actie-ruimte Kannen Voorbeeld 4: Kannenprobleem We hebben

Nadere informatie

Zevende college complexiteit. 7 maart Mergesort, Ondergrens sorteren (Quicksort)

Zevende college complexiteit. 7 maart Mergesort, Ondergrens sorteren (Quicksort) College 7 Zevende college complexiteit 7 maart 2017 Mergesort, Ondergrens sorteren (Quicksort) 1 Inversies Definitie: een inversie van de permutatie A[1],A[2],...,A[n] is een paar (A[i],A[j]) waarvoor

Nadere informatie

Zevende college algoritmiek. 24 maart Verdeel en Heers

Zevende college algoritmiek. 24 maart Verdeel en Heers Zevende college algoritmiek 24 maart 2016 Verdeel en Heers 1 Verdeel en heers 1 Divide and Conquer 1. Verdeel een instantie van het probleem in twee (of meer) kleinere instanties 2. Los de kleinere instanties

Nadere informatie

Studentnummer: Inleiding Taalkunde 2013 Eindtoets Zet op ieder vel je naam en studentnummer!

Studentnummer: Inleiding Taalkunde 2013 Eindtoets Zet op ieder vel je naam en studentnummer! Inleiding Taalkunde 2013 Eindtoets Zet op ieder vel je naam en studentnummer! Dit tentamen bestaat uit 7 vragen. Lees elke vraag goed, en gebruik steeds de witte ruimte op de pagina, of de achterkant van

Nadere informatie

Achtste college algoritmiek. 12 april Verdeel en Heers. Dynamisch Programmeren

Achtste college algoritmiek. 12 april Verdeel en Heers. Dynamisch Programmeren Achtste college algoritmiek 12 april 2019 Verdeel en Heers Dynamisch Programmeren 1 Uit college 7: Partitie Partitie Partitie(A[l r]) :: // partitioneert een (sub)array, met A[l] als spil (pivot) p :=

Nadere informatie

Tentamen TI2310 Automaten en Talen. 19 april 2012, uur

Tentamen TI2310 Automaten en Talen. 19 april 2012, uur TECHNISCHE UNIVERSITEIT DELFT Faculteit Elektrotechniek, Wiskunde en Informatica TP Delft Tentamen TI2310 Automaten en Talen 19 april 2012, 14.00-17.00 uur Totaal aantal pagina's (exclusief dit titelblad):

Nadere informatie

Formeel Denken 2014 Uitwerkingen Tentamen

Formeel Denken 2014 Uitwerkingen Tentamen Formeel Denken 2014 Uitwerkingen Tentamen (29/01/15) 1. Benader de betekenis van de volgende Nederlandse zin zo goed mogelijk (6 punten) door een formule van de propositielogica: Als het regent word ik

Nadere informatie

Automaten & Complexiteit (X )

Automaten & Complexiteit (X ) Automaten & Complexiteit (X 401049) Inleiding Jeroen Keiren j.j.a.keiren@vu.nl VU University Amsterdam Materiaal Peter Linz An Introduction to Formal Languages and Automata (5th edition) Jones and Bartlett

Nadere informatie

Vierde college complexiteit. 16 februari Beslissingsbomen en selectie

Vierde college complexiteit. 16 februari Beslissingsbomen en selectie Complexiteit 2016/04 College 4 Vierde college complexiteit 16 februari 2016 Beslissingsbomen en selectie 1 Complexiteit 2016/04 Zoeken: samengevat Ongeordend lineair zoeken: Θ(n) sleutelvergelijkingen

Nadere informatie

Datastructuren: stapels, rijen en binaire bomen

Datastructuren: stapels, rijen en binaire bomen Programmeermethoden Datastructuren: stapels, rijen en binaire bomen week 12: 23 27 november 2015 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Inleiding In de informatica worden Abstracte DataTypen (ADT s)

Nadere informatie

IN2505 II Berekenbaarheidstheorie Tentamen Maandag 2 juli 2007, uur

IN2505 II Berekenbaarheidstheorie Tentamen Maandag 2 juli 2007, uur TECHNISCHE UNIVERSITEIT DELFT Faculteit Elektrotechniek, Wiskunde en Informatica Mekelweg 4 2628 CD Delft IN2505 II Berekenbaarheidstheorie Tentamen Maandag 2 juli 2007, 14.00-17.00 uur BELANGRIJK Beschikbare

Nadere informatie

Opgaven bij Hoofdstuk 3 - Productiesystemen

Opgaven bij Hoofdstuk 3 - Productiesystemen Opgaven bij Hoofdstuk 3 - Productiesystemen Top-down inferentie In de opgaven in deze paragraaf over top-down inferentie wordt aangenomen dat de feitenverzameling alleen feiten bevat die als getraceerd

Nadere informatie

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk. HOOFDSTUK 3 3.1 Stapsgewijs programmeren In de vorige hoofdstukken zijn programmeertalen beschreven die imperatief zijn. is het stapsgewijs in code omschrijven wat een programma moet doen, net als een

Nadere informatie

7 Omzetten van Recursieve naar Iteratieve Algoritmen

7 Omzetten van Recursieve naar Iteratieve Algoritmen 7 Omzetten van Recursieve naar Iteratieve Algoritmen Het lijkt mogelijk om elke oplossings-algoritme, die vaak in eerste instantie recursief geformuleerd werd, om te zetten in een iteratieve algoritme

Nadere informatie

Discrete Structuren. Piter Dykstra Sietse Achterop Opleidingsinstituut Informatica en Cognitie

Discrete Structuren. Piter Dykstra Sietse Achterop Opleidingsinstituut Informatica en Cognitie Discrete Structuren Piter Dykstra Sietse Achterop Opleidingsinstituut Informatica en Cognitie www.math.rug.nl/~piter piter@math.rug.nl 3 maart 2008 GRAFEN & BOMEN Paragrafen 6.1-6.4 Discrete Structuren

Nadere informatie

MMI. The Digital World 4. Peter van Kranenburg

MMI. The Digital World 4. Peter van Kranenburg MMI The Digital World 4 Peter van Kranenburg Intro Vandaag: Terugblik vorige week Leren programmeren Algoritmes Terugblik Hogere-orde programmeertalen maken het schrijven van code eenvoudiger. Je hoeft

Nadere informatie

Tweede college algoritmiek. 12 februari Grafen en bomen

Tweede college algoritmiek. 12 februari Grafen en bomen College 2 Tweede college algoritmiek 12 februari 2016 Grafen en bomen 1 Grafen (herhaling) Een graaf G wordt gedefinieerd als een paar (V,E), waarbij V een eindige verzameling is van knopen (vertices)

Nadere informatie

3 De stelling van Kleene

3 De stelling van Kleene 18 3 De stelling van Kleene Definitie 3.1 Een formele taal heet regulier als hij wordt herkend door een deterministische eindige automaat. Talen van de vorm L(r) met r een reguliere expressie noemen we

Nadere informatie

Syntax- (compile), runtime- en logische fouten Binaire operatoren

Syntax- (compile), runtime- en logische fouten Binaire operatoren Inhoud Syntax- (compile), runtime- en logische fouten Binaire operatoren Operaties op numerieke datatypen Evaluatie van expressies, bindingssterkte Assignment operaties en short-cut operatoren Controle

Nadere informatie

Divide & Conquer: Verdeel en Heers vervolg. Algoritmiek

Divide & Conquer: Verdeel en Heers vervolg. Algoritmiek Divide & Conquer: Verdeel en Heers vervolg Algoritmiek Algoritmische technieken Vorige keer: Divide and conquer techniek Aantal toepassingen van de techniek Analyse met Master theorem en substitutie Vandaag:

Nadere informatie

Een eenvoudig algoritme om permutaties te genereren

Een eenvoudig algoritme om permutaties te genereren Een eenvoudig algoritme om permutaties te genereren Daniel von Asmuth Inleiding Er zijn in de vakliteratuur verschillende manieren beschreven om alle permutaties van een verzameling te generen. De methoden

Nadere informatie

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren HOOFDSTUK 3 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of procedurele programmeertalen. is het stapsgewijs in code omschrijven wat een programma moet

Nadere informatie

AI Kaleidoscoop. College 9: Natuurlijke taal. Natuurlijke taal: het probleem. Fases in de analyse van natuurlijke taal.

AI Kaleidoscoop. College 9: Natuurlijke taal. Natuurlijke taal: het probleem. Fases in de analyse van natuurlijke taal. AI Kaleidoscoop College 9: atuurlijke taal Het Probleem Grammatica s Transitie netwerken Leeswijzer: Hoofdstuk 14.0-14.3 AI9 1 atuurlijke taal: het probleem Communiceren met computers als met mensen, middels

Nadere informatie

Discrete Structuren. Piter Dykstra Opleidingsinstituut Informatica en Cognitie

Discrete Structuren. Piter Dykstra Opleidingsinstituut Informatica en Cognitie Discrete Structuren Piter Dykstra Opleidingsinstituut Informatica en Cognitie www.math.rug.nl/~piter piter@math.rug.nl 23 februari 2009 GRAFEN & BOMEN Paragrafen 6.1-6.4 Discrete Structuren Week 3 en 4:

Nadere informatie

Reguliere talen: overzicht

Reguliere talen: overzicht Reguliere talen!!reguliere grammatica: versimpelde Contextvrije grammatica!!finite-state Automaton: andere manier om een taal te beschrijven!!reguliere Expressie nog een andere manier Alle drie kunnen

Nadere informatie

Uitwerking tentamen Analyse van Algoritmen, 29 januari

Uitwerking tentamen Analyse van Algoritmen, 29 januari Uitwerking tentamen Analyse van Algoritmen, 29 januari 2007. (a) De buitenste for-lus kent N = 5 iteraties. Na iedere iteratie ziet de rij getallen er als volgt uit: i rij na i e iteratie 2 5 4 6 2 2 4

Nadere informatie

Uitwerking tentamen Algoritmiek 9 juli :00 13:00

Uitwerking tentamen Algoritmiek 9 juli :00 13:00 Uitwerking tentamen Algoritmiek 9 juli 0 0:00 :00. (N,M)-game a. Toestanden: Een geheel getal g, waarvoor geldt g N én wie er aan de beurt is (Tristan of Isolde) b. c. Acties: Het noemen van een geheel

Nadere informatie

Vierde college complexiteit. 14 februari Beslissingsbomen

Vierde college complexiteit. 14 februari Beslissingsbomen College 4 Vierde college complexiteit 14 februari 2017 Restant zoeken Beslissingsbomen 1 Binair zoeken Links := 1; Rechts := n; while Links Rechts do Midden := Links + Rechts 2 ; if X = A[Midden] then

Nadere informatie

Uitbreiding van de Model Specification Language (MSL) compiler. Thierry Cornelis

Uitbreiding van de Model Specification Language (MSL) compiler. Thierry Cornelis Uitbreiding van de Model Specification Language (MSL) compiler Thierry Cornelis 29 november 2002 Inhoudsopgave 1 Prototype 1 3 1.1 AToM 3............................... 3 1.2 Compileren............................

Nadere informatie

Achtste college algoritmiek. 8 april Dynamisch Programmeren

Achtste college algoritmiek. 8 april Dynamisch Programmeren Achtste college algoritmiek 8 april 2016 Dynamisch Programmeren 1 Werkcollege-opgave Dutch Flag Problem Gegeven een array gevuld met R, W, en B. Reorganiseer dit array zo dat van links naar rechts eerst

Nadere informatie

Een korte samenvatting van enkele FORTRAN opdrachten

Een korte samenvatting van enkele FORTRAN opdrachten Een korte samenvatting van enkele FORTRAN opdrachten Inhoud 1 Introductie 3 2 De structuur van een FORTRAN programma 3 3 Datatypen, variabelen en declaraties 3 4 Expressies-volgorde van uitwerking 4 5

Nadere informatie

Bomen. 8.8 ongerichte bomen 9.4 gerichte bomen ch 10. binaire bomen. deel 2. Tiende college

Bomen. 8.8 ongerichte bomen 9.4 gerichte bomen ch 10. binaire bomen. deel 2. Tiende college 10 Bomen deel 2 Tiende college 8.8 ongerichte bomen 9.4 gerichte bomen ch 10. binaire bomen 1 arboretum ongericht 8.8 tree graphs 9.4 rooted trees ch.10 binary trees 2 gericht geordend links/rechts bomen

Nadere informatie

4EE11 Project Programmeren voor W. College 3, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e

4EE11 Project Programmeren voor W. College 3, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 4EE11 Project Programmeren voor W College 3, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 1 Onderwerpen Grotere programma s ontwerpen/maken Datastructuren en algoritmes 2 Evolutie,

Nadere informatie

Elfde college algoritmiek. 18 mei Algoritme van Dijkstra, Heap, Heapify & Heapsort

Elfde college algoritmiek. 18 mei Algoritme van Dijkstra, Heap, Heapify & Heapsort Algoritmiek 018/Algoritme van Dijkstra Elfde college algoritmiek 18 mei 018 Algoritme van Dijkstra, Heap, Heapify & Heapsort 1 Algoritmiek 018/Algoritme van Dijkstra Uit college 10: Voorb. -1- A B C D

Nadere informatie

Stacks and queues. Hoofdstuk 6

Stacks and queues. Hoofdstuk 6 Hoofdstuk 6 Stacks and queues I N T R O D U C T I E In dit hoofdstuk worden drie datastructuren stack, queue en deque behandeld. Om deze datastructuren te implementeren, worden onder andere arrays en linked

Nadere informatie

Het minimale aantal sleutels op niveau h is derhalve

Het minimale aantal sleutels op niveau h is derhalve 1 (a) In een B-boom van orde m bevat de wortel minimaal 1 sleutel en maximaal m 1 sleutels De andere knopen bevatten minimaal m 1 sleutels en maximaal m 1 sleutels (b) In een B-boom van orde 5 bevat elke

Nadere informatie

Tiende college algoritmiek. 26 april Gretige algoritmen

Tiende college algoritmiek. 26 april Gretige algoritmen Algoritmiek 01/10 College 10 Tiende college algoritmiek april 01 Gretige algoritmen 1 Algoritmiek 01/10 Muntenprobleem Gegeven onbeperkt veel munten van d 1,d,...d m eurocent, en een te betalen bedrag

Nadere informatie

Zesde college complexiteit. 19 maart Mergesort, Ondergrens sorteren Quicksort, Shellsort

Zesde college complexiteit. 19 maart Mergesort, Ondergrens sorteren Quicksort, Shellsort College 6 Zesde college complexiteit 19 maart 2019 Mergesort, Ondergrens sorteren Quicksort, Shellsort 1 Vorige keer Voor sorteeralgoritmen gebaseerd op arrayvergelijkingen, waarbij per arrayvergelijking

Nadere informatie

Algoritmiek. 15 februari Grafen en bomen

Algoritmiek. 15 februari Grafen en bomen Algoritmiek 15 februari 2019 Grafen en bomen 1 Grafen (herhaling) Een graaf G wordt gedefinieerd als een paar (V,E), waarbij V een eindige verzameling is van knopen (vertices) en E een verzameling van

Nadere informatie

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II Tweede bachelor Informatica Academiejaar 2014 2015, eerste zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees de hele

Nadere informatie

Uitgebreide uitwerking Tentamen Complexiteit, mei 2007

Uitgebreide uitwerking Tentamen Complexiteit, mei 2007 Uitgebreide uitwerking Tentamen Complexiteit, mei 007 Opgave. a. Een beslissingsboom beschrijft de werking van het betreffende algoritme (gebaseerd op arrayvergelijkingen) op elke mogelijke invoer. In

Nadere informatie

Formeel Denken. Herfst 2004

Formeel Denken. Herfst 2004 Formeel Denken Herman Geuvers Deels gebaseerd op het herfst 2002 dictaat van Henk Barendregt en Bas Spitters, met dank aan het Discrete Wiskunde dictaat van Wim Gielen Herfst 2004 Contents 1 Talen 1 1.1

Nadere informatie

1 Hoe PHP werkt van broncode tot weergave 1

1 Hoe PHP werkt van broncode tot weergave 1 Inhoud 1 Hoe PHP werkt van broncode tot weergave 1 Fase 1: lexicale analyse 2 Fase 2: parsering 3 Fase 3: compilatie 5 Fase 4: interpretatie 7 Samenvatting 7 2 Ik hou van Xdebug 9 Inleiding 10 Werken met

Nadere informatie

Inleiding: Combinaties

Inleiding: Combinaties Zinnen 1 Inleiding: Combinaties Combinaties op verschillende niveaus: Lettergrepen als combinaties van fonemen. Woorden als combinaties van morfemen. Zinnen als combinaties van woorden en woordgroepen.

Nadere informatie

TW2020 Optimalisering

TW2020 Optimalisering TW2020 Optimalisering Hoorcollege 8 Leo van Iersel Technische Universiteit Delft 2 november 2016 Leo van Iersel (TUD) TW2020 Optimalisering 2 november 2016 1 / 28 Minimum Opspannende Boom (Minimum Spanning

Nadere informatie

Vierde college algoritmiek. 23/24 februari Complexiteit en Brute Force

Vierde college algoritmiek. 23/24 februari Complexiteit en Brute Force Algoritmiek 2017/Complexiteit Vierde college algoritmiek 23/24 februari 2017 Complexiteit en Brute Force 1 Algoritmiek 2017/Complexiteit Tijdcomplexiteit Complexiteit (= tijdcomplexiteit) van een algoritme:

Nadere informatie

Uitgebreide uitwerking Tentamen Complexiteit, juni 2017

Uitgebreide uitwerking Tentamen Complexiteit, juni 2017 Uitgebreide uitwerking Tentamen Complexiteit, juni 017 Opgave 1. a. Een pad van de wortel naar een blad stelt de serie achtereenvolgende arrayvergelijkingen voor die het algoritme doet op zekere invoer.

Nadere informatie

Vijfde college algoritmiek. 2/3 maart Exhaustive search

Vijfde college algoritmiek. 2/3 maart Exhaustive search Vijfde college algoritmiek 2/3 maart 2017 Exhaustive search 1 Voor- en nadelen Brute force: Voordelen: - algemeen toepasbaar - eenvoudig - levert voor een aantal belangrijke problemen (zoeken, patroonherkenning)

Nadere informatie

Twaalfde college algoritmiek. 13 mei Branch & Bound Heap, Heapsort & Heapify

Twaalfde college algoritmiek. 13 mei Branch & Bound Heap, Heapsort & Heapify Algoritmiek 2016/Branch & Bound Twaalfde college algoritmiek 13 mei 2016 Branch & Bound Heap, Heapsort & Heapify 1 Algoritmiek 2016/Branch & Bound TSP met Branch & Bound Mogelijke ondergrenzen voor de

Nadere informatie

Stacks and queues. Introductie 45. Leerkern 45. Terugkoppeling 49. Uitwerking van de opgaven 49

Stacks and queues. Introductie 45. Leerkern 45. Terugkoppeling 49. Uitwerking van de opgaven 49 Stacks and queues Introductie 45 Leerkern 45 6.1 Stacks 45 6.2 Queues 47 6.3 Double-ended queues 48 Terugkoppeling 49 Uitwerking van de opgaven 49 Bijlage: Diagrammen belangrijkste interfaces en klassen

Nadere informatie

Tiende college algoritmiek. 14 april Gretige algoritmen

Tiende college algoritmiek. 14 april Gretige algoritmen College 10 Tiende college algoritmiek 1 april 011 Gretige algoritmen 1 Greedy algorithms Greed = hebzucht Voor oplossen van optimalisatieproblemen Oplossing wordt stap voor stap opgebouwd In elke stap

Nadere informatie

UNIVERSITEIT ANTWERPEN FACULTEIT WETENSCHAPPEN DEPARTEMENT WISKUNDE-INFORMATICA OBERON CODE CONVENTIONS

UNIVERSITEIT ANTWERPEN FACULTEIT WETENSCHAPPEN DEPARTEMENT WISKUNDE-INFORMATICA OBERON CODE CONVENTIONS UNIVERSITEIT ANTWERPEN FACULTEIT WETENSCHAPPEN DEPARTEMENT WISKUNDE-INFORMATICA OBERON CODE CONVENTIONS Laatste aanpassing: 15 oktober 2003 Inhoudsopgave 1 Bestandsnamen 3 2 Organizatie Bestanden 3 3 Indentatie

Nadere informatie

Natuurlijke-taalverwerking. Week 2

Natuurlijke-taalverwerking. Week 2 Natuurlijke-taalverwerking Week 2 Overzicht Context-vrije Grammatica s CFGs in Prolog Definite Clause Grammars (DCGs) Construeren van bomen Recapitulatie Doel: computers taal laten begrijpen Noodzaak:

Nadere informatie

Inleiding tot Func.oneel Programmeren les 3

Inleiding tot Func.oneel Programmeren les 3 Inleiding tot Func.oneel Programmeren les 3 Kris Luyten, Jo Vermeulen {kris.luyten,jo.vermeulen}@uhasselt.be Exper.secentrum voor Digitale Media Universiteit Hasselt Currying Currying: een func.e met meerdere

Nadere informatie

Inleiding Vertalerbouw, versie 2003

Inleiding Vertalerbouw, versie 2003 Inleiding Vertalerbouw, versie 2003 Dr.ir. H. Meijer, Subfaculteit Informatica, KU Nijmegen Introductie Een vertaler is een programma, meer algemeen een systeem, dat een tekst in een bepaalde taal omzet

Nadere informatie

Gerichte Grafen Boolese Algebra s &. Logische Netwerken

Gerichte Grafen Boolese Algebra s &. Logische Netwerken Discrete Structuren Piter Dykstra Opleidingsinstituut Informatica en Cognitie www.math.rug.nl/~piter piter@math.rug.nl 10 maart 2009 Gerichte Grafen Boolese Algebra s &. Logische Netwerken. Paragrafen

Nadere informatie