23. formális nyelvek. (formális nyelvtanok és a …20-%20...23. formális nyelvek. (formális...
TRANSCRIPT
23. Formális nyelvek. (Formális nyelvtanok és a Chomsky-féle nyelvosztályok. A reguláris nyelvek
alapvető tulajdonságai és alkalmazásai. Környezetfüggetlen nyelvek és elemzésük. Matematikai gépek
– véges automata és veremautomata.)
(Formális nyelvtanok és a Chomsky-féle nyelvosztályok.
Bevezető (Fogalmak):
Ezen feltételeket figyelembe véve definiálhatjuk a formális nyelvtant
(Emlékeztető)
A generatív nyelvtanok osztályozását a szabályok alakja alapján tehetjük meg. Egy megkötést már
ismerünk: a szabályok bal oldalán mindenképpen szerepelnie kell nyelvtani jelnek. A szabályok alakja
szerint a következő osztályozás lehetséges:
(L3 néhány zártsági tulajdonsága)
Alkalmazások:
- reguláris nyelvek: Assembly, Regexp.
- környezettfüggõ nyelvek: Ada, Fortran.
- attribútum nyelvek: C#, C, C++, Java.
(Emlékeztető)
Véges automaták:
Véges állapotú automata (finite state automata – FSA):
Olyan gépek, amelyeket véges számú állapot és az azokat összekapcsoló véges számú
állapotátmenet (tranzició)jellemez. Ismeretes az állapotok közt egy kezdőállapot, mely az automata
első, kiinduló állapotát jelzi, és ismeretesegy elfogadó állapot is, mely az automata utolsó,
végállapotát jelzi. Ha az automata működése befejeztéig végesszámú állapoton haladt át, azt mondjuk,
az automata elfogadta a bemenetet.
Tranziciós (mozgási) fa:
Az automaták működését, a fej mozgását szemléltetjük egy irányított gráffal. Az állapotátmeneteket
jelképező gráfélek a forrásállapottól kapott bemeneti szimbólumok hatására a célállapotból valamilyen
kimeneti választ váltanak ki.
Véges Nemdeterminisztikus állapotú Automata:
Egy NDVA a következő 5-össel írható le: (S, Σ, T, s0, A), ahol
(S) az állapotok véges halmaza
(Σ) az ábécé-nek nevezett véges halmaz
(T : S × (Σ \{ε}) → P(S)) az átmeneti függvény. Ez lehet olyan reláció is, ami nem függvény.
s0 a kitüntetett kezdeti (vagy indító) állapotok halmaza (s0 ⊆ S)
(A ⊆ S) az elfogadó állapotok halmaza
ahol P(S) S hatványhalmaza, ε az üres string, és Σ a bemenő jelek ábécéje.
Legyen M egy NDVA úgy, hogy M = (S, Σ, T, s0, A), és X az Σ ábécéből alkotott string. M elfogadja
az X stringet, ha létezik X-nek egy x1x2 … xn formájú megvalósítása, xi ∈ (Σ \{ε}), és létezik az
állopotoknak az r0,r1, …, rn, ri ∈ S sorrendje, valamint teljesülnek a következő feltételek:
1. r0 ∈ s0
2. ri ∈ T(ri-1, xi ), minden i = 1, …, n
3. rn ∈ A.
Az automata a kezdő állapotból indulva olvassa a bejövő string szimbólumait, amelyek az adott
ábécéhez kell, hogy tartozzanak. Az automata állapotát a T átmeneti szabályai határozzák meg, attól
függően, hogy szimbólumot, vagy üres stringet olvasott be. Amikor az automata beolvasta az utolsó
szimbólumot, és elfogadó állapotban van, akkor mondhatjuk, hogy az NDVA elfogadta a stringet,
ellenkező esetben pedig visszautasította.
Az automata által elfogadott stringek halmaza egy nyelvi forma, az a nyelv, amelyet az NDVA
felismer. Ez a nyelv egy szabályos nyelv.
Minden NDVA-hoz található egy determinisztikus véges állapotú gép (DFA), amely ugyanazt a
nyelvet fogadja el. Ebből következik, hogy lehetséges egy létező NDVA-ra olyan átalakítás, amelynek
az eredménye egy DFA lesz, így megvalósítható egy (talán) egyszerűbb gépként. Az átalakítás
általában a hatványhalmaz megkonstruálásával történik, ami oda vezet, hogy exponenciálisan megnő a
belső állapotok száma.
Veremautomaták
Az ilyen gépek hasonlóak a determinisztikus automatákhoz, rendelkeznek viszont memóriával is
verem (vermek) formájában. A δ állapotátmeneti függvény a verem tetején lévő szimbólumtól is
függeni fog, és azt is meg fogja mondani, hogyan változzon a verem az átmenetkor. Ezek az
automaták környezetfüggetlen nyelvek elfogadására képesek.