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 Recursieve definities en inductieve bewijzen Grafen en bomen Talen formeel Reguliere verzamelingen en expressies Talen & automaten Week 1: Inleiding 1
Talen 1. Regulier 2. Contextvrij 3.... 4. Recursief opsombaar 5.... de Chomsky hierarchie Naom Chomsky Talen & automaten Week 1: Inleiding 2
N.b.: Automatensimulator De simulator voor de verschillende automaten vind je hier: http://ozark.hendrix.edu/ burch/proj/autosim/ Talen & automaten Week 1: Inleiding 3
Automaten Geeft ie ook gewone koffie? Een protocol als een eindige automaat Talen & automaten Week 1: Inleiding 4
Stapelautomaat Talen & automaten Week 1: Inleiding 5
Turing machine Alan Turing nog een Turing machine Talen & automaten Week 1: Inleiding 6
Berekenbaarheid Proposition 1. [Church-Turing]. Alles wat we kunnen berekenen is formuleerbaar als een partieel recursieve functie. Talen & automaten Week 1: Inleiding 7
Het grote plaatje Talen & automaten Week 1: Inleiding 8
Weekoverzicht 1. Overzicht van de cursus, wiskundige notaties, basisbegrippen formele talen, reguliere talen. H 1 [6, 7, 8], H 2 [1, 2, 3]. 2. Contextvrije grammatica s en contextvrije talen. H 3 [1, 2, 3, 4]. 3. Normaalvormen van contextvrije grammatica s H 4 [1, 2, 3, 4, (5)]. 4. Eindige automaten en reguliere talen H 5 [1, 2, 3, 4, 5]. H 6 [1, 2, 3, 4, 5, 6] en Minimale automaten 5. Stapelautomaten en contextvrije talen H 7 [1, 2, 3]. Het contextvrije pomplemma en afsluitingseigenschappen van contextvrije talen H 7 [4, 5]. 6. Turing machines H 8 [1, 2, 3, 4, 5, 6, 7]. Turing computable functies H 9. 7. Beslissingsproblemen en reductie daarvan H 11 [1, 2, 3, 4, 5]. Onbeslisbaarheid H 12 [1, 2, 3]. 8. Onbeperkte en contextgevoelige grammatica s en de Chomsky hierarchie H 10 [1, 2, 4]. Tentamen: maandag 30 juni, 13.00-16:00 uur, tennishal. Talen & automaten Week 1: Inleiding 9
Recursieve definities Definition 1. [Natuurlijke getallen]. De verzameling {0, s(0), s(s(0)),...} is recursief gedefinieerd door: 1. Basis: 0 N. 2. Recursieve stap: Als n LT dan ook: s(n). 3. Afsluiting: n LT alleen indien n in een eindig aantal recursieve stappen uit 0 verkregen kan worden. Definition 2. [LT-relatie]. De verzameling {[x,y] x,y N x < y} is recursief gedefinieerd door: 1. Basis: [0,1] LT (waarbij 1 = s(0)). 2. Recursieve stap: Als [m,n] LT dan ook: [m,s(n)] en [s(m),s(n)]. 3. Afsluiting: [m,n] LT alleen indien [m,n] in een eindig aantal recursieve stappen uit [0,1] verkregen kan worden. Talen & automaten Week 1: Inleiding 10
Inductieve bewijzen Definition 3. [Volledige inductie]. Stel X is een recursief gedefinieerde verzameling op basis van X 0 en X 1,X 2,... is de reeks verzamelingen waarbij X i de verzameling is, die wordt gevormd door de recursieve stap i keer toe te passen. Als voor een predikaat P geldt: 1. Basis: P geldt voor elk element van X 0, 2. Inductiestap: Indien P geldt voor elk element van X 0,X 1,...,X i (i 1) (Inductie hypothese) dan geldt P ook voor elk element van X i+1, dan geldt P voor alle elementen van X Talen & automaten Week 1: Inleiding 11
Voorbeeld 1. Stel E is een verzameling expressies, recursief gedefinieerd op het alfabet bestaande uit de symbolen {a, b}, de operatoren + en en haakjes, (, ): 1. Basis: a en b zijn in E. 2. Recursieve stap: Als u en v in E zitten, dan ook: (u +v), (u v) en ( u) 3. Afsluiting: Niets anders zit in E dan op grond van (1) en (2). Theorem 1. Voor alle expressies van E geldt dat het aantal haakjes twee keer zo groot is als het aantal operatoren; n p (a) = 2 n o (a) Bewijs: 1. Basis: a en b zijn de expressies van de basisstap. n p (a) = 0 = 2n o (a) en n p (b) = 0 = 2n o (b) 2. Inductie hypothese: Stel n p (u) = 2n o (u) voor alle expressies gegenereerd in n of minder recursieve stappen. 3. Inductie stap: Stel w is gegenereerd in n + 1 recursieve stappen. w = (u +v),w = (u v) of w = ( v) en u en v zijn gegenereerd in n of minder stappen, dus (ind. hyp.): n p (u) = 2n o (u) en n p (v) = 2n o (v) Talen & automaten Week 1: Inleiding 12
(a) Stel w = (u +v) of w = (u +v) (b) Stel w = ( v)... n p (w) = n p (u) +n p (v) +2 n o (w) = n o (u) +n o (v) +1 Dus: 2n o (w) = 2n o (u) +2n o (v) +2 = n p (u) +n p (v) +2 = n p (w) Talen & automaten Week 1: Inleiding 13
Gerichte grafen Definition 4. Een gerichte graaf is een structuur (V, A), waarin V een verzamelingend knopen is en A een binaire relatie op V, de buur-relatie. V = {a,b,c,d} A = {[a,b], [b,a], [b,c], [c,b], [c,d], [d,a], [d,d]} Definition 5. Een element van A heet een kant, boog, pijl of ribbe. Een pad is een reeks knopen en bogen x 0, [x 0,x 1 ],x 1, [x 1,x 2 ],... Talen & automaten Week 1: Inleiding 14
Bomen Definition 6. [Geordende boom]. Een geordende boom is een acyclische gerichte graaf met voor elke knoop een uniek pad van de wortel van de boom naar die knoop. Nog een paar begrippen: Kind, blad, minimale gemeenschappelijke voorouder, LEFTOF, grens. Talen & automaten Week 1: Inleiding 15
Strings en talen Definition 7. Een alfabet Σ, is een verzameling symbolen, a,b,c,d,e. Strings zijn rijen symbolen, p,q,u,v,w,x,y,z. λ is de lege string. Definition 8. [Sigma ster]. Stel Σ is een alfabet; de verzameling strings over Σ, Σ is recursief gedefinieerd: 1. Basis: λ Σ 2. Recursiestap: Als w Σ en a Σ, dan ook wa Σ 3. Afsluiting: λ Σ alleen als w in een eindig aantal recursiestappen uit λ kan worden verkregen. Voorbeeld 2. Stel Σ = {a,b,c}, dan bestaat Σ uit: lengte 0: λ lengte 1: a,b,c lengte 2: aa,ba,ca,ab,bb,cb,ac,bc,cc lengte 3: aaa, aab, aac, baa, bbb,...... Talen & automaten Week 1: Inleiding 16
Definition 9. [Taal]. Een taal over een alfabet Σ is een deelverzameling van Σ. Definition 10. [Concatenatie van strings]. Als u,v Σ dan is de concatenatie van u en v, notatie: uv een binaire operatie op Σ gedefinieerd door: 1. Basis: Als lengte(v) = 0 dan v = λ en uv = u. 2. Recursieve stap: Als v een string is met lengte(v) > 0 dan v = wa voor een string w met lengte(w) = lengte(v) 1 en a Σ en uv = (uw)a Voorbeeld 3. Stel u = aab,v = b en w = ccc dan uv = aabb vw = bccc (uv)w = aabbccc u(vw) = aabbccc Talen & automaten Week 1: Inleiding 17
Theorem 2. [Associativiteit van concatenatie]. Stel u,v,w Σ dan: (uv)w = u(vw) Bewijs: 1. Basis: Als lengte(w) = 0 dan w = λ en (uv)w = uv. En aan de andere kant: u(vw) = u(v) = uv. 2. Inductie hypothese: Stel (uv)w = u(vw) voor alle strings w met lengte(w) n. 3. Inductie stap: Te bewijzen (uv)w = u(vw) voor alle strings w met lengte(w) = n +1. Dan w = xa voor een string x met lengte(x) = n en a Σ. (uv)w = (uv)(xa) subst. w = xa = ((uv)x)a def. conc. = (u(vx))a ind. hyp. = u((vx)a) def. conc. = u(v(xa)) def. conc. = u(vw) subst xa = w Talen & automaten Week 1: Inleiding 18
Definition 11. [Het omgekeerde]. Als u een string in Σ is, dan is het omgekeerde van u, notatie: u R, aldus gedefinieerd: 1. Basis: Als lengte(u) = 0 dan v = λ en λ R = λ. 2. Recursieve stap: Als lengte(u) = n > 0 dan u = wa voor een string w met lengte(w) = n 1 en a Σ en u R = aw R. Opdracht 1. Bewijs de stelling: Als u,v Σ dan (uv) R = v R u R. Talen & automaten Week 1: Inleiding 19
Specificatie van talen Voorbeeld 4. De taal L met alfabet {a, b} waarvan alle strings met een a beginnen en even zijn: 1. Basis: aa,ab L. 2. Recursieve stap:als u L dan uaa,uab,uba,ubb L. 3. Afsluiting: Een string u zit alleen in L als u in een eindig aantal recursiestappen uit de basis kan worden verkregen. Opdracht 2. Geef een definitie van de taal over {a,b}, waarin elke b direct wordt voorafgegaan door een a. Opdracht 3. Geef een definitie van de taal over {a,b}, met evenveel a s als b s. 1 Definition 12. [Concatenatie van talen]. De concatenatie van de talen X en Y, notatie: XY is de taal: XY = {uv u X v Y} Notatie: X met zichzelf n keer: X n. X 0 = def {λ} Definition 13. X = X i en X + = i=0 1 Twee foutjes op pg 46 v.h. boek i=1 X i Talen & automaten Week 1: Inleiding 20
Voorbeeld 4. Van de taal L = {a,b} {bb}{a,b} met alfabet {a,b} beschikken alle strings over een substring bb Opdracht 5. Definieer een taal L over {a, b} waarvan alle strings beginnen met aa en eindigen op bb. Opdracht 6. Definieer een taal L over {a,b} met een even lengte. Vraag 1. Wat is de eigenschap van de strings van de taal L = {λ,aa,aaaa} over {a}? Kan dat ook eenvoudiger worden gedefinieerd? Talen & automaten Week 1: Inleiding 21
Reguliere verzamelingen Definition 14. Stel Σ is een alfabet. De reguliere verzamelingen over Σ zijn recursief als volgt gedefinieerd: 1. Basis:, {λ} en {a}, voor elke a Σ, zijn reguliere verzamelingen over Σ. 2. Recursieve stap: Als X en Y reguliere verzamelingen over Σ zijn, dan ook: X Y,XY en X. 3. Afsluiting: X is alleen een reguliere verzameling als X in een eindig aantal recursiestappen uit de basis kan worden verkregen. Een taal is regulier, als die gedefinieerd is als een regulier verzameling. Voorbeeld 7. De taal van voorbeeld 5, de verzameling strings die bb bevatten is regulier over {a,b}. aaaa 1. De basis {a} en {b} is regulier. aaaa 1.5 Dus {a, b} = {a} {b} regulier over {a, b}. aaaa 2. De vereniging en de Kleene-ster geven {a,b} is aaaa1.a regulier over {a,b}. aaaa 3. De concatenatie {b}{b} = {bb} is regulier. aaaa 4. Twee keer concatenatie geeft: {a,b} {bb}{a,b} Opdracht 6. Bewijs dat de verzameling strings over {a, b}, die beginnen en eindigen op een a en tenminste één b bevatten regulier is. Talen & automaten Week 1: Inleiding 22
Reguliere expressies Definition 15. Stel Σ is een alfabet. De reguliere expressies over Σ zijn recursief als volgt gedefinieerd: 1. Basis:, λ en a, voor elke a Σ, zijn reguliere expressies over Σ. 2. Recursieve stap: Als u en v reguliere expressies over Σ zijn, dan ook: (u v), (uv) en (u ). 2 3. Afsluiting: X is alleen een reguliere expressie als X in een eindig aantal recursiestappen uit de basis kan worden verkregen. Voorbeeld 8. {a,b}. De expressie ba(a b) ab is regulier over verzameling expressie motivering 1.{a} a basis 2.{b} b basis 3.{a}{b} = {ab} ab 1, 2 concatenatie 4.{a} {b} = {a,b} a b 1,2 vereniging 5.{b}{a} = {ba} ba 2, 1 concatenatie 6.{a,b} (a b) 4 Kleene ster 7.{ba}{a,b} {ab} ba(a b) ab 5,6,3 concatenatie 2 Het aantal haakjes kan gereduceerd worden door: a: gebruik te maken van associativiteit van en concatenatie (u(vw) = (uv)w = uvw) b: een prioriteitsvolgorde af te spreken: 1 Kleene-ster, 2 concatenatie, 3 vereniging Talen & automaten Week 1: Inleiding 23
Equivalenties van reguliere expressies 1. u = u = 2. λu = uλ = u 3. = λ 4. λ = λ 5. u v = v u 6. u = u 7. u u = u 8. u = (u ) 9. u(v w) = uv uw 10. (u v)w = uw vw 11. (uv) u = u(vu) (u v) = (u v) = u (u v) = (u vu ) 12. = (u v ) = u (vu ) = (u v) u Talen & automaten Week 1: Inleiding 24
Toepassing van reguliere expressies Reguliere expressies in tekstverwerker Talen & automaten Week 1: Inleiding 25