• Nem Talált Eredményt

Minimálautomata

In document Formális nyelvek (Pldal 43-49)

2. Reguláris nyelvek

2.3. Minimálautomata

Minthogy tetszőleges nemdeterminisztikus automatához a fenti módon megszerkeszthetjük annak determinisztikus párját, igazoltuk azt az állításunkat, hogy a determinisztikus automaták nyelvei teljesen lefedik a 3-as nyelvosztályt.

A determinisztikus automaták mintájára beszélhetünk determinisztikus nyelvtanokról és determinisztikus nyelvekről is. Egy reguláris nyelvtan akkor determinisztikus, ha a neki megfelelő véges automata determinisztikus. Egy nyelv akkor determinisztikus, ha determinisztikus nyelvtannal generálható.

Fenti eredményünket ezek után másképpen is megfogalmazhatjuk. A determinisztikus nyelvtanok alkalmasak a teljes 3-as nyelvosztály generálására.

Ennek következtében minden reguláris nyelv determinisztikus nyelv.

Keressük meg egy nyelv determinisztikus és teljesen specifikált auto-matái közül a legegyszerűbbet. Az egyszerűség mértékéül az állapotok száma szolgál. Ha egy automatának kevesebb állapota van, egyszerűbb. Ilyen legegy-szerűbb automata természetesen létezik. A nyelvet elfogadó automaták mind véges állapotúak, így ezek között szükségképpen van minimális állapotszámú.

A probléma itt abban áll, hogy hogyan lehet ilyen minimális állapotszámú automatát megszerkeszteni, és unikális-e egy ilyen minimális állapotszámú automata. A második kérdésre adott válasz: minden nyelvhez lényegében egyetlen ilyen automata tartozik. Ennek neve minimálautomata.

A fentiek igazolására az automata valamennyi állapotához rendeljünk egy nyelvet. Ezt a nyelvet az az automata fogadja el, amely megegyezik az eredeti automatával, pusztán a kezdőállapotot helyeztük át a szóban forgó állapotra. Az eredeti kezdőállapothoz természetesen így az automata eredeti nyelve tartozik.

Értelmezzünk ezek után egy ℜ relációt az automata állapotai között. A és B állapotra akkor igaz az ℜ reláció, ha a két állapothoz rendelt két nyelv azonos.

Ez a reláció ekvivalenciareláció. Ugyanis az A állapothoz ugyanaz a nyelv tartozik, mint az A állapothoz, vagyis AℜA, tehát a reláció reflexív. Ha az A és B állapotok nyelvei azonosak, más szóval AℜB, akkor természetesen a B és A álla-potok nyelvei is azonosak, vagyis

AℜB BℜA, (2.23.)

tehát a reláció szimmetrikus. Végül, ha az A és B állapotokhoz valamint a B és C állapotokhoz tartozó nyelvek azonosak, akkor az A és C állapotokhoz ugyanaz a nyelv tartozik. Formálisan:

AℜB ∩ BℜC ⇒ AℜC (2.24.) tehát a reláció tranzitív.

Ezek szerint ez a reláció az automata állapotterét diszjunkt ekvivalencia-osztályokra osztja. Azonos ekvivalenciaosztályba azok az állapotok tartoznak, amelyeknek nyelve azonos. Különböző ekvivalenciaosztályhoz tartozó állapotok nyelve különböző.

Fogalmazzunk kicsit árnyaltabban. Amennyiben az A és B állapot ugyanabban az ekvivalenciaosztályban van, akkor nincsen olyan jelsorozat, amely különbséget tudna tenni a két állapot között. Ugyanis ha egy jelsorozat benne van a két állapot közös nyelvében, akkor a két állapotból indulva és ezt a jelsorozatot beolvasva mindkét esetben elfogadást kapunk eredményül. Ha viszont a jelsorozat nincsen benne a közös nyelvben, akkor mindkétszer elutasítunk. Amennyiben két állapot, C és D különböző ekvivalenciaosztályban, vagyis a hozzájuk rendelt két nyelv különböző, akkor mindig található olyan jelsorozat – hiszen egyébként a két nyelv azonos lenne – amely az egyik nyelvében benne van, a másikéban viszont nincsen. Ezt a jelsorozatot a két automata állapotból indítva az egyik esetben elfogadjuk, a másikban visszautasítjuk. Tehát, ha a két állapot nincsen egy ekvivalenciaosztályban, akkor mindig létezik olyan jelsorozat, amely a két állapot között disztingvál.

Miután kiderült, hogy az azonos ekvivalenciaosztályba tartozó állapotokat semmiképpen sem lehet megkülönböztetni, logikus az a megoldás, amely csak egyetlen állapotot alkalmaz a teljes ekvivalenciaosztály helyett. Egyesítsük tehát az ekvivalenciaosztályok állapotait gondosan ügyelve arra, hogy gráf éleit megtartsuk.

Ezzel, ha volt olyan ekvivalenciaosztály, amely több állapotot tartalmazott, az automata állapotainak számát csökkentettük. Ez az automata lesz a minimál-automata. Ennek az automatának tehát nincs két azonos ekvivalenciaosztályhoz tartozó állapota.

Az a megállapítás, hogy a minimálautomata ugyanazt a nyelvet fogadja el, mint az eredeti, triviális. Hiszen, ha az eredeti automatában ugyanahhoz az ekvivalenciaosztályhoz tartozó két állapotba érkezünk, a továbbiakban ugyanazt az eredményt kapjuk, bármit is olvassunk be ezután.

Miután a minimálautomatát definiáltuk, felmerül a kérdés, hogyan lehet ezt az automatát egy adott automata alapján megszerkeszteni. A megoldás kulcsa az azonos ekvivalenciaosztályba tartozó állapotok megtalálása. Mint tudjuk, az ilyen állapotokat semmilyen jelsorozattal sem lehet megkülönböztetni. Ha tehát sorra vesszük az összes lehetséges jelsorozatot, és nem tapasztalunk különbséget, akkor a két állapot ekvivalenciáját sikerült megállapítanunk. Sajnos ez a módszer hosszadalmas eljárásnak ígérkezik, hiszen a lehetséges jelsorozatok száma, ami nem más, mint a Σ* halmaz számossága, megszámlálhatóan végtelen.

Annak érdekében, hogy ezt a feladatot véges számú lépésben oldjuk meg, vezessünk be az állapotok között egy új relációt, pontosabban egy reláció családot. Két állapot legyen i ekvivalens, ha legfeljebb i hosszúságú jelsorozattal nem különböztethető meg. Az ekvivalencia eredeti meghatározása szerint két ál-lapotot akkor mondunk ekvivalensnek, ha azokat bármely tetszőleges hosszúságú jelsorozattal sem tudjuk megkülönböztetni. Így az eredeti ekvivalencia az i ekvi-valenciákból az i → ∞ átmenettel áll elő.

Ha ismerjük egy állapottér i ekvivalens ekvivalenciaosztályait, akkor en-nek alapján az i+1 ekvivalenciaosztályokat könnyen megállapíthatjuk. Nyilván ami nem volt i ekvivalens, nem lesz i+1 ekvivalens sem. Azt kell csupán meg-vizsgálnunk, hogy az olyan i ekvivalens osztályokban, ahol egynél több állapot szerepelt, a különböző állapotokból egy újabb karakter beolvasására különböző i-ekvivalenciaosztályokba jutunk-e vagy sem. Ha útjaik eltérnek, akkor ezt a két i ekvivalens állapotot különböző (i+1)-ekvivalenciaosztályba kell sorolnunk. Ez azt jelenti, hogy ebből az ekvivalenciaosztályból több ekvivalenciaosztályt kell formálnunk.

Amennyiben egy újabb karakter figyelembe vételével nem növekszik meg az ekvivalenciaosztályok száma, akkor nyilván ez további karakterek eseté-ben sem fog bekövetkezni, ami annyit jelent, hogy ez az i ekvivalencia azonos a jelző nélküli, vagyis az eredetileg definiált ekvivalenciával, így a mostani fel-osztás megegyezik az eredeti definíció szerinti ekvivalenciaosztályokkal.

Induláskor vegyük a 0 ekvivalenciát, vagyis tekintsük azt az esetet, ami-kor egyetlen jelsorozatot sem engedélyezünk, tehát csak ránézés alapján vagyunk képesek két állapot megkülönböztetésére. Ilyenkor csak az elfogadó és visszauta-sító állapotok között tudunk disztingválni, tehát két ekvivalenciaosztályunk lesz, az egyikbe a visszautasító, a másikba az elfogadó állapotokat soroljuk. Ezután növeljük az engedélyezett jelsorozatok hosszát mindaddig, amíg tovább már nem növekszik az ekvivalenciaosztályok száma. Ez a jelenség előbb utóbb szükség-szerűen bekövetkezik, hiszen az állapotok száma véges, és az egyetlen állapotot tartalmazó ekvivalenciaosztályt tovább bontani már nem lehet. Így véges számú lépésben tudjuk meghatározni az eredetileg definiált ekvivalenciaosztályokat.

Mutassuk be ezt a módszert egy példán, a 2.6. ábra automatáján.

Kiindulásul írjuk fel a két 0-ekvivalenciaosztályt. Az egyikbe a vissza-utasító, a másikba az elfogadó állapotok kerülnek:

{ q0, q1, q2} {q3, q4, q5, q6, q7, q8}

A új karakter beolvasásánál végzett vizsgálatnál az éppen érvényes ekvivalenciaosztályok alapul vételével egy osztály állapotait egyenértékűeknek tekintjük. Két állapot nem egyenértékű volta abból tűnik ki, hogy van olyan karakter, amely a két állapotból két különböző osztályba visz.

Példánk automatájában egy karaktert alkalmazva kiderül, hogy a q0, q1 és q2 állapotok nem egy ekvivalenciaosztályba tartoznak. Ugyanis például az a karakter a q0 állapotból a visszautasító, míg a q1 állapotból az elfogadó állapotok osztályába viszi át az automatát.

Ezek szerint az 1-ekvivalenciaosztályokban a fenti három állapot külön-külön képez egy-egy ekvivalenciaosztályt.

Az elfogadó állapotok osztályában ilyen finomítás nem következik be, mivel az osztály bármelyik állapotából bármely karakter osztályon belüli álla-potba visz.

Ezek után az 1-ekvivalenciaosztályok a következők:

{q0} {q1} {q2} {q3, q4, q5, q6, q7, q8}

A következő karakter beolvasása – mint arról az olvasó könnyen meggyőződhet – nem hoz változást az osztályok felosztásában. Így a vizsgálatot befejezhetjük, megállapítva, hogy az elfogadó állapotok ekvivalensek, tehát egyetlen, a következő ábrán q3 állapottal jelölt állapotba közösíthetőek. Ez lesz tehát a minimálautomata, és ezt mutatja a 2.7. ábra.

Q

2

Q

0

b

a

Q

1

a

Q

3

b b

a

a,b 2.7. ábra

Minthogy determinisztikus és teljesen specifikált automatából indultunk ki, a minimálautomata is determinisztikus és teljesen specifikált lesz.

Néhány megjegyzés. A minimálautomata mindig determinisztikus és teljesen specifikált, tehát ha egy nemdeterminisztikus automatának keressük a minimálautomatáját, akkor előbb szerkesszünk az eredetivel egyenértékű determinisztikus és teljesen specifikált automatát, és azt redukáljuk.

Eddig is volt már dolgunk nem teljesen specifikált automatákkal. Ilyen volt például a 2.1. ábrán feltüntetett automata is. A 2.8. ábra ennek az automa-tának teljesen specifikált változatát mutatja be. Azt kell biztosítanunk, hogy minden állapotból, minden karakterre legyen kimenő él. Ahol ilyet a természet, vagyis az eredeti automata nem adott, ott nekünk kell behúzni egy, a csapdába vezető élt.

c b

a

a a,b c

b,c

T

a,b,c a

C

b

S A B

c

2.8. ábra

Így tetszőleges automatához megszerkeszthetjük a hozzátartozó minimál-automatát. Azt azonban még igazolnunk kell, hogy az ily módon megszerkesztett automata lényegében – izomorfiától eltekintve – unikális, azaz ez az egyetlen ilyen kis állapotszámmal bíró, az adott nyelvet elfogadó és teljesen specifikált automata.

Tételezzük ugyanis fel, hogy létezik egy másik automata, amely ugyanazt a nyelvet fogadja el, és állapotainak száma nem nagyobb a minimál-automatáénál. Nevezzük ezt a hipotetikus automatát ellenautomatának.

Legyen P az ellenautomata egy tetszőleges állapota. Tekintsük most azokat a jelsorozatokat, amelyek az ellenautomata kezdőállapotából kiindulva az ellenautomatát a P állapotba viszik át. Ezen jelsorozatok hatására a minimál-automata is saját kezdőállapotából kiindulva egyetlen állapotba – nevezzük ezt A állapotnak – kerül.

Amennyiben ez nem így lenne, ellentmondásra jutnánk abban a tekintetben, hogy a két automata ugyanazt a nyelvet fogadja el. Ha ugyanis az ellenautomatát a P állapotba vivő jelsorozatok elemzésekor kiderülne, hogy ezek a jelsorozatok a minimálautomatát egynél több állapotba juttatják, akkor létezne két olyan jelsorozat, mondjuk x és y, amely az ellenautomatát mindkét esetben a P állapotba, a minimálautomatát azonban két különböző, mondjuk, A és B állapotba viszi át.

A minimálautomata állapotai azonban megkülönböztethetőek, hiszen különböző ekvivalenciaosztályhoz tartoznak. Így szükségképpen található olyan z jelsorozat, amelyre a minimálautomata az A, illetve a B állapotból indítva elté-rően viselkedik, egyszer elfogad, másszor visszautasít.

Ebből viszont következik, hogy a két automata nem fogadhatja el ugyan-azt a nyelvet. Az xz és az yz jelsorozatokra ugyanis az ellenautomata azonosan, a minimálautomata pedig eltérően reagál.

Ezek szerint az ellenautomata egy állapotához a minimálautomatának csakis egy állapota tartozhat. Ez a megállapítás természetesen az ellenautomata minden állapotára helytálló.

minimálautomata ellenautom

?

x

z z

x y

A

ata

B

z y

P

2.9. ábra

Ha az ellenautomata több különböző állapotához ugyanaz a minimálauto-mata állapot tartozna, akkor az ellenautominimálauto-mata állapotainak a száma, ellentétben

feltételezésünkkel, felülmúlná a minimálautomata állapotainak számát. Ezt csak úgy kerülhetjük el, ha az ellenautomata különböző állapotainak a minimál-automata más-más állapota felel meg.

Ezek szerint az ellenautomata és a minimálautomata állapotai között köl-csönösen egyértelmű leképezés definiálható, más szóval a két automata izomorf, vagyis az állapotok elnevezésétől eltekintve azonos.

Ezzel a minimálautomata unicitására vonatkozó állításunkat igazoltuk.

Felhívom az olvasó figyelmét arra, hogy a minimálautomata nem a nyelvtanhoz, nem az azt megvalósító véges automatához, hanem a nyelvhez tar-tozik. Mindig hangsúlyoztam, hogy míg minden nyelvtanhoz és így automatához is egyetlen nyelv tartozik, addig egy nyelvnek számtalan nyelvtana illetve auto-matája lehet. A minimálautomatával más a helyzet. Minden reguláris nyelvhez – izomorfiától eltekintve – egy és csakis egy minimálautomata tartozhat.

Legyen adva két reguláris nyelvtanunk. Szeretnénk eldönteni, hogy a két nyelvtan ekvivalens-e, ugyanazt a nyelvet generálja-e vagy sem. Ennek a problémának egyik lehetséges megoldása, hogy megszerkesztjük a két automatát, azokból a két miniálautomatát, és ha a minimálautomaták izomorfak, a két nyelv azonos.

A későbbiekből kiderül, hogy két nyelvtan ekvivalenciáját általánosság-ban csak akkor lehet eldönteni, ha a két nyelvtan reguláris.

In document Formális nyelvek (Pldal 43-49)