reguliere talen
DESCRIPTION
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. - PowerPoint PPT PresentationTRANSCRIPT
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
Reguliere talen: overzicht
RGDefinitie 8 +9
DFADefinitie 1 +3
NFADefinitie 4 +6
REDefinitie 14+15
Stelling 13
Stelling 12
Stelling 7
triviaal
ZRGDefinitie (11)
Stelling 11
triviaal
CFGDefinitie 2.5+7
triviaal
onmogelijk
Stelling 16
Stelling 17
DFA: DeterministischeFinite-state Automaton
…bestaat uit 5 onderdelen: Alfabet: X eindige
verzameling
Toestanden: Q eindige verzameling
Transitiefunctie: d :: QXQ Start-toestand: S Q Eind-toestanden: F Q
Voorbeeld DFA
Alfabet {a, b, c} Toestanden
{S,X,Y,Z} Transitiefunctie
d S a = Zd S b = Xd S c = Sd X a = Yd Y c = Z
Start S Eind {Z}
S Z
X Y
a
b
a
c
c
Runnen van een DFA
Waar kom je uitbeginnend in Sals je de lettersvan een string accepteert?
S Z
X Y
a
b
a
c
c
run :: (QXQ) Q [X] Q run d q [ ]=run d q (x:xs)=
qrun d (d q x) xsrun = foldl
Definitie 3Taal van een DFA
Zij DFA = ( X, Q, d, S, F)
de taal van DFA
is
{ z X* | run d S z F }
L(DFA)
NFA: Non-deterministischeFinite-state Automaton
…bestaat uit 5 onderdelen: Alfabet: X eindige
verzameling
Toestanden: Q eindige verzameling
Transitiefunctie: d :: QXQ Start-toestand: S Q Eind-toestanden: F Q
{Q}en:
Voorbeeld DFA
Alfabet {a, b, c} Toestanden
{S,X,Y,Z} Transitiefunctie
d S a = Zd S b = Xd S c = Sd X a = Yd Y c = Z
Start S Eind {Z}
S Z
X Y
a
b
a
c
c
Voorbeeld NFA
Alfabet {a, b, c} Toestanden
{S,X,Y,Z} Transitiefunctie
d S a = {Z} d S b = {X} d S c = {S} d X a = {Y, S} d Y c = {Z}
Start {S} Eind {Z}
S Z
X Y
a
b
a
c
c
a
Runnen van een NFA
Waar kan je uitkomenbeginnend in één van de Sals je de letters van een string accepteert?
run :: (QX{Q}) {Q} [X] {Q} run d qs [ ]=run d qs (x:xs)
=
qsrun d (stap d qs x) xsrun d qs = foldl (stap d) qs
stap d qs a = { r | q qs, r d q a }
Definitie 6Taal van een NFA
Zij NFA = ( X, Q, d, S, F)
de taal van NFA
is
Dus: Je kunt uitkomen in een eindtoestand
{ z X* | q S, run d q z F }
L(NFA)
StellingDFA en NFA even krachtig
Bewijs: Geef me een DFA
dan 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
S
Z
SX
SY
X
SXY
XY
Y
XZ
SZ
SXZ
ZY
XYZ
SYZ
SXYZ
Bewijs stelling 7Constructie NFA DFA
S Z
X Y
a
b
a
c
c
a ab
a
c
enzovoort…
a
b
c
a
b
c
S
Z
SY
X
SZ
Bewijs stelling 7Constructie NFA DFA
S Z
X Y
a
b
a
c
c
a ab
a
c
a
b
c
a
b
c
S Z
SY
X SZ
Bewijs stelling 7Constructie NFA DFA
S Z
X Y
a
b
a
c
c
a
c
a
b
c
aaa
bb
c
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 eindig
TN=Ø Productieregels R eindig Een startsymbool S één S N
Definitie 8CFG/RG/ZRG Grammatica
Regels van de vorm Aw met A N en
Contextvrije grammatica (CFG)
Reguliere grammatica (RG)
Zeer reguliere grammatica (ZRG)
w (NT)*
w T* N?
A NA w
w T+ N?
w = en A=S
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
Z
X Ya
X a Y
Z
Stelling 11L(RG) L(ZRG)
Geef me een RG, en ik hervorm z’n regels Voor elke
voeg toeY * Z
Z w Y w Verwijde
ralle
U V
Z wY
Voor elkevoeg toeZ w
Y
Verwijderalle voor U SU
T
S
Stelling 13L(ZRG) L(NFA)
Geef me een ZRG, en ik construeer een NFA
T N R
S
X Q d
S F
A w BC w
{ wT* | w deel van R}
N {}
A Bw
C w
{S}
S
{ wT* | w deel van R}T
Stelling 13aL(ZRG) L(NFA)
Geef me een ZRG, en ik construeer een NFA
T X
… met hetzelfde alfabet:
vervang
door
X Ya b c
Xa
X’b
X”c
Y
(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!
Definitie 14Reguliere Expressie
Reguliere expressie RET over alfabet T is:
als aTa als R,SRETR+S als R,SRETR S als RRETR* als RRET(R)
% @ Ø {}{a}
L(R) L(S)
L(R) L(S)
L(R) *
L(R)
… en beschrijfteen taal:
en 15
worden inde praktijk
niet gebruikt…
…want wiewil dit nou…
StellingRE en RG even krachtig
Bewijs: Geef me een RE
dan 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)
…maar anderslukt dit niet!
S S1
S
S S1
S S1
S S2S
Stelling 16L(RE) L(RG) Geef me een RE, en ik construeer
met inductie een RG
% @ a u+v u v u*
S aS1 … X bYY acZ
S2 …
S2 …S1 …
S2
S2
S1 …X bYY acZ
SS
Stelling 17L(DFA) L(RE)
Geef me een DFA, en ik schrijf een RE
S
C
A
B
a
b
c
S = aA + bB + cCA = …B = …C = …
Stelsel recursieve vergelijkingen
+ @
A=z(x+y) A=zx+zyA=xA+z A=x* z
Oplossen met behulp van
Reguliere talen: overzicht
RGDefinitie 8 +9
DFADefinitie 1 +3
NFADefinitie 4 +6
REDefinitie 14+15
Stelling 13
Stelling 12
Stelling 7
triviaal
ZRGDefinitie (11)
Stelling 11
triviaal
CFGDefinitie 2.5+7
triviaal
onmogelijk
Stelling 16
Stelling 17