Általánosított nemdeterminisztikus véges automata
Az általánosított nemdeterminisztikus véges automata, röviden ÁNVA, olyan nemdeterminisztikus automata, amelynek átmenetein nem csak az ábécé szimbólumai állhatnak, hanem reguláris kifejezés is.
Definíció
Az ÁNVA-ra a véges automata reguláris kifejezéssé alakításának algoritmusa során lesz szükségünk. Az ÁNVA tehát olyan NVA, amelynek az átmeneteit reguláris kifejezések határozzák meg. Példa egy ilyen ÁNVA-ra:
Látjuk, hogy például a q2 állapotból a qf állapotba vezet átmenet, amelyet az a∗ b reguláris kifejezés jelöl. További követelmények az ÁNVA-val szemben:
- A q0 kezdőállapotból minden más állapotba kell vezetnie átmenetnek. Az ábrán látjuk, hogy a q0 állapotból minden más állapotba vezet átmenet.
- Az ÁNVA-nak csak egy végállapota van, és minden más állapotból vezet átmenet ebbe az állapotba. Ahogy az ábrán látható, minden állapotból nyíl mutat a qf állapotba.
- A kezdőállapot nem lehet azonos a végállapottal. Az ÁNVA-nak tehát legalább két állapota van.
- Minden más állapotból – a kezdő- és a végállapot kivételével – átmenetnek kell vezetnie minden más állapotba, a kezdő- és a végállapot kivételével. A hurkokat is beleértve (átmenet a qi állapotból a qi állapotba).
A közönséges NVA átalakítása ÁNVA-vá
Ha van egy NVA-nk, az ÁNVA-vá alakítás egyszerű.
- Létrehozunk egy új qs kezdőállapotot, és epszilon-átmenetet vezetünk belőle az eredeti kezdőállapotba.
- Létrehozunk egy új qf végállapotot, és az összes eredeti végállapotból epszilon-átmeneteket vezetünk a qf állapotba. Az eredeti végállapotokból közönséges állapotokat csinálunk.
- Ha valahol többszörös átmenet van (vagyis ha a q1 állapotból a q2 állapotba a 0 és az 1 szimbólumra is eljutunk), akkor ezeket a szabályokat egyetlen reguláris kifejezésbe vonjuk össze, és az összes eredeti szimbólumot az unió operátorral kapcsoljuk össze (vagyis a nyilat a 0|1 reguláris kifejezéssel jelöljük).
- Ha az automatából hiányzik valamilyen átmenet, amelynek a definíció szerint ott kellene lennie, létrehozzuk, és az ∅ reguláris kifejezéssel jelöljük. Ezzel nem változtatjuk meg az automata által elfogadott nyelvet, mert az ilyen átmenet soha nem hajtódik végre.
Ezt az automatát felhasználhatjuk az automata reguláris kifejezéssé alakítására.
Fejezetek: Reguláris kifejezések, Reguláris kifejezés átalakítása automatává, Általánosított nemdeterminisztikus véges automata, Automata átalakítása reguláris kifejezéssé