Automten & Complexiteit (X 401049) Eigenschppen vn reguliere tlen Jeroen Keiren j.j..keiren@vu.nl VU University Amsterdm 9 Februri 2015
Reguliere tlen Vorig college: De volgende beweringen zijn equivlent: er is een df M met L(M) = L er is een nf M met L(M) = L er is een rechts-lineire grmmtic G met L(G) = L er is een links-lineire grmmtic G met L(G) = L er is een reguliere expressie r met L(r) = L 2 / 32
Outline College 3 Elementire eigenschppen vn reguliere tlen String mtching Minimle df s Lexicle nlyse Niet reguliere tlen en de pompstelling Afronding 3 / 32
Elementire eigenschppen voor reguliere tlen Stelling Als L 1, L 2, L reguliere tlen zijn, dn zijn L 1 L 2, L 1 L 2, L 1 L 2, L, L 1 \L 2, L, L R ook regulier. Bewijs. L(r 1 ) = L 1, L(r 2 ) = L 2, L(r) = L voor reguliere expressies r 1, r 2, r. L 1 L 2 = L(r 1 + r 2 ) is regulier L 1 L 2 = L(r 1 r 2 ) is regulier L = L(r ) is regulier L wordt geccepteerd door een df (Q, Σ, δ, q 0, F ). L = L(Q, Σ, δ, q 0, Q\F ) is regulier L 1 L 2 = L 1 L 2 is regulier L 1 \L 2 = L 1 L 2 is regulier 5 / 32
L R is regulier Constructie Voor reguliere expressies r is de reguliere expressie rev(r) inductief gedefinieerd door: rev( ) = rev(λ) = λ rev() = ( Σ) rev(r 1 + r 2 ) = rev(r 1 ) + rev(r 2 ) rev(r 1 r 2 ) = rev(r 2 ) rev(r 1 ) rev(r ) = rev(r) Met inductie nr de structuur vn r kn bewezen worden dt L(rev(r)) = L(r) R Kies een reguliere expressie r met L(r) = L. L R = L(r) R = L(rev(r)) is regulier. 6 / 32
Elementire eigenschppen vn reguliere tlen Beslisbrheid string mtching Stelling Het is beslisbr of een string u in een reguliere tl L zit. Bewijs. 1. Representeer L in de vorm vn een df. 2. Bepl of u door de df wordt geccepteerd. On-the-fly genertie vn de df (t.o.v. u) voorkomt toestndsexplosie. 7 / 32
Elementire eigenschppen vn reguliere tlen Beslisbrheid tl equivlentie Stelling Het is beslisbr of twee reguliere tlen L 1 en L 2 gelijk zijn. Bewijs. Lt L 3 = (L 1 L 2 ) (L 1 L 2 ). Construeer een df M met L(M) = L 3. Bepl of er een pd is in M vn de strttoestnd nr een eindtoestnd. Zoj, dn L 1 L 2 ; zonee, dn L 1 = L 2. 8 / 32
String mtching (Thompson, 1968) Het volgende lgoritme (bijv. voor grep in Unix) zoekt of string u een substring bevt die in L(r) zit. 1. Beschrijf de reguliere expressie Σ r ls een nf. 2. Genereer on-the-fly het pd vn u in de bijbehorende df. 3. Termineer ls een eindtoestnd wordt bereikt. Worst-cse time complexity: O( r u ) Bouwen vn de hele df zou exponentieel veel tijd/geheugen kosten (in r ). Jv, Perl, PHP, Python gebruiken een string mtching lgoritme met bcktrcking dt exponentieel veel tijd kn kosten (in u ). 10 / 32
String mtching Voorbeeld r = ( b + bb )b leidt tot de nf b q 0 λ q 1 q 2 b q 3 q 4 b q 5 b q 6 We mtchen r ten opzichte vn u = bbbb. b 01 b b 012 0123 0145 0125 0146 b b b b q 0 q 0 q 2 q 4 q 5 q 6 11 / 32
Ken Thompson Dit string mtching lgoritme werd ontwikkeld door Ken Thompson. Smen met Dennis Ritchie won hij in 1983 de Turing wrd voor het operting systeem Unix. Ken Thompson (geb. 1943) ontwikkelde ook een dtbse voor schkeindspelen met mx. zes stukken. Dennis Ritchie (1941-2011) ontwikkelde ook de progrmmeertl C. 12 / 32
Minimle df s (Hopcroft, 1971) Gegeven een df M = (Q, Σ, δ, q 0, F ), construeren we de (unieke) df M met een miniml ntl toestnden zo dt L(M) = L( M). We nemen n dt de onbereikbre toestnden uit M zijn verwijderd. 14 / 32
Minimle df s (2) q, q Q zijn onderscheidbr ls er een w Σ is zo dt (q, w) (r, λ) en (q, w) (s, λ) met r F en s F, of vice vers. Stp 1 Prtitioneer Q in collecties niet onderscheidbre toestnden. De initiële prtitie is Q\F, F. Als er R en S in de prtitie vn Q zijn zo dt voor zekere Σ en r, r R: dn splitsen we R in δ(r, ) S en δ(r, ) S, {r R δ(r, ) S} {r R δ(r, ) S} We zijn klr ls er geen split meer kn worden uitgevoerd. 15 / 32
Minimle df s (3) Stp 2 Lt Q 1,..., Q n de uiteindelijke prtitie vn Q zijn. Dit zijn de toestnden vn de minimle df M, met ls pijlen: Q i Qj δ(q, ) Q j voor q Q i. De strttoestnd is de verzmeling die q 0 bevt. De eindtoestnden zijn de deelverzmelingen vn F. Worst-cse time complexity: O( Σ Q 2 ). Iedere split kost mx. O( Σ Q ), en er zijn mx. Q 1 splits. 16 / 32
Vrg Minimliseer de df q 1 b b q 0 q 2 q 4 b b q 3 b 17 / 32
Minimliseren vn nf s Het minimliseren vn nf s is heel lstig. Voorbeeld c b b c b c Stelling Het minimliseren vn nf s is PSpce-compleet. De definitie vn PSpce-compleet volgt lter. 18 / 32
Lexicle nlyse Lexicle nlyse zet een rij krkters (bijv. vn een progrmm) om in een rij tokens (, b,...). Reguliere expressies geven ptronen n. Bij iedere reguliere expressie hoort een token. Lexicle nlyse zoekt herhldelijk nr de lngste prefix vn de input-string die correspondeert met één vn de reguliere expressies. Deze prefix wordt omgezet in het bijbehorende token. 20 / 32
Lexicle nlyse Lt reguliere expressies r 1,..., r n de ptronen ngeven. r 1 + + r n wordt omgezet in een nf. Deze nf wordt omgezet in een minimle df. Als geen prefix met een reguliere expressie correspondeert, volgt een foutmelding. Als de lngste prefix correspondeert met meerdere reguliere expressies, wordt er één gekozen. 21 / 32
Lexicle nlyse JvCC en LEX genereren utomtisch een lexicle nlystor, vnuit de reguliere expressies, op bsis vn de bijbehorende minimle df. Voorbeeld FORTRAN beschrijft gehele getllen met de BNF grmmtic digit ::= 0 1 9 integer ::= digit + sign ::= + λ signed-integer ::= sign integer 22 / 32
Lexicle nlyse Voorbeeld (vervolg) De bijbehorende minimle df is +, 0,...,9 0,...,9 0,...,9 Doordt gezocht wordt nr een lngste prefix, wordt bijv. +52 niet geïnterpreteerd ls losse ptronen +5 en 2, mr ls één ptroon. 23 / 32
Niet-reguliere tlen Stelling L = { n b n n 0} is niet regulier. Bewijs. Stel dt M = (Q, {, b}, δ, q 0, F ) een df is met L(M) = L. Omdt Q eindig is, geldt (q 0, j ) (r, λ) en (q 0, k ) (r, λ), voor zekere j k en r Q. Dn geldt ook (q 0, j b j ) (s, λ) en (q 0, k b j ) (s, λ), voor zekere s Q. Echter, j b j L en k b j L. Tegensprk, dus L is niet regulier. We generliseren nu het idee vn dit bewijs. 25 / 32
Pompstelling voor reguliere tlen (1959) Stelling Zij L een reguliere tl. Er is een m > 0 zo dt voor elke w L met w m geldt: w = xyz met xy m en y 1, en xy i z L voor elke i 0. Bewijs. L = L(M) voor een df M, met m toestnden. Iedere w L met w m doorloopt een cykel in M: y x z toestnd die ls eerste 2 ml wordt bezocht door w 26 / 32
Pompstelling Voorbeeld De pompstelling kn gebruikt worden om te bewijzen dt een tl niet regulier is. Stel dt L = {w {, b} w = w R } regulier is. Volgens de pompstelling is er een m > 0 met m b m = xyz wrbij xy m, y 1, en xy i z L voor elke i 0. xy m en y 1, dus x = j en y = k met j 0 en k 1. Dus xyyz = m+k b m L. Tegensprk, dus L is niet regulier. 27 / 32
Pompstelling ls spel Ps op: Een contrdictie vn de pompstelling voor een specifieke wrde vn m, of vn x, y, z, is niet fdoende! ( m > 0 w L ( w m) x, y, z (w = xyz, xy m, y 1) i 0 : xy i z L) = m > 0 w L ( w m) x, y, z (w = xyz, xy m, y 1) i 0 : xy i z L De pompstelling ls spel: Gegeven een tl L. 1. De tegenstnder kiest m. 2. Wij kiezen een w L met w m. 3. De tegenstnder kiest x, y, z met w = xyz, xy m en y 1. 4. Als wij een i 0 kunnen kiezen met xy i z L, dn winnen wij. L voldoet niet n de pompstelling ls wij ltijd kunnen winnen. 28 / 32
Vrgen Lt met de pompstelling zien dt de tl { n b n n 0} niet regulier is. Is { 2k k 0} regulier? Wrom kn de tegenstnder ltijd winnen ls L eindig is? 29 / 32
Smengevt Als L 1, L 2, L regulier, dn L 1 L 2, L 1 L 2, L 1 L 2, L, L 1 \ L 2, L, L R ook String mtching: construeer df on-the-fly Minimle df s m.b.v. Hopcroft s lgoritme Gebruik pompstelling om tl niet regulier te bewijzen 31 / 32
Vooruit kijken Lees: Linz 2.4, 4.1 4.3 Mk: Linz 4.1: 17, 20, 26 (Let op! regulr moet right-liner zijn, tweeml) Linz 4.2: 5, 12 Linz 2.4: 1, 4, 6 Linz 4.3: 1, 3, 4ef Volgend college: Contextvrije tlen: Definitie Trnsformties en normlvormen Prseerlgoritmes 32 / 32