Next: About this document ...
Kétirányú automaták
Kétirányú automata: ugyanolyan, mint az
eddig megszokott véges automata,
annyi különbséggel, hogy a
átmeneti függvény egy állapotból
és egy karakterből álló párhoz egy új állapotot
és egy irányt
(
)
rendel, az
irány szerint lép az automata balra, jobbra vagy
semerre (és persze megy át az új állapotba).
Lehet nem determinisztikus is, most azonban nézzünk egyenlőre csak
determinisztikusakat. Rövitítés: 2VA.
Állítás: A kétirányú automaták sem erősebbek mint az
egyirányúak, azaz
ugyanazokat a nyelveket ismerik fel mint az eddigi 1VA-k.
1.Az s irány, azaz a semerre-se-lépés
elhagyása nem gyengíti az automatát. Ez azért igaz, mert ha van
egy olyan 2VA, ami tartalmaz s-es átmenetet, akkor ehhez készíthetünk
egy olyan, másik 2VA-t, ami ugyanazt fogadja el, csak nincsen benne
ilyen s-es átmenet. A következőképpen megy ez:
ha van egy
átmenet, akkor kövessük az automata
működését egészen addig, amíg végre lelép az a-ról. Ha ekkor
R állapotba kerül és jobbra/balra lép, akkor vegyük be a
szabályt, az s-eset meg hagyjuk el.
Első ötlet: Szimuláljuk a 2VA-t egyirányúval a
következő módon.
Amíg előre lépked a 2VA, addig menjünk mi is vele, ha visszafele
indulna, akkor mi álljunk meg és várjuk meg amíg visszatér.
Ha visszatért, akkor
vegyük fel mi is újra a fonalat.
2.
Előfordulhat, hogy nem tér vissza a 2VA, de akkor
nem is tudja végigolvasni
a szót, azaz nem fogadja el.
Ez persze nem baj, ekkor mi is megállhatunk az 1VA-val
és ekkor az 1VA sem fogad el.
Második ötlet: Ne várjuk meg amíg visszatér
(pláne, mert lehet, hogy nem is tér vissza), hanem tegyük fel, hogy
valaki megmondja nekünk, hogy visszajön-e és ha igen, akkor
milyen állapotban.
Ha pl. a 2VA egy (R,a) párra
a (Q,l) párral válaszol, tehát elindul visszafelé, akkor az a valaki
megmondja nekünk, hogy ehhez az állapothoz
milyen visszatérő állapot tartozik (mondjuk ez P)
és ekkor a szimulációt a
P állapotból folytatuk, azaz a megnézzük,
hogy a 2VA mit tesz a (P,a) párra. (Megjegyzés: ezt az információt,
amit ez a valaki tud, úgy nevezzük, hogy ismerjük a visszatérési falat.)
3. Ha a (P,a) pár hatására újra visszafele indul a 2VA, akkor
az előbbi eljárást csináljuk mi is újra.
Ezt nem tesszük a végtelenségig, mert csak véges sok állapotunk van.
Ha ismétlődést találunk, azaz olyan állapotot érintünk aminek a hatására
már egyszer elindultunk ugyaninnen visszafele, akkor tuti, hogy
most már mindig itt fogunk cikázni előre-hátra, vagyis sose lépünk le
az aktuális betűről, azaz sose olvassuk el a szót, tehát nem is
fogadjuk el. Ha ezt a helyzetet felismertük, akkor álljunk meg
az 2VA-val és utasítsuk el a szót.
Ha nincs végtelen ciklus és
végül azért mégis lelép előre a 2VA arról a fránya a-ról,
és eközben T állapotba megy, akkor lépjünk le mi is az 1VA-val
és menjünk
T állapotba.
Harmadik ötlet Az aktuális
visszatérési falat mi is nyilván tudjuk tartani magunknak,
nem kell kérdezgetni senkit.
4. Először is: csak véges sok visszatérési
fal lehetséges, konkrétan max.
(|Q|+1)|Q|-féle,
ahol |Q| az állapotok száma.
Ugyanis a fal megadása azt jelenti, hogy minden állapotra (van |Q|
darab) |Q|+1 lehetséges kimenet van: vagy nem jön vissza, vagy
valamelyik állapotban visszajön.
5.
A kezdőfal az a fal, ahol minden kimenő állpothoz a
(nem)visszatérő állapot (azaz, amikor nem jön vissza) tartozik.
Ez azt jelenti, hogy ha a szalag elejéről balra le akarna menni a
2VA, akkor hiba van, megállunk és elutasítunk.
6.
Ha a 2VA egy a-n áll most és a fej mögött a
v.f. van,
akkor a következő visszatérési falat (), azaz azt, ami
mögé az a-t átlépve
kerülünk a következőképpen számolhatjuk ki.
Minden állapotra megnézzük, hogy ha abban az állapotban lépünk visssza
az új falon ()
át, akkor mi történik. Hát először is az
biztos, hogy az a-ra lépünk rá.
Egyik eset: Ha az a hatására az adott állapotban
előre megyünk valami Q állapotba a 2VA-ban, az azt jelenti, hogy
visszalépünk a
falon, vagyis ekkor meghatároztuk a
visszatérési állapotot: ez a Q.
Másik eset: Ha az a hatására az adott állapotban visszafele mennénk,
akkor meg az előző fal, a ,
megmondja, hogy mi történik velünk
a a előtt, vagyis, hogy
milyen állotban kerülünk vissza a a-ra. Ebben az állpotban
újra megnézzük, hogy a 2VA mit tesz, ha előre megy, akkor megvan
a visszatérési állapot, ha hátra, akkor újra a
falat nézzük.
Ha észrevesszük, hogy végtelen ciklusba kerültünk és sose jutunk vissza a
falon, akkor az eredeti állapothoz a
vissza-nem-térési állapotot társítjuk.
Ha nincs végtelen ciklus, akkor meg az az állapot lesz a visszatérő,
amiben végre visszalépünk. Ezt az eljárást minden állapotra megcsináljuk,
így kapjuk az új falat.
7.
Ezután látszik már, hogy az 1VA állapotába két dolgot kell belekódolni:
az adott pillanatban milyen állapotban van a 2VA és mi az aktuális
visszatérési fal, ami mögött állunk.
Vagyis az 1VA állapotai
alakúak, ahol Qi
a 2VA állapota,
pedig egy visszatérési fal.
Az 1VA kezdőállapota az
pár lesz, ahol S a 2VA kezdőállapota,
pedig a kezdőfal.
Azok a
állapotok lesznek elfogadók az 1VA-ban,
ahol Qi a 2VA elfogadó állapota.
Aaz 1VA
függvényét úgy számolom ki, hogy minden előkerülő
állapotra (az elején csak a kezdőállapot, a
,
ilyen,
később előkerülnek mások is) megnézzük, hogy mi az új 1VA-s
állapot, azaz
mi az új 2VA-s állapot és mi az új visszatérési fal
8. Ha az eredeti 2VA nemdeterminisztikus volt,
akkor is ugyanez van, csak az 1VA átmeneteinek számításakor nem csak egy
lehetséges új állapot jön be, hanem esetleg több. A visszatérési fal
ezeknél ugyanaz lesz, ezek az állapotok csak az első komponensben
(a 2VA állapotát jelölőben) különböznek.
Next: About this document ...
Judit Csima
2000-02-29