27
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

Reguliere talen

Embed Size (px)

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 Presentation

Citation preview

Page 1: Reguliere talen

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

Page 2: Reguliere talen

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

Page 3: Reguliere talen

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

Page 4: Reguliere talen

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

Page 5: Reguliere talen

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

Page 6: Reguliere talen

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)

Page 7: Reguliere talen

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:

Page 8: Reguliere talen

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

Page 9: Reguliere talen

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

Page 10: Reguliere talen

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 }

Page 11: Reguliere talen

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)

Page 12: Reguliere talen

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

Page 13: Reguliere talen

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

Page 14: Reguliere talen

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

Page 15: Reguliere talen

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

Page 16: Reguliere talen

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

Page 17: Reguliere talen

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

Page 18: Reguliere talen

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

Page 19: Reguliere talen

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

Page 20: Reguliere talen

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

Page 21: Reguliere talen

{ 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)

Page 22: Reguliere talen

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!

Page 23: Reguliere talen

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…

Page 24: Reguliere talen

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!

Page 25: Reguliere talen

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

Page 26: Reguliere talen

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

Page 27: Reguliere talen

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