Automaten. Informatica, UvA. Yde Venema

Vergelijkbare documenten
Uitwerking Opgaven Formele talen, grammaticas en automaten Week 1

3 De stelling van Kleene

Automaten & Complexiteit (X )

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

Reguliere Expressies

opgaven formele structuren deterministische eindige automaten

Verzamelingen deel 2. Tweede college

TENTAMEN Basismodellen in de Informatica VOORBEELDUITWERKING

Formeel Denken. Herfst 2004

Automaten & Complexiteit (X )

opgaven formele structuren tellen Opgave 1. Zij A een oneindige verzameling en B een eindige. Dat wil zeggen (zie pagina 6 van het dictaat): 2 a 2.

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

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

Verzamelingen deel 3. Derde college

We beginnen met de eigenschappen van de gehele getallen.

Formeel Denken 2014 Uitwerkingen Tentamen

Verzamelingen. Hoofdstuk 5

Formeel Denken 2013 Uitwerkingen Tentamen

Automaten en Berekenbaarheid 2016 Oplossingen #4

Gödels theorem An Incomplete Guide to Its Use and Abuse, Hoofdstuk 3

Getallensystemen, verzamelingen en relaties

Fundamenten van de Informatica

Opdracht 1 Topics on Parsing and Formal Languages - fall 2010

Opdracht 1 Topics on Parsing and Formal Languages - fall 2010

VERZAMELINGEN EN AFBEELDINGEN

Semantiek (2IT40) Jos Baeten. HG 7.19 tel.: Hoorcollege 3 (12 april 2007)

III.2 De ordening op R en ongelijkheden

Formele talen. Elfde college

Notatie van verzamelingen. Lidmaatschap. Opgave. Verzamelingen specificeren

Uitgebreide uitwerking Tentamen Complexiteit, mei 2007

Paradox van zelfreproductie. IN2505-II Berekenbaarheidstheorie. Zelfreproductie? Programma s en zelfreproductie. College 11.

Automaten en Berekenbaarheid

Verzamelingenleer. Inhoud leereenheid 5. Introductie 9

Oefenopgaven Grondslagen van de Wiskunde A

Tegenvoorbeeld. TI1300: Redeneren en Logica. De truc van Gauss. Carl Friedrich Gauss, 7 jaar oud (omstreeks 1785)

III.3 Supremum en infimum

Getaltheorie I. c = c 1 = 1 c (1)

Tentamen TI2310 Automaten en Talen. 19 april 2012, uur

Inleiding Analyse 2009

WI1808TH1/CiTG - Lineaire algebra deel 1

Selectietoets vrijdag 10 maart 2017

IN2505 II Berekenbaarheidstheorie Tentamen Maandag 2 juli 2007, uur

Hoofdstuk 3. Equivalentierelaties. 3.1 Modulo Rekenen

Tweede huiswerkopdracht Lineaire algebra 1 Uitwerking en opmerkingen

Je hebt twee uur de tijd voor het oplossen van de vraagstukken. µkw uitwerkingen. 12 juni 2015

Uitgebreide uitwerking Tentamen Complexiteit, juni 2017

Elfde college complexiteit. 23 april NP-volledigheid III

Stelling. SAT is NP-compleet.

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

Kies voor i een willekeurige index tussen 1 en r. Neem het inproduct van v i met de relatie. We krijgen

Discrete Structuren. Piter Dykstra Opleidingsinstituut Informatica en Cognitie

RuG-Informatica-cursus Discrete Structuren, versie 2009/2010

Oneindig in Wiskunde & Informatica. Lezing in de reeks Oneindig 3 oktober 2007 / Studium Generale TU Delft. Tom Verhoeff

Discrete Wiskunde 2WC15, Lente Jan Draisma

In dit hoofdstuk introduceren we de hoofdrolspelers van het college: eindige automaten.

V.2 Limieten van functies

Opmerking. TI1300 Redeneren en Logica. Met voorbeelden kun je niks bewijzen. Directe en indirecte bewijzen

2 n 1. OPGAVEN 1 Hoeveel cijfers heeft het grootste bekende Mersenne-priemgetal? Met dit getal vult men 320 krantenpagina s.

IN2505 II Berekenbaarheidstheorie. IN2505-II Berekenbaarheidstheorie. Practicum: Inschrijven. Practicum

IMO-selectietoets III zaterdag 3 juni 2017

Radboud Universiteit Nijmegen

Lineaire algebra I (wiskundigen)

Tentamen Grondslagen van de Wiskunde A Met beknopte uitwerking

Vorig college. IN2505-II Berekenbaarheidstheorie. Turingmachines. Turingmachine en Taal. College 2

V.4 Eigenschappen van continue functies

Getallenleer Inleiding op codeertheorie. Cursus voor de vrije ruimte

Inleiding Wiskundige Logica

II.3 Equivalentierelaties en quotiënten

Tentamen TI1300 en IN1305-A (Redeneren en) Logica

Mededelingen. TI1300: Redeneren en Logica. Waarheidstafels. Waarheidsfunctionele Connectieven

Logische Complexiteit Hoorcollege 4

De wiskunde achter knopen

Opgaven Inleiding Analyse

Bilineaire Vormen. Hoofdstuk 9

b) Niet geldig. Zij π(n)(p) = 1 als n is even, anders π(n)(p) = 0. Schrijf

Getaltheorie groep 3: Primitieve wortels

Derde college complexiteit. 7 februari Zoeken

ESA College 5b. Mark van der Zwaag. 7 oktober Programming Research Group, UvA. Mark van der Zwaag (PRG, UvA) ESA5a 7 oktober / 34

More points, lines, and planes

Het minimale aantal sleutels op niveau h is derhalve

Formele talen. Tiende college

Inwendig product, lengte en orthogonaliteit in R n

Combinatoriek groep 1 & 2: Recursie

Verzamelingen deel 2. Tweede college

2: Laat en twee convexe verzamelingen zijn. Laat. Er geldt. Omdat convex is, is de gehele lijn bevat in, dus. Evenzo geldt. Hieruit volgt dat.

Hoofdstuk 4. In dit hoofdstuk wordt een aantal uiteenlopende eigenschappen van de propositielogica

(iii) Enkel deze bundel afgeven; geen bladen toevoegen, deze worden toch niet gelezen!

Tentamen Grondslagen van de Wiskunde A, met uitwerkingen

Examen G0U13 Bewijzen en Redeneren Bachelor of Science Fysica en Wiskunde. vrijdag 3 februari 2012, 8:30 12:30

Discrete Wiskunde 2WC15, Lente Jan Draisma

Tentamen Discrete Wiskunde 1 10 april 2012, 14:00 17:00 uur

Module Limieten van de berekenbaarheid : antwoorden

Meetkundige ongelijkheden Groep A

Examen Datastructuren en Algoritmen II

Automaten en Berekenbaarheid

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

1 Introductie. 2 Oppervlakteformules

Eigenschappen en Axioma s van de E 6 -meetkunde

E.T.G. Schlebusch. Het Hasse-principe. Bachelorscriptie, 20 juni Scriptiebegeleider: dr. R.M. van Luijk

1 Rekenen in eindige precisie

Transcriptie:

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................................ 4 1.3 Equivalentie van reguliere expressies....................... 6 2 Eindige automaten 8 2.1 Deterministische eindige automaten........................ 8 2.2 Niet-deterministische eindige automaten..................... 10 2.3 Determinizeren................................... 12 3 De stelling van Kleene 17 3.1 Reguliere expressies uit eindige automaten.................... 17 3.2 Eindige automaten uit reguliere expressies.................... 23 4 Eigenschappen van reguliere talen 28 4.1 Pompstelling.................................... 28 4.2 Afsluitingseigenschappen.............................. 30 4.3 Algoritmische aspecten van reguliere talen.................... 31 5 Automaten voor oneindige woorden 35 5.1 Büchi automaten en ω-reguliere talen....................... 35 5.2 Reguliere ω-expressies............................... 38 5.3 Muller automaten.................................. 39 5.4 Eigenschappen van ω-reguliere talen....................... 43 6 Specificaties in Lineaire Temporele Logica 46 6.1 Lineaire Temporele Logica............................. 46 6.2 Transitiesystemen.................................. 50 6.3 Lineaire temporele logica als specificatietaal................... 52 7 Model checking met behulp van eindige automaten 54 7.1 Muller automaten uit transitiesystemen..................... 55 7.2 Muller automaten uit formules.......................... 57

2 1 Formele talen en reguliere expressies 1.1 Formele talen Definitie 1.1 Een alfabet is een niet-lege, eindige verzameling van objecten die we symbolen of letters zullen noemen. Voorbeeld 1.2 Voorbeelden van alfabetten zijn: Σ 1 := {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, Σ 2 := {a, b, c,..., x, y, z}, Σ 3 := Σ 1 Σ 2 {+,,, =, :=} {;, if, then, else, fi, while, do, od} De Nederlandse taal bevat oneindig veel woorden, zodat de verzameling van alle Nederlandse woorden géén voorbeeld van een alfabet is. Definitie 1.3 Een woord of string over een alfabet Σ is een eindig rijtje symbolen uit Σ. Het lege woord wordt weergegeven als ɛ. De verzameling van alle woorden over Σ wordt weergegeven als Σ. Voorbeeld 1.4 De verzameling {a, b} bestaat uit de woorden ɛ, a, b, aa, ab, ba, bb, aaa,... Definitie 1.5 Het samenvoegen van twee woorden door ze achter elkaar te zetten noemen we concatenatie; dezelfde term gebruiken we ook voor het product van deze operatie. Voorbeeld 1.6 De concatenatie van de woorden ab en bbac geeft (of is) het woord abbbac, concatenatie van de woorden ab, bc, ɛ en cd levert het woord abbccd op. Van belang zijn verder de volgende afgeleide begrippen. Definitie 1.7 De lengte van een woord w, notatie: w, definiëren we als het aantal symbolen van w. De frequentie van een symbool in een woord is het aantal keren dat het symbool in het woord voorkomt. Voorbeeld 1.8 Beschouw de statement if x = 3 then y := z als woord over het alfabet Σ 3 uit Voorbeeld 1.2. Er staan acht Σ 3 -symbolen in dit woord (merk op dat de spatie geen element van Σ 3 is!). Hiermee is de lengte vastgesteld: if x = 3 then y := z = 8. De lengte van het lege woord is nul: ɛ = 0. Voorbeelden van frequenties: # a (aabaaac) = 5, # b (aabaaac) = 1 en # d (aabaaac) = 0. Definitie 1.9 Een (formele) taal over een alfabet Σ is een verzameling woorden over Σ. Dat wil zeggen: elke deelverzameling van Σ is een formele taal over Σ.

3 Voorbeeld 1.10 Stel eerst dat we als alfabet de verzameling Σ = {a, b} nemen. Voorbeelden van formele talen zijn: L 1 = {w Σ w = 2}, L 2 = {w Σ w > 2}, L 3 = {w Σ # a w = k}. Oftewel: L 1 = {aa, ab, ba, bb}, L 2 bestaat uit alle Σ-woorden die minstens drie symbolen bevatten, en L 3 bestaat uit die Σ-woorden waar precies k maal het symbool a in voorkomt. Andere voorbeelden: de Nederlandse taal, opgevat als de verzameling (correct gespelde) Nederlandse woorden, kun je zien als een formele taal over het alfabet {a, b,..., z}. Programmeertalen zijn altijd formele talen over een alfabet vergelijkbaar met Σ 3 uit Voorbeeld 1.2. Omdat formele talen gedefinieerd worden als verzamelingen, kun je er de gebruikelijke operaties op toepassen, zoals vereniging, doorsnede, en complement (dat wil zeggen, complement met betrekking tot de verzameling Σ ). Daarnaast zijn er nog een aantal andere operaties op formele talen. Definitie 1.11 Gegeven formele talen L over een alfabet Σ, definiëren we de volgende nieuwe formele talen: L L = {ww w L, w L } L 0 = {ɛ} L n+1 = L L n L = n 0 L n Voorbeeld k: 1.12 Beschouw het alfabet Σ = {a, b, c}, en definieer, voor elk natuurlijk getal L k := {w Σ # a w = k}. Dat wil zeggen: L k bestaat uit die woorden over Σ waar precies k maal de letter a in voorkomt. Dan geldt bijvoorbeeld: L 3 L 5 = L 8, (L 2 ) 0 = {ɛ}, (L 2 ) n = L 2n, (L 2 ) = {w Σ # a w is even}.

4 1.2 Reguliere expressies Definitie 1.13 Gegeven een alfabet Σ, definiëren we de collectie van reguliere expressies over Σ door middel van de volgende Backus-Naur vorm (bnf): Hierbij staat a voor een willekeurig symbool uit Σ. r ::= a ɛ r + r rr r. (1) Voor wie niet bekend is met deze manier van definiëren: u dient (1) te zien als een verkorte notatie van de volgende inductieve definitie: alle symbolen a Σ, tesamen met ɛ en, vormen de atomaire reguliere expressies; als r en s reguliere expressies zijn, dan ook r + s, rs en r. Voorbeeld 1.14 Als voorbeelden van reguliere expressies over het alfabet Σ = {a, b} noemen we: a, a b, ɛ, en (a + ɛb). Reguliere expressies over een alfabet Σ kunnen worden gezien als condities waar een woord uit Σ al dan niet aan kan voldoen. In het geval een woord w voldoet aan de expressie r, spreken we van matching, notatie: w r. Om precies te bepalen wanneer een woord matcht met een expressie, gebruiken we de volgende definitie. Definitie 1.15 Gegeven is een alfabet Σ. Met inductie naar de complexiteit van de reguliere expressie r bepalen we of een woord w met deze expressie matcht: w a als w = a, w ɛ als w = ɛ, w nooit w r + s als w r of w s, w rs als w kan worden gesplitst als w = uv zó dat u r en v s, w r als w = ɛ of w r of w kan worden gesplitst als w = w 1... w k zó dat w i r voor elke i. In woorden drukt de laatste clausule uit dat een woord w matcht met een expressie van de vorm r als w = ɛ of w matcht met r, of w kan worden geschreven als de concatenatie van een aantal strings die allemaal met r matchen. Voorbeeld 1.16 Laat Σ = {a, b, c}. Dan geldt dat een Σ-woord w matcht met de expressie (b + c) dan en slechts dan als er in w géén a s voorkomen (ga na). Verder geldt bijvoorbeeld dat het woord w = bcaac matcht met de expressie r = (b + c) a(b + c) a(b + c). We kunnen namelijk w opsplitsen in de woorden bc, a, ɛ, a en c, en voor deze woorden geldt:

5 - bc (b + c) omdat b b + c en c b + c, - a a. - ɛ (b + c), - a a, - c (b + c) omdat c b + c. In het algemeen geldt dat een woord w matcht met r = (b + c) a(b + c) a(b + c) als w precies tweemaal het symbool a bevat, en dus geldt dat w r als w een even aantal a s bevat. De link tussen reguliere expressies en formele talen komt in de volgende definitie naar voren. Definitie 1.17 Een reguliere expressie r beschrijft een taal L(r), gegeven door de verzameling woorden die aan r voldoen. Preciezer: L(r) := {w Σ w r}. Voorbeeld 1.18 Hier zijn een aantal eenvoudige voorbeelden van talen over {a, b, c} : L(a + b + ɛ) = {a, b, ɛ}, L(a + b + ) = {a, b}, L(a + b ) = {a, ɛ, b, bb, bbb,...}, L((a + b) ) = {ɛ, a, b, aa, ab, ba, bb, aaa,...}, L(a(a + b + c) ) = {w {a, b, c} w begint met een a }, Aan het einde van Voorbeeld 1.16 zagen we al dat ( L ((b + c) a(b + c) a(b + c) ) ) = {w {a, b, c} # a w is even}. Als laatste nog een wat moeilijker voorbeeld: de taal bestaande uit alle woorden in {a, b, c} die niet met de string ab beginnen, wordt beschreven door de expressie ɛ + a + (b + c)(a + b + c) + a(a + c)(a + b + c). Voorbeeld dat 1.19 Als een uitgewerkt voorbeeld laten we zien, voor het geval dat Σ = {a, b}, L(b (a(ɛ + bbb )) (ɛ + b)) = {w Σ w bevat aba niet als deelstring }. We behandelen eerst de inclusie. Stel dus dat w {a, b} matcht met de expressie b (a(ɛ + bbb )) (ɛ + b). Dan is w dus van de vorm w = w 1 w 2 w 3, zó dat w 1 b, dus w 1 bevat geen a s; w 2 (a(ɛ + bbb )), dus w 2 kan gesplitst worden in een aantal woorden die elk matchen met de expressie a(ɛ + bbb );

6 w 3 (ɛ + b), dus w 3 bevat ook geen a s. Kan w het woord aba als deelstring bevatten? De enige mogelijkheid is dat aba in zijn geheel een deelstring van w 2 vormt, dus laten we nog wat beter kijken naar w 2. Wegens de bovenstaande analyse moet w 2, als het überhaupt meer dan één a bevat, van de vorm ab }{{ } b ab }{{ } b zijn, waarbij het aantal b s tussen opéénvolgende a s steeds óf nul (ɛ), óf minimaal twee (bbb ) moet zijn. Het kan dus niet voorkomen, dat twee a s worden gescheiden door precies één b. Maar dan kan w 2 het woord aba niet als deelstring bevatten, en w zelf dus ook niet. Dit bewijst de inclusie. Voor de andere inclusie nemen we aan dat de string aba niet voorkomt in w. Dat betekent dat er tussen elke twee opéénvolgende a s in w, ofwel géén, ofwel minimaal twee b s voorkomen. Het woord w moet dan wel van de volgende vorm zijn: eerst een aantal (nul of meer) b s; dan een aantal keren (afhankelijk van de frequentie van a in w) een woord van de vorm ab n, waarbij n = 0 of n 2; het woord kan eventueel worden afgesloten door één enkele b. Met andere woorden, w kan worden gesplitst in drie woorden die respectievelijk moeten matchen met de expressies b, (a(ɛ + bbb )) en ɛ + b. Hieruit volgt onmiddellijk dat w moet matchen met de expressie b (a(ɛ + bbb )) (ɛ + b). De volgende propositie maakt het verband met de operaties van Definitie 1.11 duidelijk. Propositie 1.20 Gegeven is een alfabet Σ. Er geldt, voor elk symbool a Σ, en voor alle reguliere expressies r en s over Σ: L( ) = L(ɛ) = {ɛ} L(a) = {a} L(r + s) = L(r) L(s) L(rs) = L(r) L(s) L(r ) = (L(r)) 1.3 Equivalentie van reguliere expressies Voorbeeld 1.21 De expressies bc(bc) en (bc) bc beschrijven precies dezelfde taal, namelijk die bestaande uit de woorden bc, bcbc, bcbcbc,... Meer in het algemeen kun je laten zien dat voor elke expressie r geldt dat L(rr ) = L(r r). De expressies rr en r r heten daarom equivalent.

7 Definitie 1.22 Twee reguliere expressies heten equivalent als ze één en dezelfde taal beschrijven. Voorbeeld 1.23 Eerst een tegenvoorbeeld. Omdat de string aabb wel matcht met de expressie a b, maar niet met b a, zijn de expressies a b en b a niet equivalent. Voorbeelden van expressies die wel equivalent zijn (wat we ook nemen voor r, s of t): - r + s en s + r, - r(s + t) en rs + rt, - r en ɛ + rr. We bewijzen alleen het tweede voorbeeld. Dat wil zeggen: we beredeneren dat L(r(s + t)) = L(rs + rt). (2) Stel eerst dat w een element is van L(r(s + t)); dat betekent dat w matcht met r(s + t). Per definitie kan w dus worden gesplitst als w = uv zó dat u r en v s + t. Uit het laatste feit volgt dat v s of v t. In het eerste geval mogen we concluderen dat w rs, in het tweede geval dat w rt; in beide gevallen volgt dat w rs+rt, zodat we bewezen hebben dat w een element is van L(rs + rt). De andere richting (aannemende dat w L(rs + rt), laten zien dat w tot L(r(s + t)) behoort), laten we over aan de lezer. Opgaven Opgave 1.1 Onderzoek of de volgende woorden matchen met de expressie (ab + aa + baa). bbaaba, abaabaaabaa, aaaabaaaa, baaaaabaa, baaaaabaaaab. Opgave 1.2 In unix kun je met het commando ls alle files in een directory bekijken. Maar het is ook mogelijk alleen maar bepaalde files te laten zien. Hierbij kun je gebruik van de volgende expressies maken:? een willekeurig element uit Σ, een willekeurig element uit Σ, [n 1..n 2 ] een cijfer tussen n 1 en n 2 (n 1 en n 2 zelf meegerekend), [l 1..l 2 ] (een letter tussen l 1 en l 2 (l 1 en l 2 zelf meegerekend). Het alfabet Σ is daarbij als volgt gedefineerd: Σ := {a, b,..., z} {A, B,..., Z} {0,..., 9} {., } Schrijf de volgende UNIX-expressies als reguliere expressies: (a) [2..6]? (b)

8 (c) [k..z] Opgave 1.3 Geef reguliere expressies voor de volgende talen in {a, b}: (a) {w w = 2} (b) {w w > 2} (c) {awa w {a, b} } (d) {w w aba, w bab} (e) {w # a (w) is een drievoud } (f) {w # a (w) is geen drievoud } (g) {w w eindigt niet op ab} (h) {w w heeft aba niet als deelstring } Opgave 1.4 Welke talen worden door de volgende expressies weergegeven? (a) (1 + ɛ)(00 1) 0 (b) (0 1 ) 000(0 + 1) (c) (0 + 10) 1 Opgave 1.5 Gegeven is het alfabet Σ = {0, 1}. Welke talen worden weergegeven door de volgende expressies? 0,, ɛ, 0,, ɛ, (0 ). Opgave 1.6 Gegeven is een alfabet Σ, en reguliere expressies r en s over Σ. Ga na of de volgende reguliere expressies paarsgewijs equivalent zijn. Verklaar uw antwoord! (a) rr en r r (b) (r + s) en r + s (c) (r + s) en (r s ) (d) (r + s) en (rs ) (e) de unix-expressies [a..c + b..f] en [a..f] (f) de unix-expressies en? Opgave 1.7 Gegeven is een eindige verzameling woorden E. Ontwerp een efficiënte algoritme om te bepalen of een invoerwoord al dan niet tot E behoort. (Met efficiënt wordt hier bedoeld dat de algoritme een rekentijd heeft die polynomiaal is in de lengte van de invoer.)