270 likes | 397 Views
Reguliere talen. Reguliere grammatica: versimpelde Contextvrije grammatica Finite-state Automaton: andere manier om een taal te beschrijven Reguliere Expressie nog een andere manier. Alle drie kunnen ze dezelfde talen beschrijven. triviaal. Stelling 12. onmogelijk. triviaal. Stelling 13.
E N D
Reguliere talen • Reguliere grammatica:versimpelde Contextvrije grammatica • Finite-state Automaton:andere manier om een taal te beschrijven • Reguliere Expressienog een andere manier Alle drie kunnen zedezelfde talen beschrijven
triviaal Stelling 12 onmogelijk triviaal Stelling 13 Stelling 16 triviaal NFA DFA RE ZRG CFG RG Stelling 11 Definitie 8 +9 Definitie 4 +6 Definitie (11) Definitie 1 +3 Definitie 2.5+7 Definitie 14+15 Stelling 7 Stelling 17 Reguliere talen: overzicht
DFA: DeterministischeFinite-state Automaton …bestaat uit 5 onderdelen: • Alfabet: Xeindige verzameling • Toestanden: Qeindige verzameling • Transitiefunctie: d :: QXQ • Start-toestand: S Q • Eind-toestanden: F Q
c a S Z b c X Y a Voorbeeld DFA • Alfabet {a, b, c} • Toestanden {S,X,Y,Z} • Transitiefunctie d Sa = Z d Sb = X d Sc = S d Xa = Y d Yc = Z • Start S • Eind {Z}
c a S Z b c X Y a Runnen van een DFA • Waar kom je uitbeginnend in Sals je de lettersvan een string accepteert? run :: (QXQ) Q [X] Q run d q [ ] = run d q (x:xs) = q run d (d qx) xs run = foldl
Definitie 3Taal van een DFA • Zij DFA = ( X, Q, d, S, F) • de taal van DFA is L(DFA) { z X* | run d S z F }
en: NFA: Non-deterministischeFinite-state Automaton …bestaat uit 5 onderdelen: • Alfabet: Xeindige verzameling • Toestanden: Qeindige verzameling • Transitiefunctie: d :: QXQ • Start-toestand: S Q • Eind-toestanden: F Q {Q}
c a S Z b c X Y a Voorbeeld DFA • Alfabet {a, b, c} • Toestanden {S,X,Y,Z} • Transitiefunctie d Sa = Z d Sb = X d Sc = S d Xa = Y d Yc = Z • Start S • Eind {Z}
c a S Z b a c X Y a Voorbeeld NFA • Alfabet {a, b, c} • Toestanden {S,X,Y,Z} • Transitiefunctie d Sa = {Z} d Sb = {X} d Sc = {S} d Xa = {Y, S} d Yc = {Z} • Start{S} • Eind {Z}
Runnen van een NFA • Waar kan je uitkomenbeginnend in één van deSals je de letters van een string accepteert? stap d qs a = { r | q qs, r d q a } run :: (QX{Q}) {Q} [X] {Q} run d qs [ ] = run d qs (x:xs) = qs run d (stap d qsx) xs run d qs = foldl (stap d) qs
Definitie 6Taal van een NFA • Zij NFA = ( X, Q, d, S, F) • de taal van NFA is • Dus: Je kunt uitkomen in een eindtoestand L(NFA) { z X* | q S, run d q z F }
StellingDFA en NFA even krachtig Bewijs: • Geef me een DFAdan construeer ik een NFA met dezelfde taal • Geef me een NFAdan construeer ik een DFA met dezelfde taal Triviaal (gebruik overal singleton-verzamelingen) Stelling 7
Y Z ZY a a c a X XY XZ XYZ b c a a S Z b b c S SY SZ SYZ b a c c X Y SX SXY SXZ SXYZ a Bewijs stelling 7Constructie NFA DFA enzovoort…
a a c a b c a a S Z b b c b a c c X Y a Bewijs stelling 7Constructie NFA DFA Z X S SY SZ
Bewijs stelling 7Constructie NFA DFA c c c a a Z S S Z a SY b a b a a c c b X SZ X Y b a
Met als elementen: A w waarbij A N w (NT)* DefinitieGrammatica Een grammatica bestaat uit (T, N, R, S) • Het alfabet T eindig • Hulpsymbolen N eindigTN=Ø • Productieregels R eindig • Een startsymbool S één S N
Definitie 8CFG/RG/ZRG Grammatica A w A N Regels van de vorm Aw met A N en • Contextvrije grammatica (CFG) • Reguliere grammatica (RG) • Zeer reguliere grammatica (ZRG) w (NT)* w T* N? w T+N? w = en A=S
X Y a Stelling 12L(NFA) L(RG) • Geef me een NFAdan construeer ik een RG met dezelfde taal • Alfabet Terminal symbolen • Toestanden Nonterminal symbolen • Start-toestand Start-symbool • Transitiefunctie Regels X aY Z Z
Voor elke voeg toe Y * Z Z w Y w • Verwijderalle U V • Voor elke voeg toe Y Z wY Z w • Verwijderalle voor U S U Stelling 11L(RG) L(ZRG) Geef me een RG, en ik hervorm z’n regels
T • N • R • S • X • Q • d • S • F C A B w w S Stelling 13L(ZRG) L(NFA) Geef me een ZRG, en ik construeer een NFA T { wT* | w deel van R} N {} A w BC w S {S}
T • X X Y a b c X X’ X” Y a b c Stelling 13aL(ZRG) L(NFA) Geef me een ZRG, en ik construeer een NFA { wT* | w deel van R} T … met hetzelfde alfabet: • vervang • door (en een paar extra toestanden)
Reguliere Expressie • Makkelijke manier om snel eveneen reguliere taal te definiëren • zonder toestanden en transitiefuncties… • zonder nonterminals en herschrijfregels… • …maar met een éénregelige formule!
en 15 … en beschrijfteen taal: % @ Ø {} • als aT a {a} • als R,SRET L(R) L(S) R+S • als R,SRET L(R) L(S) RS • als RRET L(R) * R* • als RRET L(R) (R) Definitie 14Reguliere Expressie Reguliere expressie RET over alfabet T is: worden inde praktijkniet gebruikt… …want wiewil dit nou…
StellingRE en RG even krachtig …maar anderslukt dit niet! Bewijs: • Geef me een REdan construeer ik een RG met dezelfde taal • Geef me een RGdan schrijf ik een RE met dezelfde taal Stelling 16 Stelling 17 (via 11, 13, 7)
Stelling 16L(RE) L(RG) Geef me een RE, en ik construeer met inductie een RG S S1 S S2 S1 … S2 … • % • @ • a • u+v • u v • u* S S a S S1 S1 … X bY Y ac Z S2 … S S1 S S1 …X bY Y ac Z S2S2 SS
Stelsel recursieve vergelijkingen A a S = aA +bB +cC A = … B = … C = … b S B c C Oplossen met behulp van A=z(x+y) A=zx+zy A=xA+z A=x* z Stelling 17L(DFA) L(RE) Geef me een DFA, en ik schrijf een RE + @
triviaal Stelling 12 onmogelijk triviaal Stelling 13 Stelling 16 triviaal NFA DFA RE ZRG CFG RG Stelling 11 Definitie 8 +9 Definitie 4 +6 Definitie (11) Definitie 1 +3 Definitie 2.5+7 Definitie 14+15 Stelling 7 Stelling 17 Reguliere talen: overzicht