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 3 / 31
Informatie Docenten: Jeroen Keiren Wan Fokkink kamer: T453 T443 email: j.j.a.keiren@vu.nl w.j.fokkink@vu.nl www: www.jeroenkeiren.nl www.cs.vu.nl/~wanf Werkcollegedocent: Franz Geiger Opbouw: 11 hoorcolleges 13 werkcolleges inleveropgaven (bonus: 0.1 punt/set, 1 set/week) schriftelijk tentamen Homepage: http://www.cs.vu.nl/~tcs/ac/ 4 / 31
Verwachtingen en Inhoud Individueel (2 min.) Bron: http://mimiandeunice.com/2011/08/15/exploitation/ Schrijf 2 verwachtingen voor dit vak op In groepjes van 3 (5 min.) Introduceer jezelf aan je groepsgenoten Bespreek jullie verwachtingen voor dit vak. Identificeer overeenkomsten en verschillen Klassikaal (7 min.) Verzamel verwachtingen 5 / 31
Rode draad van dit vak Programmeren = algoritmes + logica Aan computer ligt universeel berekeningsmechanisme ten grondslag Verschillende toepassingen = verschillende formalismes: Patroonherkenning: reguliere talen Parseren: contextvrije talen, grammatica s Computerberekening: Turing machines RSA kraken: quantum-computer 6 / 31
Rode draad van dit vak Wat is er mogelijk met een computer? Sommige (op het oog simpele) problemen zijn onbeslisbaar (PCP, Predikaat logica) Sommige problemen zijn waarschijnlijk niet efficiënt oplosbaar door een computer (NP-compleetheid, TSP, Satisfiability) Nadruk ligt op constructies en algoritmes (ipv formele bewijzen) 7 / 31
Rode draad van dit vak Typische vragen die we beantwoorden: Wat is een (programmeer)taal? Hoe kunnen talen worden herkend door automaten (computers)? Welke problemen kunnen worden herkend door types automaten? Hoeveel tijd/geheugen kost dit oplossen? 8 / 31
Strings Een computerprogramma: neemt input-string produceert output-string bestaat uit string van symbolen String notatie: u, v, w, x, y, z eindige rij symbolen (a, b, c) uit (niet-leeg) eindig input alfabet Σ Lege string: λ Symbool: a Σ 9 / 31
Operaties op Strings (1) Concatenatie Als v = a 1 a n en w = b 1 b m, dan vw = a 1 a n b 1 b m Lengte a 1 a n = n λ = 0 va = v + 1 10 / 31
Operaties op Strings (2) Macht v k bestaat uit k concatenaties van v s v 0 = λ v k+1 = v k v Reverse (a 1 a n ) R = a n a 1 λ R = λ (va) R = av R 11 / 31
Formele talen Formele taal = verzameling strings Voorbeeld Alle parseerbare C programma s vormen een taal. Meer specifiek: Σ noteert de verzameling van alle strings over Σ (Formele) taal is deelverzameling van Σ 12 / 31
Dit vak Precies beschrijven en bestuderen van (meestal oneindige) talen: programmeertalen, specificatietalen,... Bij een taal kun je beschouwen: syntax: de vorm, welke strings zitten in de taal semantiek: de betekenis van strings in de taal Wij concentreren ons voorlopig op de syntax. 13 / 31
Formele talen: voorbeelden Laat Σ = {a, b} {ab, aab, bbaaabb} is (eindige) taal {ab n a n 1} is (oneindige) taal: {aba, abba, abbba, abbbba,...} {a n b n n 0} is (oneindige) taal: {λ, ab, aabb, aaabbb, aaaabbbb,...} 14 / 31
Operaties op talen (1) Taal is verzameling strings, dus,,,, \,... hebben betekenis voor talen Complement L: alle strings die niet in taal L zitten Concatenatie, reverse en macht voor talen: L 1 L 2 = {xy x L 1 y L 2 } L R = {x R x L} L 0 = {λ} L n+1 = L n L (n 0) Pas op: L 2 = {uv u, v L} {uu u L} 15 / 31
Operaties op talen (2) Kleene ster: L = L + = L i = L 0 L 1 L 2 L 3 i=0 L i = L 1 L 2 L 3 i=1 Dus L = L + {λ} 16 / 31
Vraag (In tweetallen, 2 min.) Laat Σ = {a, b} en L = {ab n n 0} Beschrijf de volgende talen als set: L R L L R L R Conclusie Verzamelingen zijn niet ideaal om (operaties op) talen te beschrijven. 17 / 31
Deterministic finite accepter Een deterministic finite accepter, kortweg dfa, bestaat uit: een eindige verzameling Q van toestanden een eindig input alfabet Σ elke toestand en elk symbool uit Σ geeft een resulterende toestand, beschreven door een transitiefunctie δ : Q Σ Q een starttoestand q 0 Q een verzameling F Q van eindtoestanden 18 / 31
Dfa als transitiegraaf Een dfa wordt getekend als een transitiegraaf, bestaande uit: toestanden pijlen met label uit Σ starttoestand heeft extra inkomende pijl. eindtoestanden als dubbel rondje Voorbeeld Σ = {a, b} q 1 a b a a b q 0 q 2 q 4 b b a a q 3 b 19 / 31
Vraag (Individueel, 2 min.) Geef een dfa die {a 2n+1, b 2n n 0} accepteert. 20 / 31
Reguliere talen Dfa M = (Q, Σ, δ, q 0, F ) definieert een taal (q, aw) (r, w) als δ(q, a) = r is de reflexief-transitieve afsluiting van De taal geaccepteerd door dfa M is L(M) = {w Σ (q 0, w) (r, λ) met r F } Taal L heet regulier als er een dfa M bestaat met L(M) = L. 21 / 31
Vraag (Quick questions, klassikaal) Laat Σ = {a, b} Laat zien dat de volgende talen regulier zijn: {λ} {a n b n 0} {w {a, b} w bevat een substring bab} {w {a, b} w bevat geen substring bab} 22 / 31
Stellingen voor reguliere talen Stelling Als L regulier is, dan is L ook regulier. Bewijs. L(M) = L voor een dfa M = (Q, Σ, δ, q 0, F ). N = (Q, Σ, δ, q 0, Q\F ) is een dfa met L(N) = L. Stelling Als L, L 1 en L 2 regulier zijn, dan zijn L 1 L 2, en L R ook regulier. Merk op: {a n b n n 0} is niet regulier. Intuïtie Een dfa heeft slechts een begrensd geheugen (de toestanden). Bewijzen van deze drie beweringen volgen later. 23 / 31
Vragen (Quick check, klassikaal) Geef een deterministic accepter met oneindig veel toestanden voor {a n b n n 0}. Is elke eindige taal regulier? 24 / 31
Nondeterministic finite accepter Dfa is deterministisch: elke string leidt tot precies één pad vanuit de starttoestand door de transitiegraaf, omdat bij elke q Q en elke a Σ precies één pijl uit q is met label a. (δ is een functie van Q Σ naar Q) In nondeterministic finite accepter, kortweg nfa: toestand kan nul of meerdere uitgaande pijlen hebben met hetzelfde label kan lege stappen bevatten: pijlen met label λ, die geen symbool uit de input-string opeten. Nfa s worden gebruikt in software engineering, en voor het modelleren van hardware circuits, compilers en netwerk-protocollen 25 / 31
Nondeterministic finite accepter Definitie van nfa = definitie dfa, behalve: δ : Q (Σ {λ}) 2 Q (2 Q is de verzameling van alle deelverzamelingen van Q.) (q, αw) (r, w) als r δ(q, α), met α Σ {λ}. Taal geaccepteerd door nfa M: L(M) = {w Σ (q 0, w) (r, λ) met r F } 26 / 31
Dfa s en nfa s zijn even expressief Stelling Een taal L wordt door een nfa geaccepteerd L is regulier. Constructie (Subsets) M = (Q, Σ, δ, q 0, F ) is een nfa. We construeren een dfa N D = (Q D, Σ, δ D, q 0D, F D ). Q D = 2 Q δ D (X, a) = {r Q (q, a) (r, λ) voor een q X } q 0D = {r Q (q 0, λ) (r, λ)} F D = {X Q X F } Voor elke w Σ en q Q geldt (q 0, w) (q, λ) (q 0D, w) (X, λ) met q X. Hieruit volgt L(N D ) = L(M). 27 / 31
Vraag (Quick check, klassikaal) Gegeven de volgende nfa b a q 0 λ q 1 b Construeer een dfa die dezelfde taal accepteert. 28 / 31
Tot slot (Individueel, 2 min.) Schrijf voor jezelf de 3 punten uit dit college op die jij het belangrijkst vindt. 29 / 31
Vooruit kijken Lees: Linz 1.2 1.2, 2.1 2.3 Maak: Linz 1.2: 2, 4, 8, 10 Linz 2.1: 1, 2d, 3, 7b, 9b,f, 11 Linz 2.2: 12 Linz 2.3: 2, 3, 6, 12 Volgend college: Alternatieven voor beschrijven reguliere talen: reguliere expressies grammatica s 30 / 31