Stapelautomaat

Uit testwiki
Naar navigatie springen Naar zoeken springen
Een stapelautomaat

Een stapelautomaat, ofwel een push-down-automaat (PDA), is een eindige automaat die gebruikmaakt van een stack. De klasse van formele talen die door stapelautomaten wordt geaccepteerd, is de klasse van contextvrije talen. Dat wil zeggen dat stapelautomaten even krachtig zijn als contextvrije grammatica's.

Formele Definitie

Formeel is een PDA een automaat M met

M=(Q,Σ,Γ,δ,q0,F) 

met

Q  een eindige verzameling toestanden
Σ  een eindige verzameling symbolen, het alfabet van de automaat geheten
Γ  een eindige verzameling symbolen, het alfabet van de stack
δ: Q×Σϵ×Γϵš’«(Q×Γϵ) een transitiefunctie
q0  de begintoestand
FQ de verzameling accepterende toestanden

waarbij Σϵ=Σ{ϵ} en Γϵ=Γ{ϵ}.

Een stapelautomaat accepteert een woord w, als w geschreven kan worden als w1w2wn, waarbij wiΣϵ, als er een rij r0,,rn van toestanden en een rij s0,,sn van stapelinhouden (siΓ*) zijn, zo dat

  • r0=q0 en s0=ϵ;
  • voor alle 0in1 geldt: (ri+1,β)δ(ri,wi+1,α), waarbij si=αω en si+1=βω voor een ωΓ*;
  • rnF.

De taal van een stapelautomaat M, genoteerd als L(M), is de verzameling van alle woorden die door M geaccepteerd worden.

Voorbeeld

De stapelautomaat M=({q0,qa,qb,qf},{a,b},{S,1},δ,q0,{qf}) met

  • δ(q0,a,ϵ)={(qa,1)}
  • δ(qa,a,ϵ)={(qa,1)}
  • δ(qa,b,1)={(qb,ϵ)}
  • δ(qb,b,1)={(qb,ϵ),(qf,ϵ)}
  • δ(q,x,y)= voor alle andere combinaties van qQ, xΣϵ en yΓϵ

accepteert de contextvrije taal {anbnn1}.

Voor het woord w=aabb hebben we bijvoorbeeld:

  • r0=q0,s0=ϵ
  • r1=qa,s1=1 (want w1=a en (qa,1)δ(q0,a,ϵ))
  • r2=qa,s2=11 (want w2=a en (qa,1)δ(qa,a,ϵ))
  • r3=qb,s3=1 (want w3=b en (qb,ϵ)δ(qa,b,1))
  • r4=qf,s4=ϵ (want w4=b en (qf,ϵ)δ(qb,b,1))
  • het woord wordt geaccepteerd omdat qfF.

Sjabloon:Appendix