Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X...

26
Automaten & Complexiteit (X 401049) Eigenschappen van reguliere talen Jeroen Keiren [email protected] VU University Amsterdam 9 Februari 2015

Transcript of Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X...

Page 1: Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X 401049) Eigenschappen van reguliere talen Jeroen Keiren j.j.a.keiren@vu.nl VU University

Automaten & Complexiteit (X 401049)Eigenschappen van reguliere talen

Jeroen [email protected]

VU University Amsterdam

9 Februari 2015

Page 2: Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X 401049) Eigenschappen van reguliere talen Jeroen Keiren j.j.a.keiren@vu.nl VU University

Reguliere talen

Vorig college:

De volgende beweringen zijn equivalent:

I er is een dfa M met L(M) = L

I er is een nfa M met L(M) = L

I er is een rechts-lineaire grammatica G met L(G ) = L

I er is een links-lineaire grammatica G met L(G ) = L

I er is een reguliere expressie r met L(r) = L

2 / 32

Page 3: Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X 401049) Eigenschappen van reguliere talen Jeroen Keiren j.j.a.keiren@vu.nl VU University

Outline

College 3Elementaire eigenschappen van reguliere talenString matchingMinimale dfa’sLexicale analyseNiet reguliere talen en de pompstellingAfronding

3 / 32

Page 4: Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X 401049) Eigenschappen van reguliere talen Jeroen Keiren j.j.a.keiren@vu.nl VU University

Elementaire eigenschappen voor reguliere talen

Stelling

Als L1, L2, L reguliere talen zijn, dan zijn L1 ∪ L2, L1 ∩ L2, L1L2, L,L1\L2, L∗, LR ook regulier.

Bewijs.

L(r1) = L1, L(r2) = L2, L(r) = L voor reguliere expressies r1, r2, r .

I L1 ∪ L2 = L(r1 + r2) is regulier

I L1L2 = L(r1 · r2) is regulier

I L∗ = L(r∗) is regulier

I L wordt geaccepteerd door een dfa (Q,Σ, δ, q0,F ).L = L(Q,Σ, δ, q0,Q\F ) is regulier

I L1 ∩ L2 = L1 ∪ L2 is regulier

I L1\L2 = L1 ∩ L2 is regulier

5 / 32

Page 5: Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X 401049) Eigenschappen van reguliere talen Jeroen Keiren j.j.a.keiren@vu.nl VU University

LR is regulierConstructie

Voor reguliere expressies r is de reguliere expressie rev(r) inductiefgedefinieerd door:

rev(∅) = ∅rev(λ) = λrev(a) = a (a ∈ Σ)rev(r1 + r2) = rev(r1) + rev(r2)rev(r1 · r2) = rev(r2) · rev(r1)rev(r∗) = rev(r)∗

Met inductie naar de structuur van r kan bewezen worden dat

L(rev(r)) = L(r)R

Kies een reguliere expressie r met L(r) = L.

LR = L(r)R = L(rev(r)) is regulier.

6 / 32

Page 6: Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X 401049) Eigenschappen van reguliere talen Jeroen Keiren j.j.a.keiren@vu.nl VU University

Elementaire eigenschappen van reguliere talenBeslisbaarheid string matching

Stelling

Het is beslisbaar of een string u in een reguliere taal L zit.

Bewijs.

1. Representeer L in de vorm van een dfa.

2. Bepaal of u door de dfa wordt geaccepteerd.

On-the-fly generatie van de dfa (t.o.v. u) voorkomt toestandsexplosie.

7 / 32

Page 7: Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X 401049) Eigenschappen van reguliere talen Jeroen Keiren j.j.a.keiren@vu.nl VU University

Elementaire eigenschappen van reguliere talenBeslisbaarheid taal equivalentie

Stelling

Het is beslisbaar of twee reguliere talen L1 en L2 gelijk zijn.

Bewijs.

I Laat L3 = (L1 ∩ L2) ∪ (L1 ∩ L2).

I Construeer een dfa M met L(M) = L3.

I Bepaal of er een pad is in M van de starttoestand naar eeneindtoestand.

I Zoja, dan L1 6= L2; zonee, dan L1 = L2.

8 / 32

Page 8: Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X 401049) Eigenschappen van reguliere talen Jeroen Keiren j.j.a.keiren@vu.nl VU University

String matching (Thompson, 1968)

Het volgende algoritme (bijv. voor grep in Unix) zoekt of string ueen substring bevat die in L(r) zit.

1. Beschrijf de reguliere expressie Σ∗ · r als een nfa.

2. Genereer “on-the-fly ” het pad van u in de bijbehorende dfa.

3. Termineer als een eindtoestand wordt bereikt.

Worst-case time complexity: O(|r |·|u|)

Bouwen van de hele dfa zou exponentieel veel tijd/geheugenkosten (in |r |).

Java, Perl, PHP, Python gebruiken een string matching algoritmemet backtracking dat exponentieel veel tijd kan kosten (in |u|).

10 / 32

Page 9: Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X 401049) Eigenschappen van reguliere talen Jeroen Keiren j.j.a.keiren@vu.nl VU University

String matching

Voorbeeldr = a(aa∗b + bb∗a)b leidt tot de nfa

q0λ

q1 q2a

q3

q4b

b

a

a

q6q5

a

b

a

b

b

We matchen r ten opzichte van u = aaababbb.

01a

012 0123 0145 0125 0146a b a b

a

a a a b a b b bq0 q0 q2 q4 q5 q6 11 / 32

Page 10: Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X 401049) Eigenschappen van reguliere talen Jeroen Keiren j.j.a.keiren@vu.nl VU University

Ken Thompson

Dit string matching algoritme werd ontwikkeld door Ken Thompson.

Samen met Dennis Ritchie won hij in 1983 de Turing award voorhet operating systeem Unix.

Ken Thompson (geb. 1943) ontwikkelde ook een database voorschaakeindspelen met max. zes stukken.

Dennis Ritchie (1941-2011) ontwikkelde ook de programmeertaal C.

12 / 32

Page 11: Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X 401049) Eigenschappen van reguliere talen Jeroen Keiren j.j.a.keiren@vu.nl VU University

Minimale dfa’s (Hopcroft, 1971)

Gegeven een dfa M = (Q,Σ, δ, q0,F ), construeren we de (unieke)dfa M met een minimaal aantal toestanden zo dat L(M) = L(M).

We nemen aan dat de onbereikbare toestanden uit M zijn verwijderd.

14 / 32

Page 12: Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X 401049) Eigenschappen van reguliere talen Jeroen Keiren j.j.a.keiren@vu.nl VU University

Minimale dfa’s (2)

q, q′ ∈ Q zijn onderscheidbaar als er een w ∈ Σ∗ is zo dat(q,w) `∗ (r , λ) en (q′,w) `∗ (s, λ) met r ∈ F en s 6∈ F , of vice versa.

Stap 1

Partitioneer Q in collecties niet onderscheidbare toestanden.

I De initiele partitie is Q\F , F .

I Als er R en S in de partitie van Q zijn zo dat voor zekerea ∈ Σ en r , r ′ ∈ R:

δ(r , a) ∈ S en δ(r ′, a) 6∈ S ,

dan splitsen we R in

{r ∈ R | δ(r , a) ∈ S} {r ∈ R | δ(r , a) 6∈ S}

We zijn klaar als er geen split meer kan worden uitgevoerd.

15 / 32

Page 13: Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X 401049) Eigenschappen van reguliere talen Jeroen Keiren j.j.a.keiren@vu.nl VU University

Minimale dfa’s (3)

Stap 2

Laat Q1, . . . ,Qn de uiteindelijke partitie van Q zijn.

Dit zijn de toestanden van de minimale dfa M, met als pijlen:

Qia→ Qj ⇔ δ(q, a) ∈ Qj voor q ∈ Qi .

De starttoestand is de verzameling die q0 bevat.

De eindtoestanden zijn de deelverzamelingen van F .

Worst-case time complexity: O(|Σ|·|Q|2).

Iedere split kost max. O(|Σ|·|Q|), en er zijn max. |Q| − 1 splits.

16 / 32

Page 14: Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X 401049) Eigenschappen van reguliere talen Jeroen Keiren j.j.a.keiren@vu.nl VU University

Vraag

Minimaliseer de dfa

q0 q4q2

a

q1

bb

a

q3a

bba

a b

17 / 32

Page 15: Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X 401049) Eigenschappen van reguliere talen Jeroen Keiren j.j.a.keiren@vu.nl VU University

Minimaliseren van nfa’s

Het minimaliseren van nfa’s is heel lastig.

Voorbeeld

a

b c

a

a

a

a

c c

a

bb

a

Stelling

Het minimaliseren van nfa’s is PSpace-compleet.

De definitie van PSpace-compleet volgt later.

18 / 32

Page 16: Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X 401049) Eigenschappen van reguliere talen Jeroen Keiren j.j.a.keiren@vu.nl VU University

Lexicale analyse

Lexicale analyse zet een rij karakters (bijv. van een programma)om in een rij tokens (a, b, ...).

Reguliere expressies geven patronen aan.

Bij iedere reguliere expressie hoort een token.

Lexicale analyse zoekt herhaaldelijk naar de langste prefix van deinput-string die correspondeert met een van de reguliere expressies.

Deze prefix wordt omgezet in het bijbehorende token.

20 / 32

Page 17: Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X 401049) Eigenschappen van reguliere talen Jeroen Keiren j.j.a.keiren@vu.nl VU University

Lexicale analyse

Laat reguliere expressies r1, . . . , rn de patronen aangeven.

r1 + · · ·+ rn wordt omgezet in een nfa.

Deze nfa wordt omgezet in een minimale dfa.

Als geen prefix met een reguliere expressie correspondeert,volgt een foutmelding.

Als de langste prefix correspondeert met meerdere reguliereexpressies, wordt er een gekozen.

21 / 32

Page 18: Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X 401049) Eigenschappen van reguliere talen Jeroen Keiren j.j.a.keiren@vu.nl VU University

Lexicale analyse

JavaCC en LEX genereren automatisch een lexicale analysator,vanuit de reguliere expressies, op basis van de bijbehorendeminimale dfa.

VoorbeeldFORTRAN beschrijft gehele getallen met de BNF grammatica

〈digit〉 ::= 0 | 1 | · · · | 9〈integer〉 ::= 〈digit〉+〈sign〉 ::= + | − | λ〈signed-integer〉 ::= 〈sign〉〈integer〉

22 / 32

Page 19: Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X 401049) Eigenschappen van reguliere talen Jeroen Keiren j.j.a.keiren@vu.nl VU University

Lexicale analyse

Voorbeeld (vervolg)De bijbehorende minimale dfa is

+ , −

0,...,90,...,9

0,...,9

Doordat gezocht wordt naar een langste prefix, wordt bijv. +52 nietgeınterpreteerd als losse patronen +5 en 2, maar als een patroon.

23 / 32

Page 20: Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X 401049) Eigenschappen van reguliere talen Jeroen Keiren j.j.a.keiren@vu.nl VU University

Niet-reguliere talen

Stelling

L = {anbn | n ≥ 0} is niet regulier.

Bewijs.

Stel dat M = (Q, {a, b}, δ, q0,F ) een dfa is met L(M) = L.

Omdat Q eindig is, geldt (q0, aj) `∗ (r , λ) en (q0, a

k) `∗ (r , λ),voor zekere j 6= k en r ∈ Q.

Dan geldt ook (q0, ajb j) `∗ (s, λ) en (q0, a

kb j) `∗ (s, λ), voorzekere s ∈ Q.

Echter, a jb j ∈ L en akb j 6∈ L.

Tegenspraak, dus L is niet regulier.

We generaliseren nu het idee van dit bewijs.

25 / 32

Page 21: Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X 401049) Eigenschappen van reguliere talen Jeroen Keiren j.j.a.keiren@vu.nl VU University

Pompstelling voor reguliere talen (1959)

Stelling

Zij L een reguliere taal. Er is een m > 0 zo dat voor elke w ∈ Lmet |w | ≥ m geldt:

w = xyz

met |xy | ≤ m en |y | ≥ 1, en xy iz ∈ L voor elke i ≥ 0.

Bewijs.

L = L(M) voor een dfa M, met m toestanden.

Iedere w ∈ L met |w | ≥ m doorloopt een cykel in M:

x

y

z

toestand die als eerste 2 maal wordt bezocht door w

|xy | ≤ m, |y | ≥ 1, en xy iz ∈ L voor elke i ≥ 0.

26 / 32

Page 22: Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X 401049) Eigenschappen van reguliere talen Jeroen Keiren j.j.a.keiren@vu.nl VU University

PompstellingVoorbeeld

De pompstelling kan gebruikt worden om te bewijzen dat een taalniet regulier is.

Stel dat L = {w ∈ {a, b}∗ | w = wR} regulier is.

Volgens de pompstelling is er een m > 0 met

ambam = xyz

waarbij |xy | ≤ m, |y | ≥ 1, en xy iz ∈ L voor elke i ≥ 0.

|xy | ≤ m en |y | ≥ 1, dus x = a j en y = ak met j ≥ 0 en k ≥ 1.

Dus xyyz = am+kbam 6∈ L.

Tegenspraak, dus L is niet regulier.

27 / 32

Page 23: Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X 401049) Eigenschappen van reguliere talen Jeroen Keiren j.j.a.keiren@vu.nl VU University

Pompstelling als spel

Pas op: Een contradictie van de pompstelling voor een specifiekewaarde van m, of van x , y , z , is niet afdoende !

¬(∃m > 0 ∀w ∈ L (|w | ≥ m) ∃x , y , z (w = xyz , |xy | ≤ m, |y | ≥ 1) ∀i ≥ 0 :xy iz ∈ L)

= ∀m > 0 ∃w ∈ L (|w | ≥ m) ∀x , y , z (w = xyz , |xy | ≤ m, |y | ≥ 1) ∃ i ≥ 0 :xy iz 6∈ L

De pompstelling als spel: Gegeven een taal L.

1. De tegenstander kiest m.

2. Wij kiezen een w ∈ L met |w | ≥ m.

3. De tegenstander kiest x , y , z met w = xyz , |xy | ≤ m en|y | ≥ 1.

4. Als wij een i ≥ 0 kunnen kiezen met xy iz 6∈ L, dan winnen wij.

L voldoet niet aan de pompstelling als wij altijd kunnen winnen.28 / 32

Page 24: Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X 401049) Eigenschappen van reguliere talen Jeroen Keiren j.j.a.keiren@vu.nl VU University

Vragen

Laat met de pompstelling zien dat de taal {anbn | n ≥ 0}niet regulier is.

Is {a2k | k ≥ 0} regulier ?

Waarom kan de tegenstander altijd winnen als L eindig is ?

29 / 32

Page 25: Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X 401049) Eigenschappen van reguliere talen Jeroen Keiren j.j.a.keiren@vu.nl VU University

Samengevat

I Als L1, L2, L regulier, dan L1 ∪ L2, L1 ∩ L2, L1L2, L, L1 \ L2,L∗, LR ook

I String matching: construeer dfa on-the-fly

I Minimale dfa’s m.b.v. Hopcroft’s algoritme

I Gebruik pompstelling om taal niet regulier te bewijzen

31 / 32

Page 26: Automaten & Complexiteit (X 401049)tcs/ac/ac-03_properties_regular.pdfAutomaten & Complexiteit (X 401049) Eigenschappen van reguliere talen Jeroen Keiren j.j.a.keiren@vu.nl VU University

Vooruit kijken

Lees:

I Linz 2.4, 4.1–4.3

Maak:

I Linz 4.1: 17, 20, 26 (Let op! “regular” moet “right-linear”zijn, tweemaal)

I Linz 4.2: 5, 12

I Linz 2.4: 1, 4, 6

I Linz 4.3: 1, 3, 4ef

Volgend college:I Contextvrije talen:

I DefinitieI Transformaties en normaalvormenI Parseeralgoritmes

32 / 32