Formális Nyelvek és Automaták

Dömösi, Pál

Nyíregyházi Főiskola

Falucskai, János

Nyíregyházi Főiskola

Horváth, Géza

Debreceni Egyetem

Mecsei, Zoltán

Debreceni Egyetem

Nagy, Benedek

Debreceni Egyetem

Vaszil, György

Lektorálta 

Új Széchenyi Terv logó.


Tartalom

1. Bevezetés
2. Formális nyelvek
Ábécé, szó, formális nyelv, szabad monoid, szabad félcsoport
Nyelvműveletek
3. Formális rendszer és néhány főbb típusa
Markov-féle normál algoritmus
Generatív nyelvtan, Chomsky-féle nyelvosztályok
Chomsky-féle nyelvosztályok
A Chomsky hierarchia
L-rendszerek
Problémakörök
Normálformák (Normálalakok)
Levezetések szerkezete
A szóprobléma és a szintaktikai elemzés
Nyelvosztályok és automataosztályok kapcsolata
Nyelvosztályok tulajdonságai
Speciális alosztályok
4. A véges automaták elméletének alapjai
Az automata fogalma és főbb típusai
Mealy automata
Moore automata
Kimenőjel nélküli automata
Iniciális automata
Parciális és teljesen definiált automata
Nemdeterminisztikus és determinisztikus automata
Sztochasztikus automata
Rabin-Scott automata
Az automaták megadása
Véges automaták megadása Cayley táblázattal
Véges automaták megadása gráfokkal
Az automata, mint algebrai struktúra: részautomata, homomorfizmus, izomorfizmus, kompatibilis osztályozás
Mealy automata, mint algebrai struktúra
Moore automata, mint algebrai struktúra
Kimenőjel nélküli automata, mint algebrai struktúra
Az automaták által indukált leképezések
Redukált automata. Véges determinisztikus automaták minimalizálása
Aufenkamp-Hohn-féle minimalizációs algoritmus
Kiegészítés az Aufenkamp-Hohn minimalizációs algoritmushoz
Aufenkamp-Hohn féle minimalizációs algoritmus Moore-automatákhoz adaptált változata
Kiegészítés az Aufenkamp-Hohn-féle minimalizációs algoritmus Moore-automatákhoz adaptált változatához
Minimalizációs algoritmus kimenőjel nélküli automatákra
Kiegészítés a minimalizációs algoritmus kimenőjel nélküli automatákra ismertetett változatához
Automaták ekvivalenciája, Gill tétele
Automaták analízise és szintézise
Egyéb véges automaták
Irányítható automaták
Automata több kezdőállapottal
Átlátszóbetűs felismerő automata
Irodalmi megjegyzések
5. Reguláris nyelvek
Normálformák a reguláris nyelvtanokhoz
Reguláris kifejezések
Reguláris kifejezések ekvivalenciája
A kifejezésfa
Unió-normálforma reguláris kifejezésekhez
Egyszerű szintaxis gráfok
Véges elfogadó automaták (Rabin-Scott automaták)
Véges determinisztikus és nemdeterminisztikus automaták ekvivalenciája
Véges determinisztikus elfogadó automaták minimalizálása
Véges automaták és reguláris nyelvtanok ekvivalenciája
Nyelvek előállítása automatákban
Véges automaták analízise
Véges automaták szintézise
Véges automaták által indukálható leképezések
Szóprobléma
Iterációs lemma reguláris nyelvekre
Zártsági tulajdonságok
Irodalmi megjegyzések
6. Lineáris nyelvek
Normálforma
2-fejű (véges állapotú) automata
A szóprobléma megoldása
A lineáris nyelvek tulajdonságai
Iterációs lemma
Zártsági tulajdonságok
Irodalmi megjegyzések
7. Környezetfüggetlen nyelvek
Programnyelvek szintaktikájának leírása
A BNF megadási mód
A COBOL-szerű megadási mód
A szintaxis gráf
A Hibrid megadási mód
Levezetési fa
Többalakúság
Normálformák a környezetfüggetlen nyelvtanokhoz
Chomsky-féle normálalak
Greibach normálforma
A Bar-Hillel lemma
Veremautomaták
Zártsági tulajdonságok
A szóprobléma megoldása - szintaktikai elemzés
A CYK algoritmus
Az Earley-féle algoritmus
Irodalmi megjegyzések
8. Környezetfüggő nyelvek
Szóhossznemcsökkentő (monoton) nyelvtanok
Normálformák a környezetfüggő nyelvtanokhoz, a monoton és a környezetfüggő nyelvtanok ekvivalenciája
Permutációs nyelvek
Levezetési gráfok, levezetési fák a környezetfüggő nyelvtanokhoz
Legbaloldalibb levezetés és átfogalmazása
Árnyék-veremautomata
Lineárisan korlátozott automata
A környezetfüggő nyelvek tulajdonságai
A szóprobléma
Zártsági tulajdonságok
Növekvő környezetfüggő nyelvek
Irodalmi megjegyzések
9. Rekurzívan felsorolható nyelvek és Turing-gépek
A Turing-gép
A Turing-gépek megállási problémája és az algoritmikusan eldönthetetlen feladatosztályok kapcsolata
Univerzális Turing-gép
A szóprobléma - rekurzív és rekurzívan felsorolható nyelvek
Bonyolultsági osztályok
Normálformák a mondatszerkezetű nyelvtanokhoz
Révész-féle normálalak
Geffert-féle normálformák
Zártsági tulajdonságok
Irodalmi megjegyzések
10. Nyelvtanrendszerek (Grammatikarendszerek)
Nyelvtanok kooperatív elosztott rendszerei – CD nyelvtanrendszerek
Nyelvtanok párhuzamos kommunikáló rendszerei – PC nyelvtanrendszerek
Irodalmi megjegyzések
11. Irodalomjegyzék

A példák listája

2.1. Szó hossza
2.2. Szavak egyenlősége
2.3. Véges és végtelen nyelvek
2.4. Szavak konkatenációja
2.5. Szavak konkatenációja egyelemű ábécé felett
2.6. Szó részszava
2.7. Nyelvműveletek - Gyakorló feladat
2.8. Nyelvek konkatenációja
2.9. Nyelvek számossága - Gyakorló feladat
2.10. Formális nyelvek, nyelvműveletek 1.feladat
2.11. Formális nyelvek, nyelvműveletek 2.feladat
3.1. Átírási rendszer
3.2. Levezetés átírási rendszerben
3.3. Generatív rendszer
3.4. Analitikus rendszer
3.5. Szemi-Thue rendszer
3.6. Elmélet teljessége, ellentmondásmentessége
3.7. Elemi helyettesítés
3.8. Unáris számok összeadása
3.9. Végtelen helyettesítési lánc
3.10. Unáris számok szorzása
3.11. Feladat - Legnagyobb közös osztó előállítása
3.12. Bináris szó rendezése
3.13. Bináris szó tükrözése
3.14. Bináris szó megegyező végeinek törlése
3.15. Bináris szám növelése 1-gyel
3.16. Unáris szám bináris alakja
3.17. Bináris szám csökkentése 1-gyel
3.18. Bináris szám unáris alakja
3.19. Generatív nyelvtan természetes nyelv "leírására"
3.20. Unáris négyzetszámok
3.21. Unáris prímszámok
3.22. Gyakorló feladat
3.23. Grammatikák főbb típusai 1. példa
3.24. Grammatikák főbb típusai 2. példa
3.25. Grammatikák főbb típusai 3. példa
3.26. Grammatikák főbb típusai 4. példa
3.27. Grammatikák főbb típusai 5. példa
3.28. Grammatikák főbb típusai 6. példa
3.29. Grammatikák főbb típusai 7. példa
3.30. Grammatikák főbb típusai 8. példa
3.31. Grammatikák főbb típusai 9. példa
3.32. Üresszó-lemma 1. feladat
3.33. Üresszó-lemma 2. feladat
3.34. Üresszó-lemma 3. feladat
3.35. Üresszó-lemma 4. feladat
3.36. Üresszó-lemma 5. feladat
3.37. Fibonacci szavak
3.38. Fraktálgenerálás L-rendszerrel
3.39. Kétdimenziós rajz L-rendszerrel
4.1. Automaták
4.2. Parciális automata
4.3. Nemdeterminisztikus automata
4.4. Rabin-Scott automata működés közben
4.5. A csengő, mint automata
4.6. Mealy és Moore automaták homomorfizmusa
4.7. Automataleképezések
4.8. Mealy-automata minimalizálása 1.feladat
4.9. Mealy-automata minimalizálása 2.feladat
4.10. Mealy-automata minimalizálása 3.feladat
4.11. Mealy-automata minimalizálása 4.feladat
4.12. Moore-automata minimalizálása 1.feladat
4.13. Moore-automata minimalizálása 2.feladat
4.14. Moore-automata minimalizálása 3.feladat
4.15. Átlátszóbetűs elfogadó automata
5.1. Végtelen reguláris nyelv
5.2. Nyelv megadása reguláris kifejezéssel 1. feladat
5.3. Nyelv megadása reguláris kifejezéssel 2. feladat
5.4. Nyelv megadása reguláris kifejezéssel 3. feladat
5.5. Nyelv megadása reguláris kifejezéssel 4. feladat
5.6. Nyelv megadása reguláris kifejezéssel 5. feladat
5.7. Nyelv megadása reguláris kifejezéssel 6. feladat
5.8. Reguláris kifejezés unió-normálformára alakítása - 1. feladat
5.9. Reguláris kifejezés unió-normálformára alakítása - 2. feladat
5.10. Reguláris kifejezés unió-normálformára alakítása - 3. feladat
5.11. Reguláris kifejezés unió-normálformára alakítása - 4. feladat
5.12. Reguláris kifejezés unió-normálformára alakítása - 5. feladat
5.13. Azonosítók nyelvének megadása szintaxis gráffal
5.14. Tizes számrendszerbeli egész számok nyelvének megadása szintaxis gráffal
5.15. Egész számok köznapi értelemben vett leírása - Gyakorló feladat
5.16. Egy nemdeterminisztikus véges automata
5.17. A páratlan a-ból és páros b-ből álló szavak nyelve
5.18. Az x-re végződő szavak nyelve
5.19. Automata determinizálása 1. feladat
5.20. Automata determinizálása 2. feladat
5.21. Automata determinizálása 3. feladat
5.22. Automata determinizálása 4. feladat
5.23. Automata determinizálása 5. feladat
5.24. Automata determinizálása 6. feladat
5.25. Automata determinizálása 7. feladat
5.26. Automata determinizálása 8. feladat
5.27. Véges elfogadó automata minimalizálása 1. feladat
5.28. Véges elfogadó automata minimalizálása 2. feladat
5.29. Véges elfogadó automata minimalizálása 3. feladat
5.30. Véges elfogadó automata minimalizálása 4. feladat
5.31. Ekvivalens reguláris nyelvtan megadása véges automatához 1. feladat
5.32. Ekvivalens reguláris nyelvtan megadása véges automatához 2. feladat
5.33. Ekvivalens reguláris nyelvtan megadása véges automatához 3. feladat
5.34. Ekvivalens reguláris nyelvtan megadása véges automatához 4. feladat
5.35. Ekvivalens véges automata megadása reguláris nyelvtanhoz 1. feladat
5.36. Ekvivalens véges automata megadása reguláris nyelvtanhoz 2. feladat
5.37. Ekvivalens véges automata megadása reguláris nyelvtanhoz 3. feladat
5.38. Ekvivalens véges automata megadása reguláris nyelvtanhoz 4. feladat
5.39. Ekvivalens véges automata megadása reguláris nyelvtanhoz 5. feladat
5.40. Ekvivalens véges automata megadása reguláris nyelvtanhoz 6. feladat
5.41. Ekvivalens véges automata megadása reguláris nyelvtanhoz 7. feladat
5.42. Egy véges automatával nem felismerhető nyelv
5.43. Ekvivalens reguláris kifejezés megadása véges automatához 1. feladat
5.44. Ekvivalens reguláris kifejezés megadása véges automatához 2. feladat
5.45. Ekvivalens reguláris kifejezés megadása véges automatához 3. feladat
5.46. Automata megadása reguláris kifejezéshez
5.47. Automata nyelvrendszer
5.48. Iterációs lemma alkalmazása
5.49. Reguláris nyelvtan megadása reguláris kifejezéshez 1. feladat
5.50. Reguláris nyelvtan megadása reguláris kifejezéshez 2. feladat
5.51. Reguláris nyelvtan megadása reguláris kifejezéshez 3. feladat
5.52. Reguláris nyelvtan megadása reguláris kifejezéshez 4. feladat
5.53. Reguláris nyelvtan megadása reguláris kifejezéshez 5. feladat
5.54. Reguláris nyelvtan megadása reguláris kifejezéshez 6. feladat
5.55. Reguláris nyelvtan megadása reguláris kifejezéshez 7. feladat
5.56. Reguláris nyelvtan megadása reguláris kifejezéshez 8. feladat
6.1. A kétbetűs ábécé feletti palindrómák (vagy tükörszavak) nyelvét generáló lineáris nyelvtan
6.2. 0n1n nyelv - Gyakorló feladat
6.3. Erős lineáris normálalak 1. példa
6.4. Erős lineáris normálalak 2. feladat
6.5. Erős lineáris normálalak 3. feladat
6.6. Erős lineáris normálalak 4. feladat
6.7. Erős lineáris normálalak 5. feladat
6.8. Erős lineáris normálalak 6. feladat
6.9. Erős lineáris normálalak 7. feladat
6.10. Kétfejű automata készítése lineáris nyelvtanhoz
6.11. A szóprobléma megoldása lineáris nyelvekre 1.feladat
6.12. A szóprobléma megoldása lineáris nyelvekre 2.feladat
6.13. Lineáris iterációs lemma alkalmazása
6.14. Az akbkambm metalineáris nyelv
7.1. A számok jelölésére használható karaktersorozatok
7.2. A számok megadása COBOL-szerű módszerrel
7.3. Levezetési fa
7.4. Csellengő "else" feladat
7.5. Chomsky normálforma 1.feladat
7.6. Chomsky normálforma 2.feladat
7.7. Chomsky normálforma 3.feladat
7.8. Greibach normálforma 1.feladat
7.9. A Bar-Hillel lemma alkalmazása
7.10. Bar-Hillel lemma 1. feladat
7.11. Bar-Hillel lemma 2. feladat
7.12. Bar-Hillel lemma 3. feladat
7.13. Bar-Hillel lemma 4. feladat
7.14. Bar-Hillel lemma 5. feladat
7.15. Bar-Hillel lemma 6. feladat
7.16. Bar-Hillel lemma 7. feladat
7.17. Bar-Hillel lemma 8. feladat
7.18. Bar-Hillel lemma 9. feladat
7.19. Verem működése
7.20. Verem, mint rekurziós eszköz
7.21. Végállapottal elfogadó veremautomata működése
7.22. Az azonos számú a és b betűből álló szavakat végállapottal elfogadó veremautomata
7.23. A Dyck nyelvet végállapottal elfogadó automata
7.24. Állapotnélküli, üres veremmel elfogadó automata működése és a legbaloldalibb levezetés kapcsolata
7.25. Veremautomaták 1. feladat
7.26. Veremautomaták 2. feladat
7.27. Veremautomaták 3. feladat
7.28. Veremautomaták 4. feladat
7.29. Veremautomaták 5. feladat
7.30. Veremautomaták 6. feladat
7.31. Veremautomaták 7. feladat
7.32. Veremautomaták 8. feladat
7.33. Veremautomaták 9. feladat
7.34. A jelölt másolatok nyelvének komplementere - Gyakorló feladat
7.35. Cocke-Younger-Kasami algoritmus 1. feladat
7.36. Cocke-Younger-Kasami algoritmus 2. feladat
7.37. Cocke-Younger-Kasami algoritmus 3. feladat
7.38. Cocke-Younger-Kasami algoritmus 4. feladat
7.39. Earley algoritmus 1.feladat
7.40. Earley algoritmus 2. feladat
7.41. Earley algoritmus 3. feladat
7.42. Earley algoritmus 4. feladat
8.1. Monoton nyelvtan
8.2. Kuroda normálforma 1.feladat
8.3. Kuroda normálforma 2.feladat
8.4. Kuroda normálforma 3.feladat
8.5. Kuroda normálforma 4.feladat
8.6. Kuroda normálforma 5.feladat
8.7. Kuroda normálforma 6.feladat
8.8. Permutációs nyelvtan
8.9. Levezetési gráf monoton esetben
8.10. Levezetési gráf környezetfüggő nyelvtanban
8.11. Környezetfüggő levezetési fa
8.12. Árnyék-veremautomata és működése
8.13. Egy növekvő környezetfüggő nyelv
9.1. Turing gépek 1.feladat
9.2. Turing gépek 2.feladat
9.3. Turing gépek 3.feladat
9.4. Turing gépek 4. feladat
10.1. CD nyelvtanrendszer
10.2. CD nyelvtanrendszer
10.3. CD nyelvtanrendszerek - Gyakorló feladat
10.4. PC nyelvtanrendszer
10.5. PC nyelvtanrendszer gyakorló feladat

Colophon

A tananyag a TÁMOP-4.1.2-08/1/A-2009-0046 számú Kelet-magyarországi Informatika Tananyag Tárház projekt keretében készült. A tananyagfejlesztés az Európai Unió támogatásával és az Európai Szociális Alap társfinanszírozásával valósult meg.

A Kelet-magyarországi Informatika Tananyag Tárház logója.

Magyarország megújul logó.

Nemzeti Fejlesztési Ügynökség http://ujszechenyiterv.gov.hu/ 06 40 638-638

1. fejezet - Bevezetés

Az algoritmikus szemlélet kialakulására nagy hatással volt az 1900-ban Párizsban rendezett első matematikai világkongresszus, ahol is többek között elhangzott David Hilbert híres előadása, melynek hatására tág teret kapott az absztrakt gondolkodásmód széleskörű alkalmazása.

Hilbert még úgy vélte, hogy létezik olyan univerzális módszer, melynek segítségével minden matematikai kérdés igaz vagy hamis volta eldönthető.

A modern elméleti számítástudomány egyik fontos fogalma a formális rendszer, melynek bevezetése Axel Thue (ejtsd: tyué) nevéhez fűződik, aki az 1910-es évek elején kezdte tanulmányozni az adatsorozatokkal megadott utasítások tulajdonságainak vizsgálatát.

A fejlődésnek e téren is újabb lökést adtak a fiatal Kurt Gödel felfedezései, aki a 20-as, illetve 30-as években kimutatta, hogy létezik olyan precízen megfogalmazható matematikai állítás, melynek sem igaz, sem hamis volta nem bizonyítható. Ez a korszakalkotó felfedezés alapjaiban rengette meg a matematikát. Ezután már senki sem lehetett biztos abban, hogy egy tetszőlegesen kiválasztott matematikai állítás igaz vagy hamis voltának eldöntése lehetséges. Erre csattanós példa volt az ugyancsak ifjú Jurij V. Matijaszevics esete, aki a 70-es évek elején kimutatta Hilbert már említett híres előadásában szereplő egyik kérdésről, hogy eldönthetetlen. (Hilbert 10. problémája.)

A 30-as évek második felében egy másik fiatal óriás, Alan Turing (ejtsd: tyuring) vizsgálataival párhuzamosan, Alonzo Church (ejtsd: csörcs) kapott hasonló módon meglepő eredményt. Nevezetesen, hogy nem létezik univerzális feladatmegoldó módszer.

A gépies bizonyítások vizsgálata elvezetett az automaták matematikai elméletének 50-es évekre kialakult megalapozásához, az idegen szövegek gépi fordításának vizsgálata pedig ugyancsak az 50-es években a formális rendszerek egy fontos típusa, a formális nyelvek matematikai elméletének kezdeteihez. Ezen a területen Noam Chomsky (ejtsd: csomszki) alapvető felfedezései jelentettek nagy lépéseket.

Végül, de nem utolsósorban meg kell említenünk, hogy az automaták matematikai elméletének megalapozásában nagy szerepet játszott a pályafutásának nagy részét az Egyesült Államokban töltő magyar származású nagy tudós, Neumann János, aki John von Neumann néven szerte a világon mint a számítástudomány atyja ismeretes. 1960-ban bekövetkezett korai halála sajnos megakadályozta abban, hogy az e téren (is) végzett úttörő kutatásait teljeskörűen megalapozza.

Már Neumann János is látta, hogy a bonyolultság és az azzal kapcsolatos kérdések nagy szerepet fognak játszani a számítástudományban. Valóban, a számítógépek 60-as évektől bekövetkezett széleskörű elterjedésével mind az elméleti, mind pedig a gyakorlati szakemberek azt tapasztalták, hogy bizonyos kérdéseket még a legmodernebb számítástechnikai eszközök felhasználásával sem képesek kezelni. Ezek a problémák nemcsak elméleti, hanem nagyon fontos gyakorlati feladatokkal kapcsolatban is felléptek. Hamarosan kiderült, hogy ez a gond nem fog megoldódni a számítógépek rohamos fejlődésével sem, mivel valószínűleg elvi akadályokról van szó. A kérdéses feladatok túl bonyolultnak látszanak ahhoz hogy kezelni tudjuk őket. A 70-es évek elején ezen kérdések kezelésére Stephen A. Cook (ejtsd: kuk), Richard M. Karp és Leonid A. Levin egy új elmélet megalapozását kezdeményezték. Megszületett az algoritmusok bonyolultságelmélete. Az eltelt több mint 30 év alatt azonban sajnos ez az elmélet nem adott választ a feltett legégetőbb kérdésekre. Ezek közül is a legfontosabb, az úgynevezett P = NP? probléma, melynek megoldása választ adna arra a nagyon fontos kérdésre, hogy egyes, a gyakorlatban is lépten-nyomon felmerülő feladatokhoz létezik-e hatékony megoldó algoritmus. Ez a több mint 30 éves nagy kérdés valószínűleg még sokáig megoldatlan marad.

A bonyolultságelmélet által felvetett problémák a 80-as évek közepére-végére elvezettek egy új terület, az úgynevezett kooperatív rendszerek megszületéséhez. Kezdetben csak arról volt szó, hogy olyan számítástechnikai eszközök születtek, melyek egyes feladatok egyidejű, párhuzamos végrehajtására voltak képesek. Ma már a kooperatív rendszerek széleskörűen elterjedtek és mind elméleti, mind pedig gyakorlati szempontból egyre nagyobb teret kapnak olyan berendezések és módszerek, amik eddig nem, vagy csak csekély mértékben voltak használatosak. Talán ezen az úton haladva fogunk eredményt elérni a még mindig megközelíthetetlennek látszó problémák kezelésében.

A formális nyelvek és automaták elmélete kiváló eszköznek bizonyult ezen kérdések absztrakt szintű vizsgálatában. Jelen jegyzet célja ezen elmélet legalapvetőbb kérdéseinek megismertetése. Az ismertetett módszerek ma már lépten-nyomon használatosak nemcsak elméleti problémák vizsgálatában, hanem egyes gyakorlati számítástechnikai feladatok megoldásában is. A formális nyelvek és automaták elmélete nemcsak olyan kézenfekvő területeken nyert alkalmazást, mint a számítógépes nyelvészet, illetve a fordítóprogramok területe, hanem ezen keresztül a programozási nyelvek, operációs rendszerek témakörében is. Például a sztringalgoritmusokon keresztül keresőalgoritmusokban, bioinformatikában, mintaillesztésben, adatbányászatban stb. is alkalmazzák. A biológiailag motivált számítások, a DNS és membrán számítások formális modelljei szintén erősen kötődnek a formális nyelvek és automaták klasszikus elméletéhez. A képfeldolgozásban, adatsűrítésben, rendszermodellezésben szintén felhasználhatjuk az itt tanultakat. Helyenként nagy figyelmet fordítunk annak igazolására is, hogy bizonyos struktúrák és módszerek nem léteznek, illetve nem lehetségesek. Ez a fáradtság a gyakorlati számítástechnikai szakember számára feleslegesnek tűnik. Jelen jegyzet szerzői, akik egyike több mint másfél évtizedig gyakorlati számítástechnikai szakemberként dolgozott, másképp gondolják. Ha ismerjük a leggyakoribb számítástechnikai zsákutcákat, akkor könnyebben ki tudjuk kerülni azokat. Ha nem, akkor úgy járhatunk mint ahogy a jegyzet nevezett szerzője is járt nem egy esetben: esetleg olyat próbálunk keresni, amiről már kiderült, hogy nincs.

Jelen jegyzet elméleti fejezeteit Dömösi Pál (pl. Automataelmélet) és Nagy Benedek (pl. Lineáris nyelvek, Környezetfüggő nyelvek, Nyelvtanrendszerek) írták (a többi fejezetet együttesen). A feladatok döntő többségét és az animációkat Falucskai János, Horváth Géza és Mecsei Zoltán készítették.

A feladatok, példák és definíciók végét a ★ jellel jelöljük. A bizonyítások végét pedig ∎-el zárjuk.

A jegyzet egyes főbb fejezeteinek felépítése a következő összefoglaló segítségével is követhető:

NyelvosztályNyelvtanNormálformákAutomataosztálySzóproblémaZártsági tulajdonságokEgyéb


Reguláris nyelvek
Chomsky 3. típus
pl: egész számok halmaza
Alosztályok:
    - véges nyelvek
    - uniómentes nyelvek


- jobb-lineáris :
    A → uB
    A → u
- bal-lineáris:
    A → Bu
    A → u
A,B ∈ N
u ∈ T*


gyenge:
    A → aB
    A → a
    A → B
    A → λ
erős:
    A → aB
    A → a
a ∈ T
A,B ∈ N


determinisztikusan,
    lineáris időben
    megoldható


alternatív leírás:
  - reguláris kifejezés
  - szintaxis gráf
pumpáló lemma


Lineáris nyelvek
pl: palindrómák nyelve
Alosztályok:
  - Determinisztikus
     automatával:
      2detLin
      detLin
  - Fix fokú lineáris:
       k-fokú lineáris
  bal-, ill. jobb-lineáris
Kiterjesztés:
    - metalineáris nyelvek


A → uBv
A → u
A,B ∈ N
u,vT*


gyenge:
    A → aB
    A → Ba
    A → a
    A → B
    A → λ
erős:
    A → aB
    A → Ba
    A → a


- determinisztikusan
    négyzetes
    algoritmus
- nemdeterminiszti-
  kusan
    lineáris


Környezetfüggetlen
Chomsky 2. típusú
pl: Zárójelek nyelve 
Alosztályok:
    - determinisztikus CF
    - számlálónyelvek
Kiterjesztés: pl. CD és
    PC rendszerek


A → p
A ∈ N
p ∈ ( NT )*


Chomsky:
    A → BC
    A → a
Greibach:
    A → aq
A,B,C ∈ N
a ∈ T
q ∈ N*


nemdeterminisztikus
  veremautomata

    - üres veremmel
    - végállapottal
    - üresveremmel és
        végállapottal
    - állapotnélküli
        (üres veremmel)


CYKEarley
  algoritmusok
  determinisztikus
  köbös
  időben
- nemdeterminiszti-
   kusan
   lineáris időben
   (Greibach NF)


pumpáló lemma
    (Bar-Hillel lemma)
Levezetési fa fogalma
Legbaloldalibb
    levezetés

alternatív leírás:
  BNF, szintaxis gráf

NyelvosztályNyelvtanNormálformákAutomataosztálySzóproblémaZártsági tulajdonságokEgyéb


Környezetfüggő
Chomsky 1. típusú
pl: prímszámhosszú
    szavak nyelve

Alternatív definíció:
    Monoton
Alosztályok:
    - Permutációs
    - Növekvő
        környezetfüggő


pAq → prq
p,q ∈ (NT)*
A ∈ N
r ∈ (NT)+
kivéve
S → λ, de ekkor
S nem szerepelhet
egyetlen szabály
jobb oldalán sem
monoton:
 u → v
  | u  | ≤ | v  | 
 kivéve S → λ
 a fenti feltétellel


Kuroda:
 AB → CD
 A → BC
 A → B, A → a
Révész:
 AB → AC
 AB → CB
 A → BC
 A → B, A → a
Penttonen:
 AB → AC
 A → BC
 A → a


megoldható
(PSPACE-teljes,
 nincs hatékony
 algoritmus)


Rekurzívan
    felsorolható

(van olyan algoritmus,
 amivel a nyelv összes
 szava felsorolható.)
Chomsky 0. típus
Alosztály:
    Rekurzív
    (Egy nyelv rekurzív,
    ha L és L
    komplementere
    is rekurzívan
    felsorolható.)


Révész:
 AB → AC
 AB → CB
 A → BC
 A → B
 A → a
 AB → B
Penttonen
 AB → AC
 A → BC
 A → a
 A → λ
Geffert, pl:
 S → p
 AB → λ
 CD → λ

 S → p
 ABC → λ
 


Turing gép
    - determinisztikus
    - nemdeterminisztikus
(egyéb változatok:
 több szalagos,
 csak egyirányba
  végtelen szalag)

univerzális Turing gép

kapcsolódó terület: 
kiszámíthatóság és
 bonyolultságelmélet
,
a Neumann-féle
 számítógép
 elméleti modellje


algoritmikusan
 nem
 megoldható
(megállási
    probléma
)

2. fejezet - Formális nyelvek

Ábécé, szó, formális nyelv, szabad monoid, szabad félcsoport

Szimbólumok tetszőleges nemüres, véges halmazát ábécének nevezzük, és V-vel jelöljük. A V elemeit az ábécé betűinek mondjuk.

Jelölje V+ (ejtsd: véplusz) a V-beli betűkből felírható p=a1a2ak (a1,…,ak  ∈ V ) alakú véges hosszúságú sorozatok, az úgynevezett V feletti nem üres szavak halmazát. Egy p szó hosszát | p | -al (ejtsd p hossza) jelöljük és rajta a p-beli betűk számát értjük (esetleges többszöri előfordulással együtt). Így ha p=a1a2ak (a1,…,ak  ∈ V ), akkor | p | = k.

2.1. példa - Szó hossza

Legyen a V ábécé két betűje a és b. Ekkor babV+ és | bab | = 3 (és nem 2, mert a b betű kétszer is előfordul, és a többszöri előfordulást figyelembe kell venni.) ★


Szokás beszélni az úgynevezett üresszóról is, ami egy matematikai absztrakció, ugyanis olyan szót jelent, melynek egyetlen betűje sincs, vagyis az egyetlen betűt sem tartalmazó betűsorozatot. Speciálisan, jelölje λ a továbbiakban az üresszót. Itt jegyezzük meg hogy bár az automataelméleti szakirodalomban az ε-t (is) szokás az üresszó jelölésére használni, ebben a jegyzetben mi végig a λ jelet fogjuk használni. Tehát | λ | = 0. A V+∪{ λ } halmazt a V feletti (összes) szavak halmazának hívjuk, s V*-al (ejtsd vécsillag) jelöljük. Speciálisan, ha valamely aV-re V = { a} azaz V egyelemű halmaz, s egyetlen eleme egy bizonyos a betű, akkor gyakran írunk { a } * helyett a*-ot, illetve { a}+ helyett a+-t. Valamely V*-beli p=a1am és q=b1bn (a1,…,am,b1,…,bn  ∈ V) szavakat pontosan akkor tekintjük egyenlőknek, ha m = n és minden i = 1,…,n-re ai = bi. Ezt a tényt ki szokás úgy is fejezni, hogy V*-ban csak grafikus (betűről - betűre megegyező) egyenlőségek léteznek.

A V ábécé feletti szavak egy tetszőleges L halmazát a V ábécéből alkotott (formális) nyelvnek nevezzük, vagyis a V * halmaz részhalmazait V feletti formális nyelveknek, vagy röviden V feletti nyelveknek, vagy csak egyszerűen nyelveknek hívjuk. Valamely LV * nyelvet üresnek, végesnek vagy végtelennek hívunk ha az L (mint halmaz) üres, véges, illetve végtelen.

Azt a nyelvet, amelynek egyetlen szava sincs, üres nyelvnek nevezzük. Jelölés: ∅. Nem tévesztendő össze a { λ } nyelvvel, amely egyedül az üresszót tartalmazza.

Az így definiált nyelvfogalom túl általános, magában foglalja mind a mesterséges, mind a természetes (írott) nyelvek összességét. A kérdés viszont az, hogyan lehet ténylegesen megadni egy konkrét nyelvet. Az egyszerű tulajdonságokkal rendelkező nyelveket máris megadhatjuk a halmazok megadásának különböző módjai szerint. Legyen például a véges ábécénk mindössze két elemű: V={0,1}. Ekkor az

  • L1 = { λ},

  • L2 = { 1, 10, 0010, 111},

  • L3 = { 1i | i prím }

halmazok mindegyike egy-egy nyelv a fenti definíció értelmében. Szükségünk van azonban olyan eszközökre, amelyekkel a fentieknél lényegesen összetettebb nyelveket is definiálhatunk. Ebből a célból vezetjük be a generatív nyelvtan fogalmát.

Tehát a továbbiakban olyan nyelveket fogunk csak vizsgálni, melyek véges sok adat segítségével speciális módon, az úgynevezett generatív nyelvtanokkal megadhatók. Megjegyezzük azt is, hogy az általunk használt szófogalom nem esik egybe a természetes nyelvek szófogalmával, hisz egy természetes nyelvet úgy szokás tekinteni, mint az adott nyelv összes mondatainak halmazát. De tekinthetünk egy természetes nyelvet úgy is mint a nyelv összes véges hosszú szövegeinek halmazát. A szóközt és egyéb írásjeleket is felvéve az ábécébe, az általunk definiált szófogalom amellett, hogy magában foglalja a szokásos szófogalmat, magában foglalja mind a mondat fogalmát, mind pedig a tetszőleges véges hosszúságú szöveg fogalmát is.

2.2. példa - Szavak egyenlősége

Legyen V = { 1, 2, + }. Ekkor (V*- ban !) fennáll, hogy 1+1≠2, mivel az 1+1 szó nem egyezik meg "betűről - betűre", azaz grafikusan a 2 szóval. ★


2.3. példa - Véges és végtelen nyelvek

Legyen V = { 0,1,…,9}. A (magyar) történelmi dátumok { 1514, 1526, 1606, 1711, 1849, … } halmaza ekkor egy V feletti véges nyelv. A (tízes számrendszerbeli) páros számok halmaza egy V feletti végtelen nyelv. Temészetesen az üres halmaz is egy V feletti (üres) nyelv. Ugyancsak V feletti (véges) nyelv az egy elemű { λ } halmaz is. ★


A V* halmazon (és a V+ halmazon is) szokás bevezetni egy (nagyon egyszerű tulajdonságú) műveletet, melyet szorzásnak nevezünk.

A p = a1am és q = b1bn ( a1, …, am, b1, …, bnV ) szavak szorzatán a pq = a1 a2am b1 b2bn szót értjük. Két V*- beli (vagy két V+- beli) szót tehát úgy szorzunk össze, hogy e szavakat (megfelelő sorrendben) egymás mellé (után) írjuk. E műveletet konkatenációnak vagy összefűzésnek is szokás hívni. Természetesen ez a szorzásfajta általában nem kommutatív, azaz általában nem teljesül minden p, qV* párra a pq = qp egyenlőség. Amennyiben p = p1pk ( ∈ V* k = 1,2,… ) továbbá p1 = p2 = … = pk = q úgy alkalmazni fogjuk a p = qk jelölést, s ezesetben p- t a q szó k-adik hatványának is nevezzük. Tehát a q szó k- adik hatványán az önmagával vett k- szoros konkatenációját értjük. Továbbá megállapodunk abban, hogy minden szó nulladik hatványa az üresszó (jelekben: ∀ qV* :q0= λ.) Röviden úgy is mondhatjuk, hogy egy szó k- adik hatványa nem más mint k- szoros ismétlődése (beleértve a nullaszoros ismétlődést is).

2.4. példa - Szavak konkatenációja

Legyen ismét V = { ab}. Ekkor az abba V*- beli szó baba V*- beli szóval való szorzata abbababa lesz (ami persze nem egyezik meg a babaabba szóval. A szorzás tehát valóban, általában nem kommutatív). Igaz továbbá (definíció szerint), hogy baba=(ba)2. ★


2.5. példa - Szavak konkatenációja egyelemű ábécé felett

Legyen most V = { a}, azaz álljon ábécénk egyetlen betűből. Mutassuk meg hogy ebben a kivételes esetben a szorzás kommutatív. ★


A V*-ban ezen szorzás műveletre nézve a λ üresszó egységelem lesz, hisz minden pV*-ra pλ = λp = p (annak megfelelően, hogy ha egy szó - beleértve az üresszót is - elé vagy mögé nem írunk egyetlen betűt sem, azaz az üresszót "írjuk", akkor marad az eredeti szó). Nyilvánvaló továbbá, hogy minden p,q  ∈ V* párra | pq | = | p | + | q | .

Az előbbiekben definiált szorzás műveletével ellátott V* halmazt a V által generált egységelemes szabad félcsoportnak, más néven V feletti egységelemes szabad félcsoportnak, vagy röviden, V feletti szabad monoidnak hívjuk, s rá ugyancsak a V* jelölést használjuk.

Hasonlóan, a szorzás műveletével ellátott V+ halmazt a V által generált szabad félcsoportnak, más néven V feletti szabad félcsoportnak hívjuk, s rá ugyancsak a V+ jelölést használjuk. (V* tehát egyidejűleg jelöli az összes V feletti szavak halmazát és a V feletti szabad monoidot, míg V+ az összes V feletti nem üres szavak halmazát és a V feletti szabad félcsoportot. Amennyiben tehát algebrai struktúraként tekintünk a V*-ra ( V+-ra), akkor a konkatenáció az alapértelmezett művelet az elemei közt.)

Nyilvánvaló, hogy V+ zárt marad a szorzás, azaz az összefűzes műveletére, hisz két nem üresszót egymás után írva, azaz összefűzve, nem kaphatunk üresszót.

Legyen p és q tetszőleges két szó V*-ban. Azt mondjuk, hogy p kezdőszelete (prefixe) q-nak, ha van olyan rV*, hogy q = pr. Pontosabban, ha q = pr mellett | p | = k akkor a p szót a q szó k hosszúságú kezdőszeletének nevezzük (ekkor, ha 0 < k < | q | , akkor p a q valódi kezdőszelete). Hasonlóan, ha van olyan sV* szó, hogy q = sp, akkor azt mondjuk hogy p a q-nak végződése (szuffixe) és ha |p| = m akkor m hosszúságú végződésről beszélünk (ekkor ha pλ és pq akkor p valódi végződése a q-nak). Végül, a pV* szót a q  ∈ V* szó részszavának mondjuk, ha van olyan r, sV*, hogy q = rps. Amennyiben pqpλ, valódi rész-szóról beszélünk. Tehát, egy szó önmagától különböző nemüres kezdőszeleteit, végződéseit, illetve részszavait valódi kezdőszeletnek, valódi végződésnek, illetve valódi részszónak hívjuk.

Egy pV+ szó utolsó betűjére használni fogjuk a ≫ p jelölést.

2.6. példa - Szó részszava

Legyen V = { a, b}, p = abbababa. Ekkor p-nek 4 hosszúságú kezdő szelete abba, 4 hosszúságú végződése pedig baba lesz. Ugyanekkor p-nek például a bab szó (valódi) rész-szava. Végül, ≫ p = a (abbababa utolsó betűje). ★


Nyelvműveletek

Két nyelv között akkor értelmezhetünk valamilyen műveletet, ha ugyanazon V ábécé felett vannak értelmezve. (Ha ez nem teljesül, akkor először a nyelveket kell átdefiniálni formálisan egy közös ábécé, pl. a két ábécé uniója felettire.)

Formális nyelvekre, mint szóhalmazokra közvetlenül értelmezhetők a halmazelméleti alapműveletek:

unió (egyesítés, összeadás): L1L2 = { p | p ∈ L1 vagy p ∈ L2},

metszet: L1L2 = { p | p ∈ L1 és p ∈ L2},

különbség: L1L2 = { p | p ∈ L1 és pL2},

komplementer: = V*L1.

Amint látjuk a komplementerképzésnél nagyon fontos az alaphalmaz, vagyis az ábécé ismerete, hiszen pl. az L = { ab, aa, ba, bb } nyelv komplementere telejsen más, ha L- et a V = { a, b}, vagy a V ' = { a, b, c } ábécé felettinek definiáltuk. Ennek megfelelően a továbbiakban is mindig úgy tekintünk egy nyelvre, mint egy adott V ábécé feletti nyelvre (akkor is ha ezt a tömörség kedvéért nem írjuk oda).

A nyelveken a halmazműveleteken kívül a konkatenációt és az iterációt alapműveleteknek tekintjük: Két nyelv konkatenációján a következő nyelvet értjük: L1L2 = { pq | p ∈ L1 és q ∈ L2}. Szokásos módon a konkatenáció jelét sokszor elhagyjuk, pl. L1 L2. Legyen i = 1, 2, …. Ekkor egy L nyelv i-edik hatványán a nyelv i-szer egymás utáni, önmagával való konkatenációját értjük. Jelölés: Li. Megállapodás szerint L0 = { λ}.

A konkatenáció lezárását (Kleene iterációt) (ejtsd: klíni) az összefüggéssel értelmezzük.

Az előző Kleene-csillag művelet mellett szokás még az iteráció, a Kleene-plusz használata is.

A kétféle iteráció között az L0 = { λ } jelenthet különbéget: A definiáló egyenlőségek alaján belátható, hogy L+ = L* pontosan akkor, ha λ ∈ L. Továbbá L+ = L* ∖ { λ } pontosan akkor, ha λL.

Mejegyzés. Mivel a V ábécé mint halmaz egyben tekinthető egy formális nyelvnek is, a korábbi V* és a V+ jelölés éppen egybeesik a most definiált iteráció műveletek V-re való alkalmazásának eredményével.

Legyen V ábécé rögzített, ekkor igazak az alábbi összefüggések (tetszőleges L1, L2, L3V* esetén):

  • L1L2 = L2L1 (az unió kommutatív),

  • ( L1L2 ) ∪ L3 = L1∪( L2L3 ) (az unió asszociatív),

  • L1L1 = L1 (az unió idempotens),

  • L1L2 = L2L1 (a metszet kommutatív),

  • ( L1L2 ) ∩ L3 = L1 ∩ ( L2L3 ) (a metszet asszociatív),

  • L1L1 = L1 (a metszet idempotens),

  • ( L1L2 ) ⋅ L3 = L1 ⋅ ( L2L3 ) (a konkatenáció asszociatív),

  • = L1 (a komplementerképzés involúciós tulajdonsága),

  • L1 ⋅ ∅ = ∅ ⋅ L1 = ∅,

  • L1 ⋅ { λ } = { λ} ⋅ L1 = L1 (a konkatenáció egységeleme a { λ } nyelv),

  • L1∪∅ = ∅ ∪L1 = L1 (az unió egységeleme az ∅ nyelv),

  • L1V* = V*L1 = L1 (a metszet egységeleme a V* univerzális nyelv),

  • L1+ = L1L1* = L1*L1,

  • L1* = L1+ ∪{ λ},

  • (L1* ) * = L1* (az iteráció idempotens tulajdonsága),

  • ( L1+ ) + = L1+ (a + művelet idempotens tulajdonsága),

  • ( L1* ) + = ( L1+ ) * = L1*.

Az unió, metszet, illetve konkatenáció asszociativitása miatt általában nem is szoktuk zárójelekkel jelezni a műveleti sorrendjüket, így egyszerűen pl. L1L2L3 alakot használunk.

További zárójeleket hagyhatunk el megtartva az egyértelmű jelentést a követekező precedencia reláció bevezetésével. Az egyargumentumú műveletek (komplementer, (Kleene-)csillag és (Kleene-)plusz) precedenciája nagyobb, mint a kétargumentumúaké. A szorzás (konkatenáció) precedenciája nagyobb, mint az unió és metszet műveleteké.

Legyen adva két véges ábécé, V1 és V2. A V1*-nak a V2*-ba való h leképezését homomorfizmusnak nevezzük, ha:

  • injektív, vagyis az értelmezési tartomány minden egyes eleméhez az értékkészletnek pontosan egy eleme van hozzárendelve,

  • és művelettartó, azaz h ( p q ) = h ( p ) h ( q ), tetszőleges p, qV1*-ra.

A fenti két tulajdonságból rögtön következik, hogy az üresszó képe az üresszó lesz, ugyanis h ( p ) = h ( p λ ) = h ( p ) h ( λ ) minden pV1* szóra.

Egy homomorf leképezést λ- mentesnek nevezünk, ha h ( p ) = λ esetén p = λ.

2.7. példa - Nyelvműveletek - Gyakorló feladat

Legyen V = { a, b, c}, L1 = { a, c, bb, aba}, L2 = { a, abba, baba, caba, abbaba, babaabba}. Adjuk meg az L1L2, L1L2, L1 L2, L1 L1 halmazokat. ★


2.8. példa - Nyelvek konkatenációja

Adjunk példát olyan L1 és L2 V ábécé feletti nyelvekre, amelyekre L1 L2 = L2 L1. Keressünk nem triviális megoldást is.


Triviális megoldások:

  • L1 = ∅, L1 = { λ } vagy a szimmetria miatt L2-re teljesül az előző esetek egyike.

  • L1 = L2.

  • V ábécé egyelemű.

  • Az egyik nyelvben benne szerepel λ, a másik nyelv pedig a V* (univerzális nyelv).

Egy nem triviális megoldás:

legyen V = { a, b}, L1 = { λ, a}, L2 pedig legyen azon V feletti szavak halmaza, amelyekben pontosan egy b szerepel. Ekkor L1 L2 = L2 L1 = L2. ★

2.9. példa - Nyelvek számossága - Gyakorló feladat

Adottak L1 és L2 véges nyelvek V ábécé felett, hogy | L1 | = n, | L2 | = m. Mennyi lehet a számossága az L1L2, L1L2, L1 L2 nyelvműveletekkel előálló nyelveknek? Adjunk meg alsó felső korlátot, és példákat. ★


2.10. példa - Formális nyelvek, nyelvműveletek 1.feladat

Igazoljuk vagy cáfoljuk, hogy (L1L2 )* = L1*L2* !

Megoldás: Az állítás hamis. Vegyük a következő ellenpéldát: Legyen L1 = { a} és L2 = { b}, ekkor ( L1L2 )* az akárhány a-t és b-t tartalmazó szavak halmaza, még L1*L2* a csupa a-t és csupa b-t tartalmazó szavak nyelve lesz. ★


2.11. példa - Formális nyelvek, nyelvműveletek 2.feladat

Mivel egyenlő L2, ha

L = { an bn|n >0 } ?

Megoldás: L2 = { an bn am bm | n, m > 0}. ★


3. fejezet - Formális rendszer és néhány főbb típusa

Formális rendszernek (vagy átírási rendszernek) nevezünk minden olyan W = ( V, H ) párt, amelyben V egy ábécé, H pedig a V* × V* direkt szorzat egy véges részhalmaza. A H elemeit helyettesítési szabályoknak hívjuk és ha ( p , q ) ∈ H, akkor a p → q (ejtsd: p nyíl q) jelölést használjuk.

3.1. példa - Átírási rendszer

W = ( { a, b , d, e, é , f, k, l , ő, s, v , z }, { akedle, levesfőzelék } ). ★


Legyen r, sV*. Akkor mondjuk, hogy r - ből az s közvetlenül (vagy egy lépésben) levezethető W-ben, jelekben: rW s, vagy ha nem vezet félreértéshez, W elhagyásával rs, ha léteznek olyan p ', p, p '' , q ∈ V* szavak, hogy r = p ' pp '', s = p ' qp '' és p → q ∈ H. (Természetesen megengedett, hogy akár a p ', akár a p '', vagy akár mindkettő az üresszó legyen.) Szemléletesen, rW s azt jelenti, hogy az s szó megkapható az r szóból úgy, hogy r-ben valamely H-beli szabály baloldalán álló p rész-szó helyébe az e szabály jobboldalán álló q szót írjuk (lásd ábra).

Azt mondjuk, hogy a p - ből a q levezethető W-ben, jelekben pW* q, vagy ha nem vezet félreértéshez, W elhagyásával: p* q ha léteznek olyan p0 , p1, … , pkV* szavak, hogy p0 = p , pk = q és piW pi+1 ( i = 0, …, k-1 ). Emellett, amint szokásos, megállapodunk abban, hogy minden p ∈ V* szóra pW* p fennáll. Használni fogjuk még a pW+ q jelölést is abban az esetben, ha azt akarjuk hangsúlyozni, hogy léteznek olyan p0 , p1, … , pkV* szavak, hogy p0 = p , pk = q és piW pi+1 ( i = 0, …, k-1 ). Világos, hogy a két jelölés p = q esetén kap eltérő értelmet.

3.2. példa - Levezetés átírási rendszerben

Tekintsük a fenti példában megadott formális rendszert és a babakedves szót. Ekkor a babakedvesbablevesbabfőzelék levezetés alkalmazásával látjuk, hogy például a W-beli babakedves szóból a bableves közvetlenül levezethető, a babfőzelék pedig levezethető. ★


Amennyiben olyan formális rendszereket tekintünk, melyekben a helyettesítési szabályok szimmetrikusak, eljutunk az asszociatív kalkulus fogalmához. Ha tehát valamely asszociatív kalkulus esetén egy p szó helyettesíthető q - val, akkor a q szó is helyettesíthető p - vel. Emiatt nem is helyettesítési szabályokról, hanem megengedett cserékről szokás beszélni. Továbbá, ha egy p szóból egy q szó levezethető az asszociatív kalkulusban, akkor azt mondjuk hogy p ekvivalens q - val.

Legyen W = ( { a, c , k, m, ó , u, s, t , y }, { acs - ó , ka - kus } ). Asszociatív kalkulus esetén a szabályok bal és jobboldalát  → helyett - - el (kötőjellel) szokás elválasztani, ezzel is hangsúlyozva, hogy a szabályok szimmetrikusak. Példánknál maradva, az acs helyettesíthető az ó - val és az ó is helyettesíthető acs - csal. Ugyanígy, a ka helyettesíthető kus - sal és a kus a ka - val. Tekintsük a m acska kamókus levezetést. Ekkor a macska ekvivalens W-ben a mókus - sal. Ehhez ⇒W* helyett ≃W - t, vagy ha nem okoz félreértést, akkor egyszerűen (az ekvivalencia egyik szokásos jelét,) ≃-t szokás használni, azaz macskamókus. Vizsgáljuk meg most ezt az ≃-t mint relációt. Ez az ≃reláció reflexív, azaz minden V*-beli p szóra pp. Például, macskamacska. Az ≃szimmetrikus, azaz minden V*-beli p, q szópárra pq akkor és csak akkor, ha qp. Például, macskamókus következménye mókusmacska és viszont. Ugyanígy, példánkban kutyamacska következménye macskakutya és viszont. Az ≃ tranzitív, azaz minden V*-beli p, q, r szó-hármasra pq és qr esetén pr. Példánkban macskamóka és mókamókus miatt macskamókus. (De ugyanígy igaz, hogy macskamókus és mókusmóka miatt macskamóka. )

1. Megjegyzés. a reflexív és tranzitív tulajdonság közvetlenül következik a levezethetőség definíciójából. A szimmetria a szabályok szimmetrikus volta miatt, továbbá a tranzitivitás miatt áll fenn, melynek igazolását az olvasóra bízzuk.)

Emlékeztető. Egy M halmaz önmagával való Descartes szorzatának (jelekben: M × M - nek) részhalmazait M feletti bináris relációnak, vagy röviden, relációnak szokás nevezni. Speciálisan, M × M véges részhalmazait véges relációknak is szokás hívni ( M felett).

Felhasználva az előző példánkban tárgyaltakat, vegyük észre, hogy ha egy adott W = ( V, H ) formális rendszerbeli közvetlen levezethetőséget mint a V* halmaz feletti (véges) bináris relációt tekintjük, úgy a belőle származtatható levezethetőség nem más mint a közvetlen levezethetőség reflexív és tranzitív lezárása, vagyis az a legszűkebb reflexív és tranzitív reláció, melynek a tekintett levezethetőség részrelációja. Asszociatív kalkulus esetén, mint példánkban már említettük, ez a levezethetőség (mint reláció) ekvivalencia reláció lesz, ugyanis a reflexív és tranzitív tulajdonság mellett a szimmetrikus tulajdonsággal is rendelkezni fog. Emiatt szokás egy W = ( V, H ) asszociatív kalkulusban ekvivalensnek hívni a p, qV* szavakat, ha p* q azaz ha pq.

Akkor mondjuk, hogy a W = ( V, H ) asszociatív kalkulusban a szóprobléma algoritmikusan megoldható, ha létezik olyan algoritmus, melynek segítségével tetszőleges p, q párra eldönthető, hogy p és q ekvivalens-e (azaz pq fennáll-e) és ha igen, akkor az algoritmus egy pp1p2 ⇒ … ⇒ pn-1q levezetést is szolgáltat. Ezen fogalomnak azért van különös jelentősége, mert kimutatható, hogy nem minden asszociatív kalkulusban oldható meg a szóprobléma algoritmikusan (ami egyúttal azt is igazolja, hogy nincs olyan univerzális módszer, ami minden matematikai problémát képes megoldani). Később még vissza fogunk térni erre az eldönthetőségi kérdésre.

Egy W = ( V, H ) formális rendszert generatív rendszernek nevezünk, ha ki van tüntetve V* egy nem üres és véges részhalmaza, amelyet W axiómarendszerének nevezünk (és rá többnyire az Ax jelölést használjuk). Egy ilyen W generatív rendszert W = ( V, Ax , H ) alakban szokás megadni (aholis V az ábécé, Ax az axiómák, H pedig a szabályok nem üres és véges halmaza). W - hez hozzárendelünk egy Lg ( W ) halmazt az Lg ( W ) = { pV* | ∃ s  ∈ Ax : sW* p } definícióval, s ezt a halmazt a W generatív rendszer által generált nyelvnek hívjuk. Lg ( W ) tehát tartalmazza mindazon V*-beli szavakat, melyek legalább az egyik axiómából levezethetők.

Egy W = ( V, Ax , H ) generatív rendszert úgy is szokás interpretálni (azaz értelmezni), hogy V bizonyos fogalmak rendszere, Ax az axiómarendszer (vagyis az alapigazságok, vagy igaznak tartott alapvető állítások gyűjteménye), V* elemei a V fogalomkörben megfogalmazható (értelmes vagy értelmetlen) formális mondatok halmaza, H a W-ben megengedett elemi bizonyítási lépések halmaza, pp1 ⇒ … ⇒ pnq a q formális mondat p - ből való bizonyítása, Lg ( W ) pedig a V fogalomkörben megfogalmazható és az Ax axiómarendszerből W-ben bebizonyítható formális mondatok (kijelentések) halmaza.

Analóg módon, tekinthetjük az összes olyan szavak halmazát is, melyekből az axiómák közül legalább az egyik levezethető. Ebben az esetben W - t (a generatív rendszer elnevezés helyett) analitikus rendszernek, az La ( W ) = { pV* | ∃ s  ∈ Ax : pW* s } halmazt pedig a W analitikus rendszer által acceptált, vagy más szóval, a W analitikus rendszer által elfogadott nyelvnek, vagy még másképp a W analitikus rendszer által felismert nyelvnek hívjuk.

Az analitikus rendszer által elfogadott nyelvet a későbbiekben fogjuk interpretálni (azaz értelmezni).

3.3. példa - Generatív rendszer

Vegyük a W = ( { 1, 2, +, = }, { 1 + 1 = 2 }, { = → + 1 = 1 + } ) generatív rendszert. Fogalmaink az 1, 2 természetes számok, továbbá az összeadás és az egyenlőség (jele). Egyetlen axiómánk van, 1 + 1 = 2. Az 1 + 1 + 1 + 1 = 1 + 1 + 2 kijelentés (vagy "tétel"-nek is lehetne mondani) bebizonyítható W-ben. Ime a "bizonyítás:" (Egyetlen) axiómánk 1 + 1 = 2. Ebből indulunk ki :


1 + 1 = 2 ⇒ 1 + 1 + 1 = 1 + 2 ⇒ 1 + 1 + 1 + 1 = 1 + 1 + 2. ★

3.4. példa - Analitikus rendszer

Tekintsük a W = ( { <, >, 0, 1, 2, 3, 4, 5, 6 , 7, 8, 9 }, { < 0 >, < 5 > }, { 00 → 0, 10 → 0, 20 → 0, 30  → 0, 40 → 0, 50 → 0, 60 → 0, 70 → 0 , 80 → 0, 90  → 0, 05 → 5, 15 → 5, 25 → 5, 35 → 5, 45 → 5, 55  → 5, 65 → 5, 75 → 5, 85 → 5 , 95 → 5 } ) analitikus rendszert. Az olvasóra bízzuk annak igazolását, hogy L a ( W ) épp az öttel osztható, < a1a n > ( a 1, …, a n ∈ { 0, …, 9 } ) alakban megadott nemnegatív egészek halmaza. W tehát "felismeri" az 5 - tel osztható nemnegatív egészeket. ★


Egy W = ( V, Ax , H ) generatív rendszert szemi-Thue rendszernek (ejtsd: tyué) nevezünk (az angol semi[ejtsd:szemi] = félig-, fél szó alapján), ha ki van tüntetve V* egy olyan F részhalmaza, melyre AxF. Egy ilyen szemi-Thue rendszert W = ( V, Ax , H, F ) alakban adunk meg, ahol F a formulák halmaza, és a W - nek a generatív rendszerhez hasonló értelmezése esetén mondhatjuk még azt is, hogy F az igaz (vagy igaznak tartott) állítások (kijelentések, mondatok, tételek) halmaza (lásd ábra).

Képezzünk egy szemi-Thue rendszert oly módon, hogy a 3.3. Példa (Generatív rendszer)-beli generatív rendszert kiegészítjük formulákkal. Ezzel összhangban tekintsük a következő példát.

3.5. példa - Szemi-Thue rendszer

W = ( { 1, 2, +, = }, { 1 + 1 = 2 }, { = → + 1 = 1 + }, { 1 + 1 = 2, 1 + 1 + 1 + 1 = 2 + 2, 1 + 1 ( + 1 ) n = ( 1 + ) n + 2 , n = 1, 2, … } ).


Amint szokásos, ( + 1 ) n itt azt jelenti, hogy + 1 n-szer van írva. Például: ( + 1 ) 3 = + 1 + 1 + 1. Hasonlóan, ( 1 + )n jelentése az, hogy 1 + van n - szer írva. Például: ( 1 + ) 2 = 1 + 1 + . A nyilvánvalóan igaz 1 + 1 + 1 + 1 = 2 + 2 összefüggés a példabeli szemi-Thue rendszerben nem bizonyítható. Mint már a bevezetésben elmondtuk, ezen a játékos példán bemutatott probléma a matematika egyes nehezebb fejezeteiben is fennáll. Nevezetesen, vannak precízen megfogalmazható, de nem bizonyítható és nem is cáfolható matematikai kijelentések. ★

Legyen W = ( V, Ax , H, F ) tetszőleges szemi-Thue rendszer, s jelölje Ax* p röviden azt a tényt, hogy létezik olyan p0 ∈ Ax, melyre p0* p. Ezt a jelölést használva L( W ) = { pV* | Ax* p } és W-ben absztrakt módon az F halmaz mint elmélet ( = igaz vagy igaznak tartott állítások halmaza, rendszere, vagy gyűjteménye) axiomatizálásának tipikus kérdései a következőképp fogalmazhatók meg:

a.) teljes-e az elmélet, vagyis az Ax axiómarendszerből minden igaz állítás bebizonyítható-e. Jelöléssel: fennáll-e az FLg ( W ) tartalmazás;

b.) ellentmondásmentes (azaz helyes)-e az elmélet, vagyis igaz-e, hogy az axiómarendszerből nem vezethető le egyidejűleg igaz és hamis állítás is. Képletben: igaz-e, hogy akárhogy is adjuk meg a p ∈ F és qF párokat, Ax* p mellett Ax* q nem állhat fenn egyidejűleg. (Vegyük észre, hogy ha Ax* q és qF, akkor felhasználva Ax* q jelentését, lenne olyan p0 ∈ Ax, hogy p0* q, ami AxF és p0* p0 miatt azt is jelentené, hogy p0 ∈ F és qF mellett Ax* p0 és Ax* q. Az ellentmondásmentesség feltétele tehát tulajdonképp azt jelenti, hogy hamis kijelentés nem vezethető le az axiómarendszerből.)

c.) kategórikus (= konzekvens)-e az elmélet, vagyis az Ax axiómarendszerből minden igaz állítás, de csakis az igaz állítások bebizonyíthatók-e. Jelöléssel: F = Lg ( W ) fennáll-e; (Vegyük észre, hogy egy elmélet pont akkor konzekvens, ha egyidejűleg teljes és helyes is.)

d.) minimális-e az elmélet, azaz igaz-e, hogy egyik axióma sem bizonyítható be a másikból. Képletben: igaz-e, hogy ha p, q ∈ Ax és p* q, akkor szükségképp p = q.

3.6. példa - Elmélet teljessége, ellentmondásmentessége

Az előző példabeli "elméletünket" vizsgálva megállapíthatjuk, hogy nem teljes, mert az F = { 1 + 1 = 2, 1 + 1 + 1 + 1 = 2 + 2, 1 + 1 ( + 1 ) n = ( 1 + ) n + 2 , n = 1, 2, … } elmélet nem minden kijelentése bizonyítható W-ben (pl. az 1 + 1 + 1 + 1 = 2 + 2 nem). Emiatt "elméletünk" nem is kategórikus. Mivel "hamisnak tartott", azaz F - en kívüli állítás 1 + 1 = 2 - ből (egyetlen axiómánkból) nem vezethető le ( ugyanis minden belőle levezethető "állítás" vagy maga az 1 + 1 = 2 lesz, vagy 1 + 1 ( + 1 ) n = ( 1 + ) n + 2 alakú lesz, ahol n tetszőleges természetes szám), "elméletünk" ellentmondásmentes. Végül, lévén csak egyetlen axiómánk, "elméletünk" nyilvánvalóan minimális. ★


Végül megjegyezzük, hogy lehetett volna a formális rendszer és a belőle származtatott különféle speciális formális rendszer típusok fogalmának kialakításakor a közvetlen levezethetőséget és a levezethetőséget másképp is definiálni. Erre az egyik legnevezetesebb példa a Post-féle normál rendszer.

A Post-féle normál rendszer (hasonlóképp a generatív rendszerhez) egy olyan V ábécéből, Ax axiómarendszerből és H helyettesítési szabályokból felépülő W = ( V, Ax , H ) hármas ( Ax itt is nem üres és véges részhalmaza V*-nak, továbbá H ezesetben is nem üres és véges részhalmaza V* × V*-nak), melyben H elemei pa → aq alakúak, aholis a ∈ V egy olyan betű, mely sem p-ben, sem q-ban nem fordul elő. Akkor mondjuk, hogy a V*-beli p1 szóból a V*-beli q1 szó közvetlenül levezethető (jelekben, mint korábban : p1W q1, vagy ha nem vezet félreértéshez, egyszerűen csak p1q1 ), ha található olyan V-beli a betű, továbbá találhatók olyan ( V ∖ { a } )*-beli p, q, r szavak, hogy p1 = pr , q1 = rq, és pa → aq ∈ H. Ezenkívül, mint korábban, azt mondjuk, hogy p - ből a q levezethető W-ben, jelekben: pW* q, vagy ha nem vezet féreértéshez, W elhagyásával: p* q ha léteznek olyan p0 , p1, … , pkV* szavak, hogy p0 = p , pk = q és piW pi+1 ( i = 0, …, k-1 ). Emellett, amint szokásos, itt is megállapodunk abban, hogy minden p ∈ V* szóra pW* p fennáll. (Másként mondva, a levezethetőség mint V* feletti reláció, ezesetben is reflexív és tranzitív lezárása a közvetlen levezethetőségnek.) Ugyanúgy mint a generatív rendszer esetén, a Post-féle normál rendszerhez is szokás tekinteni az Lg ( W ) = { pV* | ∃ s  ∈ Ax : sW* p } halmazt, amit a W Post-féle normál rendszer által generált nyelvnek hívunk. Természetesen mint a generatív rendszerből "képzett" analitikus rendszer esetén, itt is lehet tekinteni az La ( W ) = { pV* | ∃ s  ∈ Ax : pW* s } halmazt mint a W által elfogadott nyelvet. (Emlékeztetőül: szerkezetileg a generatív rendszer ugyanaz mint az analitikus rendszer, csak a hozzájuk rendelt nyelvek szerkezete más.)

A Post-féle normál rendszer fogalmának kis módosításával jutunk el a Post-féle tag (tag [ejtsd: teg] = toldalék, vmit vmihez hozzáfűző eszköz vége) rendszer fogalmához. A Post-féle tag rendszer egy olyan W = ( V, s , H ) hármas, ahol V egy ábécé, H helyettesítési szabályok egy halmaza (azaz V* × V* egy nem üres és véges részhalmaza), s pedig egy tetszőleges, rögzített eleme V*-nak. Erre az s elemre a startszó elnevezés használatos. Akkor mondjuk, hogy a V*-beli p szóból az ugyancsak V*-beli q szó közvetlenül (vagy egy lépésben) levezethető W-ben, jelekben: pW q, vagy ha nem vezet félreértéshez, W elhagyásával pq, ha léteznek olyan p1 , q1, rV* szavak, hogy p = p1 r, q = rq1 és ( p1 , q1 ) ∈ H. (Természetesen megengedett, hogy az r az üresszó legyen.) A levezethetőségre (is) ugyanazt a jelölést használjuk mint korábban, továbbá a levezethetőség mint V* feletti reláció, ezesetben is reflexív és tranzitív lezárása a közvetlen levezethetőségnek. Ugyancsak összhangban az előzőekkel, a W által generált nyelv: Lg ( W ) = { pV* | sW* p. } Definiálhatjuk a W által elfogadott nyelvet is: La ( W ) = { pV* | pW* s}.

Markov-féle normál algoritmus

Az algoritmus intiutív fogalmát körülbelül a következőképp szokás megfogalmazni: A fegyelmezett, egyértelműen előírt elemi lépésekből egyértelműen felépíthető olyan feladatmegoldás modellje, melynek eredménye végrehajtójától függetlenül ugyanazon feladatokra akárhányszor is megismételve ugyanazon eredményt szolgáltatja. Segítségével egy adott feladatosztály minden feladata véges számú lépésben megoldható. (A legáltalánosabb értelemben természetesen egy algoritmus bármilyen emberi vagy nem emberi tevékenységre vonatkozhat, nemcsak matematikai avagy számítástechnikai feladatok megoldására.)

Fontos tulajdonságai közé tartozik tehát a függetlenség, ami azt jelenti, hogy ugyanazon feladatra ugyanaz az eredménye függetlenül attól hogy ki (vagy mi) a végrehajtója, az egyértelműség, ami azt jelenti, hogy ugyanazon feladatra akárhányszor is alkalmazzuk az algoritmust, mindig ugyanazt az eredményt szolgáltatja, az elemi lépésekre bonthatóság, ahol persze ezen elemi lépések, továbbá ezen lépések sorrendje is egyértelműen meg van határozva, valamint a végesség, vagyis az, hogy a feladatosztály minden egyes feladatára mindig véges sok lépésben befejeződik. Amennyiben a véges lépésben történő befejeződés követelményétől eltekintünk, az eljárás fogalmához jutunk. Ezen és ehhez hasonló intiutív megfogalmazások után születtek meg a 30-as évek második felétől a különféle matematikailag is precíz algoritmusfogalmak (tulajdonképpen szigorúan tekintve eljárásfogalmak), melyek közös érdekessége, hogy ekvivalensek. Ez azt jelenti, hogy ha egy algoritmust az egyik algoritmusfogalom segítségével megadtuk, akkor ugyanez az algoritmus a másik algoritmusfogalom segítségével is megadható. Ezen fogalmak egyike a Markov-féle normál algoritmus.

Egy W = ( V, H ) formális rendszert (Markov-féle) normál algoritmusnak nevezünk, ha H rendezett halmaz és ki van tüntetve benne egy H1 részhalmaz (megengedve, hogy esetleg H1 = ∅, azaz üres halmaz legyen). A H1 elemeit záróhelyettesítéseknek hívjuk és p → qH1 esetén használni fogjuk a p → . q jelölést is. Egy ilyen normál algoritmust W = ( V, H , H1 ) alakban adunk meg, ahol a H = { p1q1, … , p m → q m } megadás, azaz H elemeinek felsorolása feltételezésünk szerint egyben a H - beli rendezést is mutatja. Legyen p ∈ V * . Azt mondjuk, hogy a p szóra a W = ( V, H , H1 ) algoritmus alkalmazható, ha van olyan 1 és m közötti i ( 1 ≤ i ≤  m ) index és olyan p ', p '' ∈ V * szópár, hogy p = p ' pi p '' . Legyen i a legkisebb ilyen index és válasszuk meg a p szó p ' kezdőszeletét úgy, hogy pi a p ' pi szóban rész-szóként csak egyszer forduljon elő. Rendeljük hozzá p - hez a q = p ' qi p '' szót és ezt a hozzárendelést jelöljük a következőképpen: legyen pW q ha piqiH 1 és legyen pW . q ha piqiH 1 . E hozzárendelést, mely a formális rendszer fogalmánál bevezetett közvetlen levezethetőség fogalmának a H - beli rendezést is figyelembe vevő módosítása, elemi helyettesítésnek szokás nevezni. (Az elemi helyettesítés nem tévesztendő össze a helyettesítéssel, azaz a helyettesítési szabályok halmazának egy elemével.) pW . q esetén elemi záróhelyettesítésről beszélünk.

Ha záróhelyettesítést hajtottunk végre az algoritmus megáll, egyébként az algoritmus helyettesítő lépése újra lefut az imént kapott szóra. Az algoritmus tehát mindaddig fut, amíg vagy záróhelyettesítés be nem következik, vagy nincs alkalmazható helyettesítési szabálya. Itt térünk ki arra, hogy a Markov-féle normál algoritmus a szó eredeti értelmében nem algoritmus, hanem eljárás, mivel - ahogy majd példát is mutatunk rá- nem feltétlenül fejeződik be, tehát a végesség feltétele nem teljesül.

3.7. példa - Elemi helyettesítés

Vegyük a W = ( { a, b , e, i, k , o, r, s , t, ú, z } , { szoba → kerti , bab → szob }, { szoba → kerti } ) normál algoritmust és a bababútor szót. Az i = 2, hiszen a második szabály alkalmazható rá. Vigyázni kell viszont, hisz a bab szó rész-szóként kétszer is előfordul. p ' thehát nem ba lesz (mert ekkor p ' p1 = babab, aminek első három és utolsó három betűje is a bab szót alkotja ). Így p ' = λ, azaz az üresszó. Ennek megfelelően a bababútor W szobabútor W. kertibútor levezetéshez jutunk. Itt a bababútor W szobabútor egy elemi helyettesítés, szobabútor W . kertibútor pedig egy elemi záróhelyettesítés. Igaz, hogy a szobabútor szóban is benne van a bab rész-szó, de mindig az első olyan szabályt kell alkalmazni, amit lehet. Emiatt a szobabútor szó után a kertibútor szó következik, nem a szoszobútor. ★


Azt mondjuk, hogy a p ∈ V * szóból kiindulva egy q ∈ V * szó eleme a W algoritmus levezetési láncának, ha teljesülnek az alábbi feltételek: q = p, vagy

(i) W alkalmazható p - re és

(ii) léteznek olyan r0, … , rkV * szavak, hogy r0 = p, rk = q, riW ri+1 ( i = 0, …, k-1 ), ahol az r0W … ⇒W rk-1 lánc nem tartalmaz záróhelyettesítést.

Azt mondjuk, hogy a p ∈ V * szóra egy q ∈ V * szó a W algoritmus eredménye (jelekben: pW* q ), ha q eleme a W p - ből induló ( p = r0, … , rk = q ) levezetési láncának és vagy rk-1W . rk, vagy pedig rk-1W rk, és W az rk ( = q ) szóra már nem alkalmazható.

Emellett megállapodás, hogy ha W a p szóra nem alkalmazható, akkor pW* p .

Ha pW* q, akkor szokás mondani, hogy q a p szóval megadott adatsorozaton a W normál algoritmussal végrehajtott számítás eredménye. Eszerint, egy W = ( V, H , H1 ) normál algoritmus esetén egy p ∈ V * (input) szóra a következő esetek állhatnak fenn:

(I) W a p - re nem alkalmazható. Ekkor a W - vel p - n végzett számítás eredményének magát a p adatot tekintik.

(II) p - ből kiindulva létezik záróhelyettesítéssel vegződő (azaz pW r1, r1W r2, …, rk-2W rk-1, rk-1W . rk alakú), vagy tovább nem folytatható helyettesítési lánc. (Ez utóbbi azt jelenti tehát, hogy a pW r1, r1W r2, …, rk-1W rk láncban rk - ra W már nem alkalmazható.) Ekkor a p adaton a W - vel végzett számítás eredménye az rk = q szó.

(III) p - ből olyan helyettesítési lánc indul ki, mely soha nem fejeződik be. Ilyenkor azt mondjuk, hogy W a p - re nem áll meg, W a p adatból eredményt nem szolgáltat.

3.8. példa - Unáris számok összeadása

Tekintsük a W = ( { 1, + }, { 1 + → + 1, + +  → +, + → λ }, { + → λ } ) normál algoritmust (ahol λ az üresszót jelöli). Ekkor 1 + 1 + 1 + 1 ⇒ W + 11 + 1 + 1 ⇒ W + 1 + 11 + 1 ⇒ W + + 111 + 1 ⇒ W + + 11 + 11 ⇒ W + + 1 + 111 ⇒ W + + + 1111 ⇒ W + + 1111 ⇒ W + 1111 ⇒ W . 1111 .


Vegyük észre, hogy általában is, 1 m + 1 nW* 1m + n , vagyis a példabeli algoritmus az "egyes számrendszerben" való "összeadás" algoritmusa. Ahány 1 - est "adunk össze", annyi 1 - esből álló sorozatot kapunk a végén záróhelyettesítéssel. Nincs alkalmazható szabálya az algoritmusnak például a 11 szóra. Ekkor eredménynek a korábbi definícióval összhangban magát a 11 - t tekintjük. ★

3.9. példa - Végtelen helyettesítési lánc

Egészítsük ki az előbbi példát az 1 → 11 szabállyal, méghozzá úgy, hogy ez legyen az első szabályunk. Az így kapott újabb W = ( { 1, + }, { 1 → 11, 1 + → + 1, + +  → +, + → λ }, { + → λ } ) algoritmus már nem fog befejeződni az 1 + 1 + 1 + 1 szóra (és sok más szóra sem): 1 + 1 + 1 + 1 ⇒ W 11 + 1 + 1 + 1 ⇒ W 111 + 1 + 1 + 1 ⇒ W 1111 + 1 + 1 + 1 ⇒ W 11111 + 1 + 1 + 1 … A módosított algoritmus tehát az 1 + 1 + 1 + 1 szóra nem áll meg, eredményt nem szolgáltat. ★


3.10. példa - Unáris számok szorzása

Adjon meg olyan Markov algoritmust, amely az 1m*1n bemenetre 1mn kimenettel áll meg!

Megoldás:

W=({1,*,a,b},H,H1), ahol H a következő:

1. *11 → a*1, 2. *1 → a, 3. 1a  → a1b, 4. ba → ab,

5. b1 →  1b, 6. a1 → a, 7. ab → b, 8. b → 1. H1=∅. ★


3.11. példa - Feladat - Legnagyobb közös osztó előállítása

Legyen W = ( { a , b, c, d , e, & }, { acca, a & a  → c & , a & → & d , da , ce , ea, & → λ }, ∅ ) (azaz H1 ebben a feladatban is üres halmaz) normál algoritmus. Bizonyítsuk be, hogy tetszőleges i, j pozitív egész számpárra a i & a j W a k, ahol k a legnagyobb közös osztója i - nek és j - nek. ★


3.12. példa - Bináris szó rendezése

Adjon meg olyan Markov algoritmust, amely egy bemenő bináris szó esetén
annyi 1-est, majd annyi 0-ást ír, amennyi a bemenő szóban van!
Például: 001011011 bemenetre 111110000 szót adja eredményül.

Megoldás:

Egyik lehetséges megoldás a következő:

W=({0,1},{01 10}, ∅ ). Az algoritmus a buborékrendezést valósítja meg. Ugyanez a példa három számjegy esetén: W=({0,1,2},{01 10, 02 →  20, 12 →  21}, ∅ ). ★


3.13. példa - Bináris szó tükrözése

Adjon meg olyan Markov algoritmust, amely egy bemenő bináris szó tükörképét adja eredményül!
Például: 0110011 bemenetre 1100110 végeredményt ad.

Megoldás: Egy lehetséges algoritmus a következő: W=({0,1,X,Y,U,V,Z},H,H1),
ahol H elemei:
1. Y0 → 0Y, 2. Y1 →  1Y, 3. Y → Z, 4. UZ → Z0, 5. VZ → Z1,
6. U0 → 0U, 7. U1 → 1U, 8. V0 → 0V, 9. V1 → 1V, 10. X0 → XU,
11. X1 → XV, 12. XZ → λ, 13. λ → XY.
H1={XZ → λ}.
Az algoritmus a következőképpen működik:

  1. A bemenő szó elejére írja XY-t.

  2. Y-t elvisszük a szó végére és átírjuk Z-re.

  3. Ha az X utáni első számjegy 1, akkor V-t írunk helyette.

  4. Ha az X utáni első számjegy 0, akkor U-t írunk helyette.

  5. U-t vagy V-t elvisszük a szó végére.

  6. Ha a Z elé U kerül, akkor 0-t írunk Z után, és ha van még szám X és Z közt, akkor vissza a 3-as pontra.

  7. Ha a Z elé V kerül, akkor 1-t írunk Z után, és ha van még szám X és Z közt, akkor vissza a 3-as pontra.

  8. XZ törlése.


3.14. példa - Bináris szó megegyező végeinek törlése

Adjon meg olyan Markov algoritmust, amely egy bemenő bináris szó első és utolsó karakterét
addig törli, ameddig azok megegyeznek!
Például: 10110001 esetén a kimenet 1100.

Megoldás: Egy algoritmus lehet ez: W=({0,1,X,Y,U,V,W},H,H1), ahol H elemei:
1. 0Y → Y0, 2. 1Y  → Y1, 3. 0W → W0, 4. 1W → W1, 5. XY0 → X,
6. XY1 → X, 7. XW0 → 0, 8. XW1 → 1, 9. U0 → 0U, 10. U1 → 1U,
11. V0 → 0V, 12. V1 → 1V, 13. 0U → Y, 14. 1U → W1, 15. 1V → Y,
16. 0V → W0, 17. X1 → X1W, 18. X0 → X0U, 19. λ → X
H1={XW0 → 0, XW1 → 1 }.
Az algoritmus a következőképpen működik:

  1. A bemenő szó elejére ír egy X-et.

  2. Ha az első számjegy 0, akkor U-t írunk utána.

  3. Ha az első számjegy 1, akkor V-t írunk utána.

  4. U-t vagy V-t elvisszük a szó végére.

  5. Ha az utolsó jegy 0 és U került mellé, vagy ha 1 és V, akkor ezek helyére Y-t írunk.

  6. Ha az utolsó jegy 1 és U került mellé, vagy ha 0 és V, akkor ezek helyére W-t írunk és visszaírjuk az utolsó jegyet.

  7. Y-t vagy W-t az elejére visszük.

  8. Ha az X után Y kerül, akkor az Y-t és az első számjegyet töröljük, és vissza a 2. lépésre.

  9. Ha az X után W kerül akkor töröljük XW-t és megállunk.


3.15. példa - Bináris szám növelése 1-gyel

Adjon meg olyan Markov algoritmust, amely egy bemenő bináris szám esetén
eggyel nagyobb bináris számot szolgáltat eredményül!

Megoldás: W=({0,1,X,Y},H,H1), ahol H elemei:
1. X1 → 1X, 2. X0 → 0X, 3. X → Y, 4. 0Y → 1,
5. 1Y → Y0, 6. Y → 1, 7. 1 → X1.
H1={0Y → 1, Y → 1}.
Az algoritmus működése:

  1. A szó elejére X-et írunk.

  2. X-et a szó végére visszük és Y-ra cseréljük.

  3. Y előtt 0 van, 1-esre írjuk és kész vagyunk.

  4. Y előtt 1 van, 0-ra írjuk és Y-t írunk elé. Vissza a 3-as pontra.

  5. Ha Y előtt nincs semmi, akkor 1-esre írjuk át.


3.16. példa - Unáris szám bináris alakja

Adjon meg olyan Markov algoritmust, amely 1n bemenetre az n szám bináris alakját adja eredményül!

Megoldás:W=({0,1,X,Y},H,H1), ahol H elemei:
 1. 0Y → 1, 2. 1Y → Y0, 3. Y → 1, 4. X1 → YX, 5. X → λ,
 6. λ → 0X
 H1={X → λ}
 Az algoritmus lépései:

  1. Az 1-esek elé 0X-et ír.

  2. X1-et YX-re cseréli.

  3. Y előtti bináris számot növeli eggyel és Y-t törli.

  4. Ha van X után 1-es vissza 2-es pontra.

  5. Törli X-et.


3.17. példa - Bináris szám csökkentése 1-gyel

Adjon meg olyan Markov algoritmust, amely egy bemenő bináris szám esetén
eggyel kisebb bináris számot ad eredményül!

Megoldás: W=({0,1,X,Y},H,H1), ahol H elemei:
1. X1 → 1X, 2. X0 → 0X, 3. X → Y, 4. 1Y → 0,
5. 0Y → Y1, 6. Y → λ, 7. λ → X, és a záróhelyettesítés:
H1={Y → λ}.
Az algoritmus működése:

  1. A szó elejére X-et írunk.

  2. X-et a szó végére visszük és Y-ra cseréljük.

  3. Y előtt 1 van, 0-ra írjuk és kész vagyunk.

  4. Y előtt 0 van, 1-re írjuk, és Y-t írunk elé.

  5. Ha Y előtt nincs semmi, akkor töröljük Y-t, és kész vagyunk.


3.18. példa - Bináris szám unáris alakja

Adjon meg olyan Markov algoritmust, amely egy bemenő bináris szám unáris alakját adja vissza!

Megoldás:W=({0,1,X,Y,Z,V},H,H1), ahol H elemei:
1. X1 → 1X, 2. X0 → 0X, 3. X → Y, 4. 1Y → 0Y1, 5. 0Y → Z1V1, 6. 0Z → Z1,
7. 1Z → λ, 8. Z → λ, 9. V → Y, 10. Y → λ, 11. λ → X, és
H1={Y → λ }  záróhelyettesítés.
Az algoritmus lépései:

  1. A szó elé X-et ír.

  2. X-et a végére viszi és Y-ra cseréli.

  3. Y előtti bináris számot csökkenti, utáni unárist növeli eggyel.

  4. Ha van Y előtt számjegy, akkor vissza 2-ra.

  5. Törli Y-t.

(A feladatot úgy is meg lehetett volna oldani, hogy a bináris szóból balról jobbra haladva törlünk egy elemet, majd egy elszeparáló szimbólum után lévő 1-eseket duplázzuk, és a törölt elemtől függően vagy adunk hozzá egyet vagy nem, amíg a bináris szám el nem fogy.) ★


Amint láttuk a formális rendszereket algoritusok megadására is használhatjuk, ha egyértelműen megadjuk hogy adott lépésben melyik szabályt és hol kell alkalmazni. Ezzel szemben a generatív rendszerek teljesen nemdeterminisztikusak, általában nem csak az telejsül, hogy több alkalmazható szabály közül választunk, de az alkalmazás helye is lehet többféle. A következő fejezetben a generatív rendszerekből származtatott generatív nyelvtan fogalmát ismertetjük, mely e jegyzet egyik legfontosabb központi fogalma.

Generatív nyelvtan, Chomsky-féle nyelvosztályok

Egy W=(V, Ax, H) generatív rendszerből úgy kapunk generatív nyelvtant, ha a V ábécét felbontjuk közös elemet nem tartalmazó nem üres (és V végessége miatt véges) N és T részhalmazokra ( V=NT, NT=∅, N≠∅, T≠∅), az Ax pedig egyetlen, egybetűs, N- beli (általában S- el jelölt) elemből áll, s minden H- beli szabály baloldala legalább egy N- beli betűt tartalmaz. Formálisan tehát a generatív grammatika (vagy generatív nyelvan) definíciója:

1. Definíció. A G=(N, T, S, H) rendezett négyest generatív nyelvtannak (vagy generatív grammatikának) nevezzük, ha N és T diszjunkt véges ábécék, SN, H⊂(NT)*N(NT)*×(NT)*. Az N elemeit nemterminális jeleknek vagy változó szimbólumoknak nevezzük, és általában nagybetűkkel (S, A, B, C, …) jelöljük. A T elemeit terminális jeleknek, vagy konstansoknak nevezzük, és általában kisbetűkkel (a, b, c, …) jelöljük. A H elemeit képező (p, q) rendezett párokat (mint korábban is) helyettesítési szabályoknak nevezzük, és általában p → q alakban írjuk. Az S egy kitüntetett nemterminális jel, amely a G nyelvtanban a generálás kiinduló vagy kezdő eleme, másnéven mondatszimbóluma (startszava). ★

Most definiáljuk, hogy hogyan állítunk elő egy nyelvet egy generatív nyelvtan segítségével, először most is (közvetlen) levezethetőséget kell definiálnunk, ez tulajdonképpen megegyezik a generatív rendszerekben meghatározott azonos fogalmakkal:

2. Definíció. Egy G generatív nyelvtanban az r∈(NT)* szóból egy lépésben, vagy közvetlenül levezethető a t∈(NT)* szó, ha van olyan p → q helyettesítési szabály a H- ban és p1, p2∈(NT)* úgy, hogy r=p1pp2 és t=p1qp2. Jelölés: rGt, vagy ha egyértelműen meghatározható a G, akkor rt.

Egy G generatív nyelvtanban az r szóból levezethető a t szó, ha van olyan r0, r1, …, rn véges szósorozat a (NT)*- ban, amelyre teljesül, hogy r0=r, rn=t és riri+1 (i=0, 1, …, n-1). Ezt a relációt r*t- vel jelöljük. Megegyezés szerint minden r∈(NT)* szóra r*r teljesül.

A G=(N, T, S, H) generatív nyelvtan által generált nyelven a T*- beli szavak következő halmazát értjük: L(G)={w|S*w, wT*}. ★

Úgy is mondhattuk volna, hogy L(G)=Lg(G)∩T*, ahol Lg(G) a G mint generatív rendszer, pontosabban a (V, {S}, H) generatív rendszer által generált nyelvet jelöli. (Tehát vigyázat: Nem tévesztendő össze a G generatív nyelvtan és a G mint generatív rendszer által generált nyelv, hiszen L(G)⊆Lg(G), vagyis a két nyelv nem esik egybe: SLg(G), de SL(G) !) Lg(G) elemeit, vagyis azon (NT) feletti szavakat amelyek az S modatszimbólumból levezethetőek, mondatformáknak, N* elemeit nemterminális szavaknak, T* elemeit pedig terminális szavaknak, vagy a nyelvtani analógia miatt mondatoknak is hívjuk. Egy adott nyelvtan esetén a levezetés során mondatformák szereplenek, így a levezetett terminális szót sokszor egyszerűen csak levezetett szónak fogjuk hívni (amennyiben ez nem zavaró).

Chomsky nyelvészként a természetes nyelvek leírását szerette volna elérni generatív nyelvtanok segítségével, így a fogalom megfelel annak, hogy a változók a nyelvi fogalmak (ige, főnév, stb.), a konstansok pedig a szótári szavak elemeinek absztrakciói. Habár a természetes nyelvek teljes formális leírása ilyen formán a mai napig nem született meg, a generatív nyelvtanok szerepe igen fontossá vált a mesterséges nyelvek, így a számítógépek fejlődésével, pl. a programnyelvek formális leírásakor.

Első példánkban kezdetleges számítógépes nyelvészeti leírással próbálkozunk.

3.19. példa - Generatív nyelvtan természetes nyelv "leírására"

Legyen G=(N, T, S, H), ahol N={S, (ige), (főnév), (melléknév)}, T={ magyar ábécé betűi }, H={S → (ige), (ige) → (főnév)(ige), (főnév) → (melléknév)(főnév), (melléknév)  → az (melléknév), (ige) → tanul, (főnév) → diák, (melléknév) → engedelmes}.


Tekintsük a következő levezetést.

S⇒(ige)⇒(főnév)(ige)⇒(melléknév)(főnév)(ige)⇒az (melléknév)(főnév)(ige)

az engedelmes (főnév)(ige)⇒az engedelmes diák (ige)⇒az engedelmes diák tanul.

Ugyanígy levezethető "nyelvtanunkkal" például: az az engedelmes diák tanul, stb. ★

A generatív nyelvtan persze nemcsak nyelvtani elemzésre alkalmas eszköz. Mint a következő (M. Soittola -tól, illetve M. Penttonen-től származó) példák is mutatják, segítségével elő tudjuk állítani az összes négyzetszámot, illetve a prímszámokat.

3.20. példa - Unáris négyzetszámok

G=({S, X, Y, Z, X1, X2, Y1, Y2}, {a}, S, {Sa, SaXX2Z, X2Zaa, Xaaa, Yaaa, X2ZY1YXZ, XX1X1YX, YX1Y1YX, XY1X1Y, YY1Y1Y, aX1aXXYX2, X2YXY2, Y2YYY2, Y2XYX2}.


Az összes négyzetszámot a következőképp állíthatjuk elő:

Először bizonyítsuk be hogy a generált terminális szavak hossza eleme lesz az 1, 1+3, 1+3+5, …, 1+3+…+(2n-1), … sorozatnak:

Csoportosítsuk a szabályokat az alábbi módon.

(1) S → a, SaXX2Z,

(2) X2Zaa,

(3) Xaaa, Yaaa,

(4) X2ZY1YXZ,

(5) XX1X1YX, YX1Y1YX,

(6) XY1X1Y, YY1Y1Y,

(7) aX1aXXYX2,

(8) X2YXY2, Y2YYY2, Y2XYX2.

A továbbiakban (1)-(8) a megfelelő csoport valamelyik szabályát jelöli. (1) (mely a mondatszimbólumból kiinduló szabályokat mutatja) az a és aXX2Z szavak valamelyikét eredményezi. Tekintsünk a pi=aXqiX2Z, qi∈{X, Y}* szóból terminális szavakhoz vezető levezetéseket. Először csak (2) vagy (4) alkalmazható. Ha (2) került alkalmazásra, akkor a folytatás egyedüli módja (3) alkalmazása egész addig, míg egy 1+3+|qi| hosszú terminális szót nem kapunk. (Mivel a terminális ábécé egy betűből áll, minden szó meg van határozva a hossza által.) Ha (4) kerül alkalmazásra, az aXqiY1YXZ szót kapjuk. A folytatás egyedüli módja az "1" index balra léptetése (5)- el és (6) egész addig, amíg (7) alkalmazhatóvá válik. (7) alkalmazása után egy aXXYX2q'iYYXZ szóhoz jutunk, ahol q'i- t úgy kapjuk qi- ból, hogy X minden előfordulásakor Y- t írunk. A "2" index jobbra léptetésének egyedüli lehetősége a (8), mely a Pi+1=aXQi+1X2Z, Qi+1=XYQ'iYY szavakhoz vezet. (Megjegyezzük, hogy (8) eleget tesz a "2" index jobbra léptetési követelményének, hisz X2XXX2 nem szükséges, mivel nem fordul elő két egymást követő X.) Egy, a kiinduló pi szavunkkal megegyező formájú szóhoz jutottunk, s kezdődhet egy új ciklus (2) vagy (4) alkalmazásával. Következésképp, |qi+1|=|qi|+qi[X]+5, ahol qi[X] jelöli az X betű előfordulásainak számát qi- ben. Mivel világos, hogy qi+1[X]=qi[X]+2, kapjuk, hogy a generált terminális szavak hosszai elemei az 1, 1+3, 1+3+5, …, 1+3+…+(2n-1), … sorozatnak.

Másrészt könnyen igazolható, és közismert, hogy n2=1+3+…+(2n-1)(n=1, 2, …). Így L(G)={an2|n=1, 2, …}. ★

3.21. példa - Unáris prímszámok

G=({S, A, B, C, D, E, X1, X2, X3, YA, YB, Y1, Y2, Y3, Y4, Y5, Y6, Y7, Y8, Y9}, {a}, S, {Sa2, S  → a3, Sa5, S  → a7, SY1A6X3, Y1Y1A2, Y1A3X1A3X2, iAX2ADY2YiE, iDY2DY2i, X1DY2X1BY3, Y3iiY3, Y3YiEYiY3E, Y3EiiY3E, Y3EX3Y4CX3, iY4Y4i, YiY4  → iX2, (i∈{A, B}), X1BX1Y5, Y5BBY5, Y5X2AY6X2A, BY6Y6A, XY6X1A, CX3Y7X3, CY7Y7A, BAjX2Y7Y8Aj+1X2, (j∈{0, 1, 2}), A4X2Y7Y8A4X2, AY8Y8A, BY8Y8A, X1Y8  → X1A, X2X3  → Y9a, AY9Y9a, X1Y9  → aa}). Igazolható hogy L(G)={ap|p -prímszám}.


Az összes prímszámot a következőképp állíthatjuk elő: Csoportosítsuk a szabályokat a következő módon.

(1) Sa2, S  → a3, S  → a5, S  → a7,

(2) SY1A6X3, Y1Y1A2, Y1A3X1A3X2,

(3) iAX2ADY2YiE, iDY2DY2i, X1DY2X1BY3, Y3iiY3, Y3YiEYiY3E, Y3EiiY3E, Y3EX3Y4CX3, iY4Y4i, YiY4  → iX2, i∈{A, B},

(4) X1BX1Y5, Y5BBY5, Y5X2AY6X2A, BY6Y6A, XY6X1A,

(5) CX3Y7X3, CY7Y7A, BAjX2Y7Y8Aj+1X2, A4X2Y7Y8A4X2, AY8Y8A, BY8Y8A, X1Y8  → X1A, j∈{0, 1, 2}

(6) X2X3  → Y9a, AY9Y9a, X1Y9  → aa.

Az (1)- beli szabályok generálják minden 10 alatti prím n- re az an alakú terminális szavakat. A (2)- beli szabályok generálják minden 9- nél nem kisebb n- re az X1A3X2An-6X3 alakú szavakat. A (3)-(5) szabályok tesztelik, hogy n osztható-e 3- al, s ha nem, akkor eljutunk az X1A4X2An-7X3 szóhoz. Ezután következik a 4- el oszthatóság tesztje. Negatív eredmény esetén X2 egyet lép jobbra. A pozitív válasz olyan levezetést eredményez, mely nem vezet terminális szóhoz. Ha az oszthatósági teszt eredménytelen, eljutunk az X1An-3X2X3 szóhoz, s (6) válik alkalmazhatóvá, mely elvezet an- hez. A részletesebb bizonyítást mellőzzük. ★

A generatív nyelvtan duális fogalma az analitikus nyelvtan, amit a generatív nyelvtanhoz hasonlóan, G=(N, T, S, H) alakban adunk meg, benne N a változó(szimbólumo)k, vagy még más néven, a nemterminálisok halmaza, T a konstansok vagy terminálisok halmaza, S a mondatszimbólum, H pedig (mint korábban) a szabályok halmaza. E fogalomnál is használjuk a V=NT jelölést , N* elemeit nemterminális szavaknak, T* elemeit pedig terminális szavaknak, vagy a nyelvtani analógia miatt mondatoknak hívjuk (ugyanúgy mint a generatív nyelvtannál). Szemben a generatív nyelvtannal, itt azt tételezzük fel, hogy minden H- beli szabály jobboldala legalább egy N- beli betűt tartalmaz. A G analitikus nyelvtan által acceptált, vagy elfogadott, vagy még más néven, felismert nyelven a T*- beli szavak következő halmazát értjük: L(G)={wT*|wG*S}. Itt is mondhattuk volna, hogy L(G)=La(G)∩T*, ahol La(G) a G mint analitikus rendszer, pontosabban az (NT, {S}, H) analitikus rendszer által felismert nyelvet jelöli. (Tehát vigyázat: Hasonlóan a generatív változatokhoz, nem tévesztendő össze a G analitikus nyelvtan és a G mint analitikus rendszer által felismert nyelv, hiszen L(G)⊊La(G), vagyis a két nyelv soha nem esik egybe!)

Érvényes a következő tétel, melynek bizonyítását az olvasóra bízzuk.

1. Tétel. Tekintsünk egy tetszőleges G=(N, T, S, H) tetszőleges generatív (analitikus) nyelvtant. Alkossuk meg hozzá az összes olyan q → p szabályok H ' halmazát, melyekre p → qH. Ekkor a G '=(N, T, S, H ') analitikus (generatív) nyelvtanra L(G ')=L(G).

3.22. példa - Gyakorló feladat

Az 1. Tétel. felhasználásával, továbbá az előző két példa segítségével készítsünk analitikus nyelvtanokat, melyek által felismert nyelvek L(G)={an2|n=1, 2, …}, illetve L(G)={ap|p - prímszám }. ★


A 1. Tétel. alapján minden (generatív vagy analitikus) nyelvtan befoglalható egy vele ekvivalens duális nyelvtannal alkotott párba. (Nevezetesen, minden generatív nyelvtanhoz tartozik egy vele ekvivalens analitikus nyelvtan, s megfordítva, minden analitikus nyelvtanhoz tartozik egy vele ekvivalens generatív nyelvtan.) A továbbiakban a "nyelvtan" elnevezést fenntartjuk a "generatív nyelvtan" elnevezés rövidítésére. Nyelvtan alatt tehát mindig generatív nyelvtant fogunk érteni (míg analitikus nyelvtan esetén mindig kitesszük az "analitikus" jelzőt).

Chomsky-féle nyelvosztályok

A nyelvtan és az általa generált nyelv definíciója szerint minden nyelvtanhoz egy egyértelműen meghatározott nyelv tartozik, de megfordítva, egy nyelvet nem csak egy nyelvtannal generálhatunk.

Két nyelvtant (gyengén) ekvivalensnek nevezünk, ha ugyanazt a nyelvet generálják, vagy az általuk generált nyelv legfeljebb az üresszóban tér el. Tehát, formálisan, G1 és G2 (gyengén) ekvivalens, ha L(G1)∖{λ}=L(G2)∖{λ}.

Az ekvivalencia fogalmának ismeretében kézenfekvőnek látszik a különböző nyelvtanokat bizonyos formai tulajdonságok alapján osztályokba sorolni. Az osztályozás alapját a helyettesítési szabályok alakjára vonatkozó megszorítások képezik abban a hierarchiában, amelyet az elmélet egyik megalapozója, N. Chomsky vezetett be, és amelyet alább ismertetünk.

3. Definíció. A G=(N, T, S, H)- t i-típusú nyelvtannak (i=0,1,2,3) nevezzük, ha az alábbi megszorítások közül az i- edik teljesül:

(0) Mondatszerkezetű nyelvtan, (Phrase-structure). A generatív nyelvtan korábban már ismertetett általános definíciójánál feltettük, hogy H olyan (NT)*- beli párokból áll, melyek első eleme (azaz a szabály baloldala) tartalmaz legalább egy nemterminálist. H- ra ebben az esetben (azaz i=0 esetén) ezen kívül nem rovunk ki külön feltételt.

(1a) Szóhossznemcsökkentő, vagy monoton nyelvtan, (Monotone). Minden H- beli p → q szabályra |p| ≤ |q| teljesül, vagy S → λ alakú, de ez esetben, vagyis SλH előfordulása esetén S nem lép fel egyetlen H- beli szabály jobboldalán sem.

(1) Környezetfüggő nyelvtan, (Context-Sensitive). Minden H- beli szabály vagy p1Ap2p1qp2 alakú, aholis p1, p2∈(NT)*, AN, q∈(NT)+, (emlékeztetőül: (NT)+=(NT)*∖{λ}) vagy pedig S → λ alakú. Utóbbi esetben, azaz SλH előfordulása esetén S nem lép fel egyetlen H- beli szabály jobboldalán sem.

(2) Környezetfüggetlen nyelvtan, (Context-Free). Minden H- beli szabály A → p alakú, aholis AN, p∈(NT)*.

(2.5) Lineáris nyelvtan, (Linear). Minden H- beli szabály AuBv vagy A → u alakú, ahol A, BN, u, vT*.

(3) Reguláris nyelvtan, (Regular). Minden H- beli szabály vagy A → uB, vagy pedig A → u alakú, ahol A, BN, uT*. ★

A 0-típusú nyelvtanokat mondatszerkezetű nyelvtanoknak is szokás nevezni, utalva azok nyelvészeti eredetére. Az 1a-típusnál a monoton, illetve szóhossznemcsökkentő név önmagáért beszél, itt a levezetés során nem csökkenhet a mondatforma hossza (az egyedüli Sλ lehetséges levezetést kivéve). Az 1-típusúakat környezetfüggőnek nevezzük, az elnevezés itt arra mutat, hogy egy szabály egyetlen A nemterminális helyébe egy nem üresszónak a beírását jelenti, de csak akkor ha a nemterminális közvetlen környezete egy adott p1, p2 szópár. (Természetesen megengedett az is, hogy p1, p2 bármelyike, vagy akár mind a kettő üres legyen.) Üres szavat csakis a mondatszimbólum helyébe tehetünk, s azt is csak egy levezetés legelső lépésében teszi lehetővé az 1-típusú nyelvtan. Ezt biztosítjuk azon megszorítással, hogy ha egy 1-típusú nyelvtanban egy p1Ap2p1qp2 szabályban q=λ csak úgy lehessen, ha A=S, p1=p2=λ (azaz S → λ szabályról van szó). S hogy egy levezetés során az S helyébe csak az első lépésben lehessen üresszót tenni (a többi nemterminálisra ez a lehetőség is ki van zárva), az S → λ szabály előfordulása esetén kizárjuk annak lehetőségét, hogy S szabályok jobboldalán szerepeljen. Utalva arra, hogy a 2-típusú nyelvtanok esetén egy szabály baloldalán álló nemterminális bármilyen környezetben helyettesíthető a szabály jobboldalán álló szóval, ezesetben környezetfüggetlen nyelvtanokról beszélünk. Ez nem áll szemben a környezetfüggéssel, hiszen ott az üresszó, mint környezet is megengedett, mint látni fogjuk inkább arról van szó, hogy a környezetfüggetlen nyelvtanok a környezetfüggőknek speciális esetei. Ha egy 2-típusú nyelvtan minden szabálya legfeljebb egy nemterminálist tartalmaz a jobb oldalán, akkor eljutunk a lineáris grammatika fogalmához. A lineáris nyelvtanok, mint látni fogjuk, a hierarchiában a 2- és a 3-típus között helyezkednek el. Ha egy lineáris nyelvtanban speciálisan az összes AuBv alakú szabályban v=λ, akkor 3-típusú nyelvtanhoz jutunk, amik a jobb-lineáris nyelvtan elnevezést innen kapták. Hasonló módon, ha az összes AuBv alakú szabályban u=λ, akkor bal-lineáris nyelvtanokról beszélünk.

4. Definíció. Egy nyelvről azt mondjuk, hogy mondatszerkezetű (RE) / monoton / környezetfüggő (CS) / környezetfüggetlen (CF) / lineáris (LIN) / jobblineáris / ballineáris / reguláris (REG), ha mondatszerkezetű / monoton / környezetfüggő / környezetfüggetlen / lineáris / jobblineáris / ballineáris / reguláris nyelvtannal generálható. Továbbá az i=0, 1, 2, 3 értékek esetén azt mondjuk, hogy egy nyelv i-típusú, ha van olyan i-típusú nyelvtan, amely azt generálja. ★

Egyszerűen bizonyíthatók a következő tételek.

2. Tétel. Minden G i-típusú (i=0,1,2,3) nyelvtanhoz létezik egy vele ekvivalens G ' i-típusú nyelvtan, amelynek szabályai jobb oldalán a mondatszimbólum nem lép fel.

Bizonyítás. Valóban, ha G=(N, T, S, H) i-típusú nyelvtan, akkor egy ilyen G ' nyelvtant megadhatunk G '=(N∪{S '}, T, S ', H ') alakban, ahol S '∉N és H '=H∪{S '  → p|SpH}. ∎

3. Tétel. Ha az L nyelv i-típusú, akkor L∪{λ} is.

Bizonyítás. Legyen G=(N, T, S, H) egy i-típusú nyelvtan melyre L=L(G) és melyben az előző tétel értelmében a mondatszimbólum nem fordul elő egyik szabály jobboldalán sem. Ha L tartalmazza az üresszót, L∪{λ}=L i-típusú volta automatikusan teljesül. Ha nem tartalmazza, akkor tekintsünk egy G ' nyelvtant, ahol G '=(N, T, S, H ') és H '=H∪{S  → λ}. Ekkor a G ' i-típusú nyelvtan generálja L∪{λ}-t. ∎

3.23. példa - Grammatikák főbb típusai 1. példa


Az alábbi szabályok hányas típusú grammatika elemei lehetnek, ha a kisbetűk terminálist,
a nagybetűk nemterminálist jelölnek?


A → B
3-as típusú: ez a szabály X → xY alakú, A=XN és x=λT*, és Y=BN.
2-es típusú: X → p alakú, X=ANp=BV*.
1-es típusú: P1PP2 →  P1QP2 alakú, ahol P1=P2V*, P=AN, Q=BV+
0-ás típusú, ahol a szabályokra nincs megkötés azon túl, hogy minden szabály baloldala tartalmaz
nemterminálist.
(ha nemcsak a 0,1,2,3 típusokat vizsgáljuk, akkor lineáris és monoton is)

A → BC
2-es típusú X → p alakú, X=AN, és p=BCV*.
1-es típusú: P1PP2 →  P1QP2 alakú, ahol P1=P2V*P=AN, Q=BCV+.
0-ás típusú, ahol a szabályokra nincs megkötés azon túl, hogy minden szabály baloldala tartalmaz
nemterminálist.

XY → XaB
1-es típusú, P1PP2 →  P1QP2 alakú, ahol P1=XV*, P=YN, Q=aBV+, P2V*.
0-ás típusú, ahol a szabályokra nincs megkötés azon túl, hogy minden szabály baloldala tartalmaz
nemterminálist.


ABC → ACB
0-ás típusú lehet csak, ahol a szabályokra nincs megkötés azon túl, hogy minden szabály baloldala
tartalmaz nemterminálist.
(egyébként, ha nemcsak a 0,1,2,3 típusokat tekintjük, akkor monoton is)

A → λ
3-as típusú: ez a szabály X → x alakú, A=XN és x=λT*.
2-es típusú: X → p alakú, X=AN, p=λV*.
0-ás típusú, ahol a szabályokra nincs megkötés azon túl, hogy minden szabály baloldala tartalmaz
nemterminálist.
(ha nemcsak a 0,1,2,3 típusokat tekintjük, akkor lineáris is. Ha A=S (azaz A a mondatszimbólum),
akkor egyéb feltételek teljesülése mellett szerepelhet 1-típusú, vagy monoton nyelvtanban is). ★ 
 


3.24. példa - Grammatikák főbb típusai 2. példa


Milyen típusú a G=({S, A, B},{x, y}, S, H) grammatika, ahol H szabályai:
S → AB, A → BSB,
A → BB, B → xAy,
B → λ, B → x, B → y.
Megoldás:
S → AB; A → BSB; A → BB; B → xAy megfelel a
0-ás, 1-es és 2-es típusú grammatika követelményeinek, de a 3-asénak nem.
B → x; B → y megfelel a 0-ás, 1-es 2-es és 3-as  grammatika követelményeinek.
B → λ pedig a 0-ás 2-es és 3-as grammatika követelményeinek.
Tehát a grammatikánk minden szabálya megfelel a 0-ás és 2-es típusú grammatika követelményeinek
is. Ilyenkor azt szokták nézni, hogy melyik a legnagyobb index, amelyhez tartozó követelményeinek
a teljes szabályhalmaz eleget tesz. Ez alapján a nyelvtanunk 2-es típusú. ★


3.25. példa - Grammatikák főbb típusai 3. példa


Milyen típusú a következő grammatika?
G=({S, A, B},{a}, S, H), ahol H szabályai a következők:
S → ABa, AB → AaBB,
B → aaa, S → AS,
AAS → ABS.
Megoldás:
S → ABa (0-ás, 1-es, 2-es)
AB → AaBB (0-ás, 1-es)
B → aaa (0-ás, 1-es, 2-es, 3-as)
S → AS (0-ás, 1-es, 2-es)
AAS → ABS (0-ás, 1-es)
Grammatikánk eleget tesz a 0-ás és az 1-es típus követelményeinek,
ezért a grammatikánk 1-es típusú lesz. ★


3.26. példa - Grammatikák főbb típusai 4. példa


Hányas típusú a következő grammatika?
G=({ S, A, B }, { a, b, c }, S, H), ahol H szabályai a következők:
S → ABc, A → aB,
A → Bc, B → aAc,
B → bc.
Adjuk meg az összes hatbetűs szót a grammatika által generált nyelvben!
 

Megoldás:
Az összes szabály eleget tesz a 0-ás, 1-es és a 2-es típus követelményeinek,
ezért 2-es típusú a grammatika.

Most határozzuk meg a hatbetűs szavakat!
Először is azt kell megállapítsuk, hogy a grammatika szabályai közül a baloldal mindenhol
rövidebb, mint a jobboldal, vagyis egy szóból sehol sem kapunk rövidebbet (sőt, mindig
szigorúan hosszabb mondatformát kapunk), tehát a levezetéseket elég hatbetűs szavakig nézni,
és azok közül azok lesznek a grammatika által generált nyelvben, melyek csak terminálist
tartalmaznak.
A levezetés első lépése mindenképpen az S → ABc lesz.
Az A helyére vagy Bc vagy aB kerülhet csak.
Mindkét esetben lesz egy négybetűs szavunk, melyben lesz két terminális
és két B nemterminális. B helyére csak bc kerülhet, mert különben úgy kapunk hatbetűs szót,
hogy még marad benne nemterminális.
Ezért a levezetéseink a következők lesznek:
S ⇒ ABc ⇒ aBBc ⇒ abcBc ⇒ abcbcc,
S ⇒ ABc ⇒ BcBc ⇒ bccBc ⇒ bccbcc.
Természetesen van még ezen kívül több levezetés is, de az
csak a nemterminálisok helyettesítésének sorrendjében tér el. ★


3.27. példa - Grammatikák főbb típusai 5. példa

Milyen típusú a G=({S, A, B}, {0, 1}, S, {SAB, A → 0B1, 0B → 011, 1B → 11BS, S → λ})?

Megoldás: A 0B → 011 és 1B → 11BS alakú szabályok miatt csak 1- és 0-típusú lehet. Az S → λ szabály miatt lehetne 1-típusú a nyelvtan, ha S nem szerepelne egyik szabály jobboldalán sem, de mivel 1B → 11BS szabályra ez nem teljesül, a nyelvtan 0-típusú.


3.28. példa - Grammatikák főbb típusai 6. példa

                
Hányas típusú a következő grammatika?
G=({S},{x, y, +, *, ), (}, S, H), ahol H szabályai a következők:
S → S+S, S → S*S, S → (S), S → x, S → y.
Adjunk meg az y*(x+y) szó egy levezetését!


Megoldás:
S → S+S; S → S*S; S → (S) lehetnek 0-ás, 1-es és 2-es típusú szabályok.
S → x; S → y pedig 0-ás, 1-es, 2-es és 3-as típusú szabályok, vagyis minden
szabály eleget tesz a 0-ás 1-es és a 2-es típus követelményeinek, tehát a grammatika 2-es
típusú lesz.

Az y*(x+y) szó egyik levezetése a következő:
S ⇒ S*S ⇒ y*S ⇒ y*(S) ⇒ y*(S+S) ⇒ y*(x+S) ⇒ y*(x+y) ★


3.29. példa - Grammatikák főbb típusai 7. példa


Adott a G=({S,A,B,C },{a,b } ,S, H) nyelvtan, ahol H szabályai:
S → aS, S → baA, A →  aA, A → baaB,
B →  aB, B →  b, B →  baaaC, C →  aC, C →  a.
Milyen típusú? Adjuk meg az aabaabaaabaaaa  szó levezetését!
Megoldás:
A nyelvtan szabályait megnézve, láthatjuk, hogy az összes szabály eleget tesz a 
0-ás, 1-es, 2-es és 3-as típusú nyelvtanok követelményeinek,
tehát a nyelvtan 3-as típusú.

A generálás az első két szabály valamelyikével kezdődhet.
Mivel a keresett szó a-val kezdődik, ezért az 1. szabályt kell használnunk először.
Az első szabály n-szeri (n tetszőleges nem-negatív egész) alkalmazásával anS-et kapunk.
Ahhoz, hogy az S szimbólum eltűnjön a mondatformából a második szabály használatára
van szükség.
Ennek alkalmazása után anbaA-hoz jutunk.
Ezután olyan A-ból kiinduló szabályt kell keresni, ahol a következik a nyíl után. 
Ezért a 3. szabály m-szeri alaklmazásával anbaamA-t kapunk.
Majd a negyedik szabállyal: anbaambaaB-t.
Ezután három alkalmazhatő szabály van.
Az ötödik k-szori alkalmazása az anbaambaaakB alakhoz vezet.
Ekkor a levezetés befejezhető a B →  b szabállyal: anba ambaaakb.
Alternatívaként a B →  baaaC szabállyal folytatható a levezetés: anbaambaaakbaaaC.
Ekkor a C →  aC j-szeri alkalmazása az anbaambaa akbaaa ajC formához vezet, a levezetés
ekkor az utolsó szabállyal fejezhető be: anbaambaaakbaaaaja eredménnyel.
 


A levezetéseket gráf segítségével is szemléltethetjük. Ebben az esetben az aabaabaaabaaaa szólevezetését a következő fa reprezentálja:

3.30. példa - Grammatikák főbb típusai 8. példa


Adott a G=({ S,A,B }, { a,b }, S, H ) nyelvtan, ahol H={S → a A, A →  Sa,
A →  a, S →  bB, B →  Sb, B →  b, S →  a, S →  b  }.
Milyen típusú? Mely nyelvet generálja?
Adjuk meg az abbabba szó levezetését fa alakban!
Megoldás:
Amint látjuk a szabályok közt van jobb-, illetve bal-lineáris alakú is, ezért a megadott
grammatika nem reguláris. Az viszont minden szabályra teljesül, hogy a nyíl után legfeljebb egy
nemterminális betű szerepel. Tehát a nyelvtan lineáris.
A nyelvtan szabályait csoportokban vizsgálhatjuk.
Az első szabály alkalmazása után a második vagy harmadik szabályt is fel kell használnunk a
levezetésben.
Az első után a harmadik szabállyal a levezetés befejeződik, az S szimbólum helyére aa kerül így a
levezetésben.
Az első és a második szabályok az eredeti S-t aSa-val helyettesítik.
Hasonlóan a következő három szabály az S szimbólumot a bSb, illetve a bb szavakkal helyettesítheti.
Ezek alapján könnyen belátható, hogy a generált szó az elejéről olvasva éppen ugyanaz, mint
a végéről visszafelé olvasva.
Az is látszik, hogy az {a,b} ábécé felett minden ilyen szót előállít a nyelvtanunk.
Az utolsó két szabály a páratlan hosszúságú ilyen tulajdonságú szavak levezetésének
befejezesében játszik szerepet.
Ezt a nyelvet egyébként a kétbetűs ábécé feletti palindrom nyelvnek nevezzük.
Az ábra az abbabba szó levezetési fáját mutatja.
 


3.31. példa - Grammatikák főbb típusai 9. példa


Legyen adott G=({S, A,B,C },{a,b }, S, H) generatív nyelvtan, ahol H={ S → SS, S →  AB,
S → AC, S →  SB, A → a, B →  b}.
Milyen típusú ez a nyelvtan? Mely nyelvet generálja?
Adjuk meg az abaababbaaabbb szó levezetési fáját!
Megoldás:
A nyelvtan környezetfüggetlen.
Az utolsó két szabály alapján az A, illetve a B szimbólumok az a és b terminálisoknak felelnek meg.
A második, illetve a harmadik és negyedik szabályok használata egy-egy A és B szimbólumot vezet
be, mégpedig úgy, hogy az A a B előtt szerepel. A nyelv minden szavában megegyezik tehát az a és b
betűk száma.
Másrészt az is igaz, hogy a nyelv egy szavának minden kezdőszeletében legalább annyi a van, mint
ahány b.
(Ez a nyelv egyébként a kétbetűs ábécé fölötti Dyck-nyelv, vagyis a zárójelek nyelve.
Zárójelei: a a nyitó; b pedig a záró zárójeleket jelenti.)
Az ábra mutatja az abaababbaaabbb szó levezetési fáját.                                
 


A Chomsky hierarchia

Definíció szerint azonnal látható, hogy minden 3-típusú nyelvtan egyben lineáris, és minden lineáris nyelvtan egyben 2-típusú is, valamint minden 1-típusú nyelvtan monoton és minden monoton nyelvtan egyben 0-típusú is. Az is nyilvánvaló, hogy minden 2-típusú, lineáris vagy 3-típusú nyelvtan egyben 0-típusú is. Nézzük meg az 1-típusú és a 2-típusú nyelvtanok közötti kapcsolatot.

4. Tétel. (Üresszó-lemma). Minden környezetfüggetlen G grammatikához megadható olyan G ' környezetfüggetlen nyelvtan, hogy L(G)=L(G ') (azaz az általuk generált nyelv ugyanaz), s ha λL(G), akkor a G '- beli szabályok jobboldalán λ nem fordul elő. Ha viszont λL(G), akkor az egyetlen G '- beli szabály aminek jobboldala az üresszó S ' → λ, ahol S ' a G ' mondatszimbólumát jelöli. Ezesetben, azaz λL(G ') fennállása esetén viszont S ' (azaz a G ' mondatszimbóluma) nem fordulhat elő egyetlen G '- beli szabály jobboldalán sem. Ennek megfelelően, tahát G ' nemcsak környezetfüggetlen, de egyben a környezetfüggő definíciónak is eleget tesz.

Bizonyítás. Legyen G=(N, T, S, H) 2-típusú nyelvtan. Megszerkesztünk hozzá egy G1=(N, T, S, H1) grammatikát a következő módon. Definiáljuk az Ui halmazokat (i=0,1,...) a következő módon: először az U1={A|A  → λH}, majd az Ui+1=Ui∪{A|A  → pH, pUi*}, i ≥ 1 halmazokat. Mivel U1U2⊆…Ui⊆…⊆N, és N véges, azért létezik olyan k, hogy Uk=Uk+1. Az Ui (i=1, 2, …) halmazok konstrukciója alapján ekkor látható, hogy minden m pozitív egészre Uk=Uk+m. Jelöljük ezt U- val, tehát U=Uk. Erre az U- ra ekkor A*λ akkor és csak akkor ha AU (AN), azaz λL(G) akkor és csak akkor ha SU. Tekintsük most azt a G1=(N, T, S, H1) grammatikát, amelyre Ap1H1 pontosan akkor, ha p1λ és van olyan ApH, hogy p1=p, vagy p1 előállíthtó p- ből úgy, hogy p- ből U- beli elemet vagy elemeket hagyunk el. p- ből tehát egy ilyen p1 szót úgy származtatunk, hogy alkalmas U- beli (nem feltétlen egymástól páronként különböző) A1, …, Am nemterminális betűkre és (NT)*- beli q1, …qm+1 szavakra p=q1A1qmAmqm+1 mellett p1=q1qm+1 fennálljon. Ekkor nyilvánvaló, hogy L(G1)⊆L(G)∖{λ}. De megfordítva, L(G)∖{λ}⊆L(G1) is fennáll, hisz ha S*p és pλ, akkor fennáll pL(G ') is, mivel a p- nek egy G- beli levezetése esetén minden A → λ alakú szabály alkalmazása helyett vehetjük a megfelelő H1- beli szabályokat. Így azt kaptuk, hogy L(G)∖{λ}=L(G1). Ha tehát λL(G), akkor G '- ként G1- et választhatjuk. Ha pedig λL(G), akkor egy új S ' (∉NT) szimbólumot választva vegyük a G '=(N∪{S '}, T, S ', H1∪{S '  → S, S ' → λ}) nyelvtant, mely ezesetben nyilvánvalóan eleget tesz a tételbeli tulajdonságoknak, így a tétel bizonyítást nyert. ∎

Láthatjuk tehát, hogy a környezetfüggetlen nyelvek generálhatóak olyan (környezetfüggő) nyelvtanokkal, melyekben minden szabály bal oldalának hossza egy.

A fenti tételünk alapján könnyen látható, a Chomsky-féle nyelvosztályok alábbi hierarchiája:

REGLINCFCSRE.

Ez a hierarchia valójában élesebb, de ezt a későbbiekben az adott nyelvosztályok vizsgálatakor fogjuk bizonyítani.

A jegyzet során e hirarchia nyelvosztályait is sorra vesszük, és különböző fontos tulajdonságaikat viszgáljuk, ezeket a problémaköröket ismertetjük a Problémakörök alfejezetben.

3.32. példa - Üresszó-lemma 1. feladat


G=({S, A, B},{x, y}, S, H), ahol H a következő szabályokból áll:
S → AB, A → BSB, A → BB, B → xAy,
B → λ, B → x, B → y.

Először nézzük meg, hogy az üresszó benne van-e a G által generált nyelvben!

U1:={B} - azok a nemterminálisok, amelyekből λ közvetlenül megkapható.
U2:={A,B} - azok a nemterminálisok, amelyekből U1*-beli szavak közvetlenül megkaphatóak!
U3:={S, A, B} - azok a nemterminálisok, amelyekből U2*-beli szavak közvetlenül megkaphatóak.

Mivel U3 a nyelvtan összes nemterminálisát tartalmazza, ezért U:=U3=U4=U5=... 
Tehát U-beli nemterminálisokból kapható meg az üresszó.
Mivel SU, ezért az üresszó benne van a G által generált nyelvben.
Készítsük el a G'=({S', S, A, B},{x, y}, S', H') grammatikát, ahol H' a következő szabályokból áll:

  1. S' → S, S' → λ. Ez a két szabály azért került be a H' szabályai közé, mert λ∈L(G), ezért λ∈L(G')-nek is teljesülnie kell!

  2.  Most vegyük azokat a H-beli szabályokat, amelyekben nem a λ szerepel a jobboldalon. Ezek a következők:
    S → AB, A → BSB, A → BB, B → xAy, B → x, B → y.

  3.  És vegyük még azokat a szabályokat, amelyek H-ban nem szerepeltek, és amelyeket úgy kapunk,
    hogy H-beli szabályok jobb oldaláról az összes lehetséges módon
    elhagyjuk U halmaz nemterminálisait, figyelve azonban arra, hogy a jobb oldalon λ ne maradjon
    magában:
    S → A, S → B,
    A → BS, A → SB, A → B, A → S,
    B → xy.


3.33. példa - Üresszó-lemma 2. feladat

Készítsen a következő grammatikával ekvivalens 1-es típusú grammatikát!
G=({S, A, B, C, D}, {a, b}, S,H), ahol H szabályai:
S → AB, A → CB, A → SS, A → a, B → λ,
C → D, D →  λ, D → b.

Megoldás:
U={S,A,B,C,D}
S∈ U, ezért λ∈ L(G), vagyis új kezdőszimbólumot kell bevezetni.
G'=({S',S, A, B, C, D}, {a, b}, S', H'), ahol H' szabályai:

  1. S' → S és S' → λ, mert λ∈ L(G)

  2. S → AB, A → CB, C → D, A → SS, A  → a, D  → b lesznek azok a szabályok H-ból melyekben nem λ van a jobboldalon.

  3. S → A, S → B, A → C, A → B, A  → S lesznek az új szabályok, amelyeket H-beli szabályok jobb oldaláról U-beli nemterminálisok elhagyásával kapunk.

Ez a grammatika ekvivalens a G grammatikával, de már 1-es típusú. ★


3.34. példa - Üresszó-lemma 3. feladat

Küszöbölje ki a törlő szabályokat a G=({S, A, B}, {a, b}, S,H) grammatikából!
 H={S → λ, S → AB, A → SAB, A → a, B → S, B → b}.

Megoldás:
 A feladat az Üresszó-lemma alkalmazásával oldható meg: 
 U={S, B}
 SU, ezért λ∈L(G), vagyis új kezdőszimbólumot kell bevezetni.
 G'=({S',S, A, B}, {a, b}, S', H'), ahol H' szabályai:

  1. S' → S és S' → λ, mert λ∈L(G).

  2. S → AB, A → SAB, A → a, B → S, B  → b lesznek azok a szabályok H-ból, amelyekben nem λ van a jobboldalon.

  3.  S → A, A → SA, A → AB lesznek az új szabályok, amelyeket H-beli szabályok jobb oldaláról
    U-beli nemterminálisok elhagyásával kapunk.
    (Az A → A alakú szabályt nyugodtan elhagyhatjuk, mivel levezetés szempontjából nincs hatása.)


3.35. példa - Üresszó-lemma 4. feladat

             
Küszöbölje ki a törlő szabályokat a G=({S, A, B, C, D, E},{a, d}, S,H) grammatikából!
H={S → SA, S → BS, A → a, B → CDE, C → DddE, C → d, C → λ, D → E, D → d,
 E → λ}.

Megoldás:
A feladat az Üresszó-lemma alkalmazásával oldható meg: 
U={B, C, D, E}
SU, ezért λ∉L(G), vagyis nem kell új kezdőszimbólumot bevezetni.
G'=({S, A, B, C, D, E}, {a, d}, S, H'}), ahol H' szabályai:

  1.  Azok a szabályok H-ból melyekben a jobboldal nem λ:
    S → SA, S → BS, A → a, B → CDE, C → DddE, C → d, D → E, D → d

  2.  Az új szabályok, melyeket U-beli nemterminálisok elhagyásával kapunk:
    B → CD, B → CE, B → DE, B → C, B → D, B → E,
    C → ddE, C → Ddd, C → dd (S → S alakú szabálynak nincs jelentősége.)


3.36. példa - Üresszó-lemma 5. feladat

Hozza a G=({S, A, B, C}, {a, b}, S,H) grammatikát 1-es típusúra!
H={S → ASC, S → BA, B → ACB, B → AA, C → bB, A → λ, A → a, B → ba}.


Megoldás:
U={S, A, B}
SU, ezért λ∈L(G), vagyis új kezdőszimbólumot kell bevezetni.
G'=({S',S, A, B, C}, {a, b}, S', H'), ahol H' szabályai:

  1.  S' → S és S' → λ, mert λ∈L(G).

  2.  S → ASC, S → BA, B → ACB, B → AA, C → bB, A → a, B → ba
    lesznek azok a szabályok H-ból amelyekben nem λ a jobboldal.

  3.  S → AC, S → SC, S → C, S → A, S → B, B → CB, B → AC, B → C, B → A, C → b
    lesznek az új szabályok, amelyeket U-beli nemterminálisok elhagyásával kapunk.


L-rendszerek

A Markov-féle normál algoritmus esetén minden lehetséges lépésben egyértelműen meg volt fogalmazva, hogy melyik szabályt és hol kell alkalmazni (illetve, ha kiszámoltuk a megoldást, és nem folytatódik a számítás). Ezzel szemben a generatív nyelvtanoknál sem az hogy melyik szabályt (több alkalmazható is lehet egyszerre), sem az hogy hol (egy adott szabály az aktuális mondatforma több helyén is alkalmazható lehet ugyanakkor) kell alkalmazni nincs egyértelműen megadva, vagyis a nyelvtanok nemdeterminisztikusak. Viszont minden eddigi korábban ismertetett rendszerre teljesült, hogy minden időpillanatban pontosan egy szabályt pontosan egy helyen alkalmaztunk, vagyis az eddig tárgyalt rendszerek szekvenciális működésűek. Ebben a fejezetben egy olyan modellt vizsgálunk meg, amely alapvetően párhuzamos.

Aristid Lindenmayer (1925-1989), a Fasori Gimnáziumba (Budapesti Evangélikus Gimnázium) járt, hasonlóan több magyar Nobel-díjashoz (pl. Wigner Jenő), vagy Neumann Jánoshoz. Később Hollandiában tevékenykedő biológusként először bizonyos algafajok növekedési mintázatainak leírására alkalmazott formális rendszereket, majd ezeket a matematikai eszközöket magasabb szintű növények fraktálszerkezetének leírására alkalmazták.

5. Definíció. Egy L-rendszer (Lindenmayer-system, L-system) egy párhuzamos átíró rendszer LS=(T, s, H), ahol T egy véges ábécé, sT* (axióma), H pedig a → r alakú (aT, rT*) átíró szabályok halmaza.

Az alap L-rendszerekben minden aT betűhöz pontosan egy átíró szabály (esetleg a → a alakú) létezik. Egy levezetési lépésben az adott mondatforma/szó (axióma) minden betűjét helyettesítjük a megadott átírási szabályok alapján, így létrehozva a következő mondatformát/szót.

Az LS rendszer által generált nyelv tartalmazza az összes olyan szót (beleértve az axiómát is) amely véges sok lépésben generálható az axiómából.

3.37. példa - Fibonacci szavak

Legyen ({a, b}, a, {a → b, bba}) L-rendszer. Ekkor könnyen ellenőrizhető, hogy az ezzel a rendszerrel generált nyelv első néhány szava: a, b, ba, bab, babba, babbabab, … Ez a Fibonacci szavak nyelve.


Figyeljük meg, hogy az egymást követő szavak hosszai éppen a Fibonacci számok (az f(0)=1, f(1)=1, f(i)=f(i-1)+f(i-2), (i>1- re) rekurzív képlettel definiált sorozat). Másrészt a szavak felépítése is hasonlít a számsorozatot előállító képlet alkalmazására: w(0)=a, w(1)=b, w(i)=w(i-1)w(i-2) . ★

3.38. példa - Fraktálgenerálás L-rendszerrel

A Cantor-halmaz egyike a jól ismert fraktáloknak, ennek egy előállítása történhet a következő L-rendszer segítségével: ({0,1}, 1, {1 → 101, 0  → 000}).


A generálás folyamata: 1, 101, 101000101, 101000101000000000101000101 jobban követhető a következő képen, ahol 1 jelzi a szakaszokat, 0 pedig azok hiányát:

A levezetést a végtelenségig folytatva (határsetben) megkapjuk a Cantor által definiált fraktált. ★

Növények formáját, hasonlóan, néhány egyszerű átíró szabállyal tudjuk kódolni, valószínűleg a természet is hasonlóképpen kódolja a kifejlett növény felépítését a növény génállományában. A következőkben egy egyszerű ilyen jellegű példát mutatunk.

3.39. példa - Kétdimenziós rajz L-rendszerrel

({},,H), ahol a H szabályhalmaz elemei:

; ;

A generálás első néhány lépése:


Természetesen rengeteg változata van az L-rendszereknek, itt csak a legalapvetőbb változatot ismertettük röviden.

Problémakörök

Az alábbiakban áttekintjük, hogy a jegyzetben a különböző típusú nyelvekkel kapcsolatban mi is érdekel minket. Általában adott nyelvosztályra illusztratív példát is adunk, valamint bizonyítjuk a Chomsky-féle hierarchia szigorúságát. Egyes nyelvosztályok tulajdonságai erősen különbözhetnek egymástól. Ebben a jegyzetben általában a következő tulajdonságokat fogjuk vizsgálni.

Normálformák (Normálalakok)

A monoton és a 0-típusú nyelvtanokban a terminális szimbólumokat is átírhatjuk, itt a terminális és nemterminális szimbólumoknak a megkülönböztetése inkább csak azért fontos, hogy lássuk, készen vagyunk-e a levezetéssel (csak terminálisokból áll az aktuális modatforma), vagy van benne nemterminális, ahol még szabályt kell alkalmaznunk ha be akarjuk fejezni a levezetést (az más kérdés, hogy nem feltétlenül lehet befejezeni minden levezetést). A továbbiakban belátjuk, hogy minden nyelvtannal van olyan ekvivalens, amiben terminális szimbólumokat nem írunk át, vagyis a terminális szimbólumok tényleg terminálisak, véglegesen ott maradnak a levezetésben, míg a változókat természetesen át kell írnunk egy termináló levezetés során.

Azt mondjuk, hogy egy nyelvtan (terminális) normális alakban van, ha a helyettesítési szabályokban terminális jelek csak A → a ( AN, aT) alakú szabályokban fordulnak elő.

5. Tétel. Minden G=(N, T, S, H) nyelvtanhoz megadható egy vele ekvivalens G '=(N ', T, S, H ') nyelvtan úgy, hogy az általuk generált nyelvek megegyeznek: L(G)=L(G '), továbbá minden H '- beli szabály, amely terminális jelet tartalmaz, A → a alakú, ahol AN, aT. Emellett G ' nyelvtan ugyanolyan típusú, mint G, kivéve, ha G reguláris, vagy lineáris.

Bizonyítás. Minden egyes aT terminális jelhez vezessünk be új DaN nemterminálist, és legyen N '=N∪{Da|aT}. A H '- beli szabályokat adjuk meg úgy, hogy a H szabályaiban minden nem A → a ( AN, aT) alakú szabályban az a terminális helyére a megfelelő Da változót írjuk. Ezenkívül a H '- beli szabályok közé még felvesszük az Daa alakú új szabályokat (minden aT esetén). Az így kapott H ' nyilván rendelkezik a kívánt tulajdonsággal.

Az ekvivalencia bizonyításához először megmutatjuk, hogy L(G)⊆L(G '). Legyen w=a1a2akL(G). Ekkor a G ' nyelvtanban levezethető a megfelelő D1D2Dk nemterminális szó, és az Daa szabályok segítségével ebből a w- t megkaphatjuk. Ha továbbá λL(G), akkor a G- ben a megfelelő szabályok alkalmazásával ugyancsak megkapjuk λ- t.

Most lássuk be, hogy L(G ')⊆L(G). Legyen h:(N '∪T)* → (NT)* homomorf leképezés a következő módon értelmezve:

- h(Da)=a, (minden aT esetén) illetve

- h(r)=r, r∈(NT).

Ekkor bármely két p, q∈(N '∪T)* szóra a pG 'q relációból következik, hogy vagy h(p)=h(q), vagy h(p)⇒Gh(q). Ha ugyanis a G nyelvtanban a p- ből a q úgy adódik, hogy valamelyik Daa szabályt alkalmazzuk, akkor h(p)=h(q). Ha pedig H '- nek egy olyan szabályát alkalmazzuk, amelyet egy H- beli szabályból nyertünk, akkor nyilván h(p)⇒Gh(q). Tehát mindkét esetben pG 'q relációból a h(p)⇒Gh(q) következik. Legyen most pL(G '), akkor SGp, mert S=h(S)⇒G 'h(p)=p, amivel a tételt bebizonyítottuk. ∎

A továbbiakban különböző típusú nyelvtanokhoz ennél jóval erősebb megkötéseket tartalmazó normálformákat is fogunk bemutatni. Az egyik fontos kérdés az lesz, hogy mennyi korlátozást tehetünk adott nyelvtanosztály szabályaira, ahhoz, hogy továbbra is generálhassuk a nyelvosztály üresszómentes nyelveit, azaz minden adott típusú nyelvtannal legyen ekvivalens amire a korlátozás fennáll.

Levezetések szerkezete

Mivel a levezetés központi fogalom egy nyelvtan által generált nyelv előállításában, érdemes megvizsgálnunk a lehetséges levezetések szerkezetét. A levezetéseket gráfokkal fogjuk ábrázolni, a levezetési gráf alakja (pl. fa) nemcsak szemléletes, de elméleti és gyakorlati fontossággal is bír. Mindez szorosan összefügg a következőkben ismertetendő szóproblémával is.

A szóprobléma és a szintaktikai elemzés

Ha adott egy nyelv (pl. nyelvtan segítségével definiálva), akkor annak eldöntését, hogy egy adott w szó benne van-e a (generált) nyelvben, az adott nyelvhez (nyeltanhoz) tartozó szóproblémának hívjuk. Általában nemcsak egy konkrét nyelv érdekel minket, hanem az hogy adott nyelvosztály esetén hogyan oldható meg (illetve megoldható-e egyáltalán) a szóprobléma. Ezt eldönteni, illetve erre hatékony algoritmust megadni érdekes és fontos része a formális nyelvek elméletének.

Ha nem csak igen/nem választ várunk el, hanem igen válasz esetén azt is hogy egy lehetséges levezetést is megadjon az algoritmus, akkor szintaktikai elemzésről beszélünk.

A mesterséges intelligenciában szokásos módon állapottér gráffal szemléltethetjük az összes lehetséges levezetést egy adott nyelvtanban: a gyökér csúcs címkéje az S mondatszimbólum, és bármely csúcsból úgy származtathatjuk annak "utódait", hogy a csúcs címkéjében levő mondatformára valamely levezetési szabályt alkalmazzuk valamely alkalmas helyen. Ilyenkor grafikusan irányított élt húzunk az adott csúcsból abba amelyben, mint címke, az új mondatforma található. Mivel bármely (véges) mondatforma esetén csak véges sok szabály és véges sok helyen alkalmazható, így felsorolhatjuk az összes olyan mondatformát, amaly létrejöhet a már meglevő mondatformákból egy lépésben. Ez alapján a gráf alapján kereshetünk választ a formális nyelvek elméletének egyik legfontosabb problémájára, a szóproblémára: Ezt a problémát a következő formában is megfogalmazhatjuk: egy adott L nyelv és egy adott w szó esetén milyen feltételek mellett dönthető el algoritmikusan az, hogy wL reláció teljesül-e vagy sem. Könnyű észrevenni, hogy végtelen nyelvek esetén a gráfnak végtelen sok levél eleme van, sőt azok mélysége (vagyis a legrövidebb, a gyökércsúcsból induló és az adott levélcsúcshoz tartó irányíott út, vagyis a legrövidebb levezetés, hossza) sem korlátos. A szóprobléma eldöntése ezeknek a levélelemeknek az egyenkénti megvizsgálását jelentené, ami általában algoritmikusan nem megoldható. Azonban speciális esetekben, például a szó hosszát nem csökkentő nyelvtanok (monoton nyelvtanok) esetén a levezetési gráfoknak csak egy véges részgráfját kell a vizsgálatunkba bevonni, ami garantálja a probléma algoritmikus eldönthetőségét.

Nyelvosztályok és automataosztályok kapcsolata

Egyik központi feladatunk a különböző nyelvosztályok elfogadására alkalmas automataosztályok feltérképezése, vagyis, hogy adott nyelvosztályba tartozó nyelveket milyen automatákkal lehet elfogadni. Néhány nyelvosztály esetén egyéb speciális, alternatív, a nyelvosztálynak megfelelő leírást is fogunk adni a benne szereplő nyelvekre.

Nyelvosztályok tulajdonságai

Az, hogy egy adott formális nyelv milyen nyelvosztályba tartozik, nem dönthető el minden egyes nyelv esetén könnyen. Néhány nyelvosztály esetén segítséget jelenthet, ha olyan tulajdonságot tudunk, ami a nyelvosztály minden egyes nyelvére teljesül. Ha sikerül bizonyítani, hogy az adott nyelvre ez a tulajdonság nem teljesül, akkor nem tartozhat az adott nyelvcsaládhoz.

Egy adott nyelvosztály tulajdonságait vizsgálva érdekes információt hordoznak a zártsági tulajdonságok.

Azt mondjuk, hogy egy nyelvosztály zárt egy nyelvműveletre nézve, vagyis a művelet nem vezet ki az adott nyelvosztályból, ha bármely a nyelvosztályhoz tartozó (ugyanazon ábécé felett értelmezett) nyelvekre a műveletet elvégezve az így létrejött (új) nyelv ugyancsak az adott nyelvcsaládhoz tartozik. Ha vannak olyan nyelvei az adott nyelvosztálynak, amikre a létrejövő nyelv már nem eleme az adott osztálynak, akkor a nyelvosztály nem zárt az adott műveletre nézve, úgy is mondhatjuk, hogy az adott művelet kivezet az adott nyelvosztályból. Fontos kérdés, hogy egy adott nyelvosztály zárt-e egyes nyelvműveletekre nézve.

Minden nyelvosztálynál fogjuk vizsgálni a konkatenáció, Kleene-csillag, unió, metszet és komplementerképzés műveleteket.

Speciális alosztályok

Több fontos nyelvosztály esetén speciális alosztályokat is be fogunk mutatni, amelyek általában speciálisan megszorított nyelvtanokkal generálhatóak, vagy speciálisan megszorított automatákkal fogadtathatóak el.

4. fejezet - A véges automaták elméletének alapjai

Ebben a fejezetben a véges automaták elméletébe nyújtunk betekintést.

Az automata fogalma és főbb típusai

Automatán egy olyan absztrakt rendszert fogunk érteni, mely egy diszkrétnek képzelt időskála időpillanataiban érkezett ingerek hatására ezen időpillanatokban válasszal reagál, miközben belső állapotát megadott szabályok szerint változtatja a külső ingerek hatására. Az ingerekre adott válasz függ mind az ingerektől mind pedig a pillanatnyi belső állapottól. Ebben az értelemben tehát nemcsak a gépek, hanem bármiféle élő vagy élettelen objektumok tekinthetők automatának, ha ezen séma szerint vizsgáljuk őket, azaz ilyenfajta működést tulajdonítunk nekik.

4.1. példa - Automaták

A legkülönbözőbb létező vagy nem létező dolgok tekinthetők automatának. Automatának tekinthető a lakásunk ajtaja, ablaka. Bizonyos értelemben automatának tekinthető a kedvenc macskánk, a számítógépünk, vagy a lakáscsengőnk is. Vizsgálhatjuk a főnökünket is mint automatát, hisz minden bizonnyal különféleképp reagál arra, hogy az elvárásainak megfelelően cselekszünk-e vagy sem. (És az is valószínű, hogy ezek a dolgok a főnök állapotát is befolyásolják.) De automatának tekinthető az inkák esőistene, aki imádságra esővel, káromkodásra szárazsággal reagál. ★


Azon automatákat amelyek egy inputszóhoz egy output szót rendelnek a működésük folyamán, átalakítóknak, transzduszereknek is szokás nevezni. A következőkben főleg ilyenekkel fogunk foglalkozni, szemben a későbbi részekben előtérbe kerülő elfogadó automatákkal.

Mealy automata

Az absztrakt automaták egyik nevezetes típusa a Mealy (ejtsd: míli) automata. Mealy automatán fogunk érteni egy A=(Q, T, V, d, f) ötöst, aholis Q a (belső) állapotok nem üres halmaza, T a bemenő jelek nem üres halmaza, V a kimenőjelek nem üres halmaza, d:Q×T  → Q az átmeneti függvény és f:Q×T  → V a kimeneti függvény.

Úgy képzeljük, hogy a Mealy automata diszkrét időskála mentén működik, s annak minden egyes időpillanatában egy-egy jól meghatározott állapotban van. Ha valamely időpillanatban egy A=(Q, T, V, d, f) Mealy automata egy qQ állapotában az aT bemenő jelet kapja, akkor ugyanezen időpillanatban a f(q, a) kimenőjellel reagál, majd a következő időpillanatra átmegy a d(q, a) állapotba.

Moore automata

Amennyiben az A=(Q, T, V, d, f) Mealy-automatához létezik olyan g:Q → V függvény, hogy tetszőleges qQ állapota és aT bemenő jele esetén teljesül a f(q, a)=g(d(q, a)) egyenlőség, akkor Moore-automatáról beszélünk. A Moore-automatát A=(Q, T, V, d, g) alakban szokás megadni, ahol g:Q → V a Moore-automata jelfüggvénye. Tetszőleges qQ állapot esetén azt mondjuk, hogy g(q) a qQ állapotjele.

A Moore automata a diszkrét időskála minden egyes időpillanatában egy-egy jól meghatározott qQ állapotban van (amikor az állapotjele g(q)). Ha egy adott időpillanatban ezen qQ állapotában az aT bemenő jelet kapja, akkor a következő időpillanatban d(q, a) lesz az állapota, s állapotjele pedig g(d(q, a)) lesz. Ily módon a Moore-automata egy adott időpillanatban kapott bemenő jel hatására a következő időpillanatra átmegy ezen bemenő jel és a belső állapota által egyértelműen meghatározott állapotba, s ezzel egyidejűleg kiadja az új állapot által egyértelműen meghatározott állapotjelet.

Képletesen szólva, amíg a Mealy-automata az olyan embert is modellezheti, aki először cselekszik, azután gondolkodik, addig a Moore-automata az olyan embert modellezi, aki először gondolkodik azután cselekszik.

Kimenőjel nélküli automata

A Moore-féle automata a Mealy-féle automata speciális eseteként adódik. A Moore-féle automata további specializálásával jutunk el a kimenőjel nélküli automata fogalmához a következő módon. Amennyiben egy A=(Q, T, V, d, g) Moore-automatára Q=V és g:Q → Q egy identikus leképezés (azaz minden qQ- ra g(q)=q), akkor a kimenőjel nélküli automata fogalmához jutunk. Figyelembe véve azt a tényt, hogy a Moore-automatát egy olyan A=(Q, T, V, d, f) Mealy-automatából származtatjuk, melyhez található olyan g:Q → V függvény, hogy egy tetszőleges qQ, aT pár esetén f(q, a)=g(d(q, a)), továbbá figyelembe véve, hogy a kimenőjel nélküli automata olyan Moore-automata, melynek a jelfüggvénye identikus leképezés, azt is mondhatjuk, hogy a kimenőjel nélküli automata egy olyan A=(Q, T, V, d, f) Mealy-automata, melyre Q=V és d=f. Ezen okok miatt a kimenőjel nélküli automatát A=(Q, T, d) alakban szokás megadni.

Egy A=(Q, T, d) kimenőjel nélküli automata esetén a T bemenő jelhalmaz miden aT eleme egy olyan a:Q → Q egy változós műveletnek (vagyis Q önmagába történő leképezésének) is tekinthető, mely az állapothalmaz tetszőleges qQ eleméhez az a(q)=d(q, a) elemét rendeli. Univerzális algebrai kifejezéssel élve tehát a kimenőjel nélküli automaták unoidok, vagy más szóval unáris algebrák. Ez az egyszerű felismerés lehetővé teszi számunkra a modern algebra módszereinek automataelméleti alkalmazását.

Amint láttuk, a Moore-féle automata speciális Mealy-automataként definiálható. Később látni fogjuk, hogy ez a specializáció látszólagos, ugyanis információ átalakítás szempontjából a két fogalom ekvivalens. (Az információ átalakításán azt értjük, hogy az automata tetszőleges bemenő információ hatására valamilyen "kimenő" információval reagál.) Nevezetesen, absztrakt szempontból a Mealy és a Moore-féle automaták ekvivalensek egymással abban az értelemben, hogy már a speciálisabb Moore-automatákkal előállíthatók azok az információ átalakítások, amelyek Mealy automatákkal megvalósíthatók. Tehát a Moore-automata ebből a szempontból csak látszólag speciálisabb a Mealy-automatánál.

Később látni fogjuk azt is, hogy az elmélet kiépítésénél sok esetben elegendő kimenőjel nélküli automatákra szorítkozni.

Az említett három automata típus mindegyike esetén szokás véges automatáról beszélni, ha az állapothalmaz, a bemenő jelhalmaz, s a kimenő jelhalmaz végesek. Szokás véges állapotú automatáról vagy Q- véges automatáról beszélni, ha az állapothalmaz véges. Hasonló értelemben beszélünk véges bemenetű vagy T- véges, illetve véges kimenetű vagy V- véges automatáról, valamint (Q, T)-, (Q, V)-, illetve (T, V)- véges automatáról.

Iniciális automata

Amennyiben az említett automata-típusok valamelyikénél kijelölünk egy q0 iniciális-, vagy más néven kezdőállapotot, s feltételezzük, hogy az automata működésének van egy kezdő időpontja, amikor az automata ebben az állapotban van, akkor iniciális automatáról beszélünk. Az iniciális Mealy-féle automatát A=(Q, T, V, q0, d, f) alakban, az iniciális Moore-féle automatát A=(Q, T, V, q0, d, g) alakban, illetve az iniciális kimenőjel nélküli automatát A=(Q, T, q0, d) alakban szokás megadni, ahol mindhárom esetben q0 az iniciális állapotot jelöli.

Az említett automatáknak szokás beszélni az alábbi általánosításairól is.

Parciális és teljesen definiált automata

Ha az átmeneti, illetve kimeneti függvény lehet parciális is, azaz nem teljesen definiált, akkor parciális automatáról van szó. Teljesen definiált függvényértékek esetén időnként szokás teljesen definiált automatáról is beszélni.

4.2. példa - Parciális automata

Az ajtó szigorú értelemben egy parciális kimenőjel nélküli automatának tekinthető. Bemenő jelei a csukás és a nyitás, s ennek megfelelően két állapota van, nevezetesen csukott és nyitott állapot. Csukott állapotból nyitással lehet nyitott állapotba hozni, nyitott állapotból pedig csukással lehet csukott állapotba hozni. De az ajtó valóban parciális automata, hisz nyitott ajtót kinyitni, vagy csukott ajtót becsukni nem lehetséges. ★


Nemdeterminisztikus és determinisztikus automata

Amennyiben az átmeneti és a kimeneti függvények (illetve Moore-automata esetén az átmeneti és a jelfüggvények) nem egyértelműen definiáltak, nemdeterminisztikus automatáról van szó. Ekkor valójában ezek nem is tekinthetőek függvénynek a hagyományos értelemben. Ahhoz, hogy matematikai értelemben mégis függvényekkel dolgozzunk úgy tekintjük őket, mintha nem az állapot-, illetve a kimenő jelhalmazba képeznének, hanem ezen halmazok összes részhalmazainak halmazaiba. Egy nemdeterminisztikus A=(Q, T, V, d, f) Mealy-automata esetén tehát az átmeneti függvény d:Q×T → 2Q, a kimeneti függvény pedig f:Q×T → 2V alakú, ahol 2Q, illetve 2V az állapothalmaz, illetve a kimenő jelhalmaz részhalmazainak halmazát jelöli. Értelemszerűen, egy nemdeterminisztikus A=(Q, T, V, d, g) Moore-automata esetén az átmeneti függvény d:Q×T → 2Q, a jelfüggvény g:Q → 2V alakú, míg egy nemdeterminisztikus kimenőjel nélküli A=(Q, T, d) automatánál az átmeneti függvény formája d:Q×T → 2Q.

4.3. példa - Nemdeterminisztikus automata

Nemdeterminisztikus kimenőjel nélküli automatának tekinthető a dobókocka, melynek egyetlen bemenő jele a feldobás. Ezen bemenő jel, azaz a feldobás hatására a dobókocka a hat lehetséges állapotából átmehet a hat lehetséges állapot bármelyikébe annak megfelelően, hogy a feldobás után éppen melyik lapjára esik. ★


További változata a nemdeterminisztikus automatáknak, ha megengedjük, hogy az automata bemenő jel nélkül is állapotot váltson: d:Q×(T∪{λ}) → 2Q. Ezeket szokás üresszóátmenetes (nemdeterminisztikus) automatáknak is nevezni.

A nemdeterminisztikus automata ellentéteként beszélünk determinisztikus automatáról is. Determinisztikus automata esetén tehát a szóban forgó függvényertékek mindig pontosan egy (parciális automata esetén maximum egy) meghatározott értéket vesznek fel. (A nemdeterminisztikus terminológiával pedig a függvények értékkészlete csak egyelemű, illetve maximum egyelemű részhalmazokat tartalmaz.) Determinisztikus automatáknál nem fordulhat elő üresszóátmenet.

Ha például egy nemdeterminisztikus A=(Q, T, V, d, f) Mealy-automata esetén a d(q, a) függvényérték a Q- nak egy hat elemű részhalmaza, f(q, a) pedig a V egy két elemű részhalmaza, akkor az A Mealy-automata a q állapotából az a bemenő jel hatására ezen hat elemű részhalmaz bármelyik elemébe átmehet, s kimenőjelként pedig az említett két elemű halmaz báremlyik elemét kiadhatja. S tekintettel arra, hogy egy halmaznak az üres halmaz is részhalmaza, az is előfordulhat, hogy valamely qQ állapotra és aT bemenő jelre d(q, a), vagy éppen f(q, a) értéke az üres halmaz. Ha d(q, a) az üres halmaz, ez annak felel meg, hogy erre az állapota és bemenő jelre nincs értelmezve egyetlen állapot sem amibe átmenet történhet, ha pedig f(q, a) az üres halmaz, akkor ez azt jelenti, hogy erre az állapota és bemenő jelre nincs értelmezve egyetlen kimenőjel sem.

Ezek szerint a parciális automata olyan nemdeterminisztikus automatának tekinthető, ahol a megfelelő függvényértékek vagy egy elemű halmazokat, vagy pedig az üres halmazt szolgáltatják, a teljesen definiált determinisztikus automata pedig egy olyan nemdeterminisztikus automata, ahol ezek a függvényértékek mindig egy elemű halmazok.

Sztochasztikus automata

Fontos általánosítás a valószínűségi vagy sztochasztikus automata, mikoris egy P((r, b)|(q, a)) feltételes valószínűség adja meg, hogy mi a valószínűsége annak, hogy az automata a r állapotba megy át és a b kimenőjelet adja ki azon feltétel mellett, hogy miközben a q állapotban volt, az a bemenő jelet kapta. Tehát egy valószínűségi automata A=(Q, T, V, P) alakban adható meg, ahol Q az állapotok nem üres halmata, T a bemenő jelek nem üres halmaza, V a kimenőjelek nem üres halmaza, P pedig az említett feltételes valószínűség.

Rabin-Scott automata

Az automaták egy fontos osztályát képezik a Rabin-Scott féle automaták (ejtsd rabinszkott), melyeket felismerő vagy elfogadó automatáknak is hívnak. A Rabin-Scott féle automata egy A=(Q, T, q0, d, F) ötös, ahol Q a nem üres állapothalmaz, q0Q a kezdőállapot, T a nem üres bemenő jelhalmaz, d:Q×T  → Q az átmeneti függvény, FQ pedig a végállapotok nem üres halmaza. ( q0F megengedett, azaz előfordulhat, hogy a kezdőállapot egyúttal végállapot is.)

A bemenő jelekből felépülő véges hosszúságú láncokat bemenő szavaknak hívjuk. Bemenő szónak tekintjük a λ üresszót is, mely nem tartalmaz egyetlen betűt sem. Egy Rabin-Scott automata a λ üresszót definíció szerint akkor ismeri fel, ha q0F. Egy nem üres, a1, …, an (nem feltétlenül különböző) bemenő jelekből álló a1⋅⋅⋅an bemenő szó esetén akkor mondjuk, hogy a tekintett A=(Q, T, q0, d, F) Rabin-Scott féle automata felismeri, ha alkalmas q1, …, qn állapotaira q1=d(q0, a1), …, qn=d(qn-1, an) teljesülése mellett qnF.

Az A Rabin-Scott automata által felismert L(A) nyelvnek hívjuk mindazon bemenő szavak halmazát, melyeket az automata felismer.

Értelmezhetjük a nemdeterminisztikus felismerő automatát is. Ekkor az automata által elfogadott nyelv alatt azon w szavak halmazát értjük, amelyekre az automatának van olyan lehetséges állapot-lánca, amely a kezdőallapotból indul és végállapottal végződik, valamint az átmenetek bemenő jeleit összeolvasva éppen a w szót kapjuk.

Itt jegyezzük meg, hogy az átmenetfüggvényt szokás a d helyett a görög δ betűvel is jelölni.

4.4. példa - Rabin-Scott automata működés közben


A véges elfogadó automatákra a következő részben, a reguláris nyelvek kapcsán még visszatérünk.

Az automaták megadása

Egy automatát akkor tekintünk adottnak, ha a hozzá tartozó halmazok és függvények adottak. Egy automatát tehát úgy lehet megadni, hogy megadjuk a hozzá tartozó halmazokat és függvényeket. Ezen halmazok és függvények minden olyan típusú megadása lehetséges, ami a halmazok és függvények megadásánál szokásos.

Véges automaták megadása Cayley táblázattal

Véges halmazok és függvények megadásánál szokásos a művelettáblával történő megadás. Automaták művelettáblás megadását automaták Cayley táblázatának (ejtsd: kéjli) is hívjuk Cayley francia matematikus emlékére és tiszteletére, aki véges csoportok művelettábláinak leírására vezette be ezt a táblázatos módszert.

Véges Mealy-automata Cayley táblája

A táblázat bal felső sarkába írjuk az automata nevét, első sorában felsoroljuk az állapotait, első oszlopában pedig a bemenő jeleit. A táblázat (i+1)- edik sorában és (j+1)- edik oszlopában szerepel egy két dimenziós vektor, melynek első tagja azt mondja meg hogy az automata a j- edik állapotból az i- edik bemenő jel hatására melyik állapotába megy át, a másik tagja pedig azt mutatja, hogy a j- edik állapot az i- edik bemenő jel hatására milyen kimenőjelet ad ki.

Véges Moore-automata Cayley táblája

A táblázat bal felső sarkába írjuk az automata nevét, első sorában felsoroljuk az állapotait, első oszlopában pedig a bemenő jeleit. Minden állapot fölé beírjuk az állapotjelét. Így az első sor két rész-sorra oszlik. A táblázat (i+1)- edik sorában és (j+1)- edik oszlopában szerepel az az állapot, amibe az automata a j- edik állapotból az i- edik bemenő jel hatására átmegy.

Véges kimenőjel nélküli automata Cayley táblája

A táblázat bal felső sarkába írjuk az automata nevét, első sorában felsoroljuk az állapotait, első oszlopában pedig a bemenő jeleit. (Ezesetben az állapotjel maga az állapot, így nem kell az első sorban levő állapotok fölé írni az állapotjelet mint az előző esetben.) Itt is a táblázat (i+1)- edik sorában és (j+1)- edik oszlopában szerepel az az állapot, amibe az automata a j- edik állapotból az i- edik bemenő jel hatására átmegy.

4.5. példa - A csengő, mint automata

Vegyünk egy villamos csengőt. a1 és a2 jelöljék azon helyzeteket, mikoris nyomjuk vagy nem nyomjuk a csengőt. A csengő kezdetben az q0 kezdőállapotban van, ami annak felel meg, hogy nem cseng. Az a1 jel hatására, vagyis a csengő megnyomására átmegy a csengő a q0 állapotból a q1 állapotba. Megszakítva a csengő nyomását, vagyis az a2 jel hatására a csengő átmegy nem csengő, azaz az q0 állapotba. Leírásunkat táblázatba foglalva jutunk el a csengő következő absztrakt modelljéhez:


Aq0q1
a1q1 q1
a2q0 q0

A táblázat mutatja, hogy mely jel hatására mely állapotból mely állapotba megy át az automata. Például a 3. sor 3. oszlopában levő q0 azt jelenti, hogy a2 hatására a q1 állapotból az q0 állapotba megy át az automata. Táblázatos megadásnál iniciális automata esetén rendszerint az első oszlop jelzi a kezdőállapot oszlopát (azaz annak megadását, hogy különféle bemenő jelek hatására a kezdőállapotból mely állapotokba megy át az automata). ★

Megjegyezzük, hogy némely feladatoknál célszerű a táblázatos megadásban a sorok és oszlopok szerepeinek felcserélése, vagyis ekkor az oszlopok a bemenőjeleket (illetve a λ- t, ha az automata bemenőjel nélkül is állapotot válthat), míg a sorok az automata állapotait reprezentálják. Mindenképpen célszerű jelezni a táblázat bal felső sarkában, hogy a bemenőjelek, illetve az állapotok hol találhatóak. Elfogadó automaták esetén a végállapotokat is meg kell jelölni, pl. bekeretezéssel. A biztonság kedvéért a kezdőállapotot külön is jelezhetjük, pl. egy nyilacskával.

Parciális automata esetén a táblázat néhány helye üresen maradhat, amit ∅ jelölhet. Itt jegyezzük meg, hogy nem-determinisztikus automaták esetén a táblázat cellái az állapotok-, illetve a kimenőjelek halmazának részhalmazait tatralmazzák.

Véges automaták megadása gráfokkal

Véges automaták megadásának egy másik szokásos módja a címkézett irányított gráffal történő megadás.

Véges Mealy-automata megadása gráffal

A gráf minden egyes csúcsa meg van címkézve egy állapottal, a csúcsokból kivezető minden irányított él (mely hurokél is lehet) pedig meg van címkézve egy két dimenziós vektorral. Ezen vektor első komponense egy bemenő jel, a második pedig egy kimenőjel. Determinisztikus esetben minden csúcsból pont annyi él vezet ki, ahány bemenő jel van és az élek, valamint azok címkéi adják meg, hogy egy adott állapotból egy adott bemenő jel hatására az automata milyen kimenőjellel reagál és melyik állapotba megy át. Nevezetesen, a bemenőjeleket az élek címkéinek első komponense, a kimenőjeleket az élek címkéinek második komponense, az állapot átmeneteket pedig az élek kezdő- és végcsúcsainak címkéi adják meg. Egy él kezdőcsúcsában lévő állapot az él címke első (bemenő jel) komponense hatására épp abba az állapotba megy át, mellyel az él végcsúcsa van megcímkézve.

Véges Moore-automata megadása gráffal

A gráf minden egyes csúcsa meg van címkézve egy két dimenziós vektorral, melynek első komponense egy állapot, a második komponense pedig ezen állapot állapotjele. A csúcsokból kivezető minden irányított él (mely hurokél is lehet) meg van címkézve egy bemenő jellel. (Determinisztikus esetben itt is) minden csúcsból pont annyi él vezet ki, ahány bemenő jel van és az élek, valamint azok címkéi adják meg, hogy egy adott állapotból egy adott bemenő jel hatására az automata melyik állapotba megy át. Nevezetesen, a bemenőjeleket az élek címkéi, az állapot átmeneteket és az állapotjeleket pedig az élek kezdő- és végcsúcsainak címkéi adják meg. Egy él kezdő csúcsában lévő címke első (állapot) komponense az él címke (bemenő jel) hatására épp abba az állapotba megy át, ami az él végcsúcsában levő címke első (állapot) komponense. Az átmenet utáni állapotjel pedig az él végcsúcsában levő címke második (kimenőjel) komponense.

Véges kimenőjel nélküli automata megadása gráffal

Csaknem olyan szerkezetű gráffal történik a megadás mint a Moore-automata esetén. Az egyedüli lényeges különbség, hogy a csúcsok itt az állapotokkal vannak megcímkézve (és nem két dimenziós vektorokkal mint a Moore-automata esetén). Tehát a gráf minden egyes csúcsa meg van címkézve egy állapottal, a csúcsokból kivezető minden irányított él (mely hurokél is lehet) pedig meg van címkézve egy bemenő jellel. Most is igaz a (teljesen definiált) determinisztikus esetre, hogy minden csúcsból pont annyi él vezet ki, ahány bemenő jel van és az élek, valamint azok címkéi adják meg, hogy egy adott állapotból egy adott bemenő jel hatására az automata melyik állapotba megy át. Nevezetesen, a bemenőjeleket az élek címkéi, az állapot átmeneteket pedig az élek kezdő- és végcsúcsainak címkéi adják meg. Egy él kezdőcsúcsában lévő állapot címke az él címke (bemenő jel) hatására épp abba az állapotba megy át, ami az él végcsúcsában levő állapot címke értéke.

Itt jegyezzük meg, hogy elfogadó automata esetén szokás a végállapotokat pl. dupla körrel rajzolni, míg a kezdőállapot jelölésére szokás az adott állapotba egy plusz bemenő nyilat rajzolni.

Az automata, mint algebrai struktúra: részautomata, homomorfizmus, izomorfizmus, kompatibilis osztályozás

Az absztrakt automatákat vizsgálhatjuk algebrai struktúráként is. Mint ahogy beszélni szoktunk algebrai struktúrák rész-struktúráiról, homomorfizmusairól, izomorfizmusairól, ugyanígy szokás beszélni ezekről automaták esetén is. Először Mealy-féle automatákra fogjuk megadni a megfelelő részautomata-, homomorfizmus- és izomorfizmus-fogalmakat.

Mealy automata, mint algebrai struktúra

Egy A=(Q, T, V, d, f) Mealy-automata részautomatája alatt értjük azt az A '=(Q ', T ', V ', d ', f ') Mealy-automatát, melyre Q '⊆Q, T '⊆T, V '⊆V és d '=d|Q '×T ', illetve f '=f|Q '×T '. (Szavakban, d ' a d restrikciója, azaz megszorítása Q '×T '- re, f ' pedig az f restrikciója, azaz megszorítása Q '×T '- re.) Másként mondva, d ' és f ' úgy van definiálva, hogy alakjuk d ':Q '×T '  → Q ', illetve f ':Q '×T '  → V ', s teljesül minden qQ ', aT ' pár esetén a d '(q, a)=d(q, a), illetve az f '(q, a)=f(q, a) egyenlőség. Amint látjuk, a d és az f nem minden Q '×T '- re vett restrikciója alkalmas a részautomata átmeneti, illetve kimeneti függvényének. Kell még az is, hogy a tekintett d ' restrikció a Q '- be, illetve hogy a tekintett f ' restrikció a V '- be képezzen. Azt a tényt, hogy az A ' automata részautomatája az A automatának, időnként A '⊆A- val jelöljük.

Amennyiben az Q '⊆Q, T '⊆T, V '⊆V tartalmazások valamelyike valódi tartalmazás, azaz Q '⊊Q, T '⊊T, V '⊊V legalább egyike fennáll, úgy azt is mondjuk, hogy A ' valódi részautomatája A- nak, s ezt A '⊊A- val is jelöljük.

Ha Q '⊆Q és T=T ', V=V ', akkor az A '- t az A (valódi vagy nem valódi) állapot-, vagy Q- részautomatájának hívjuk (jelekben: A '⊆QA). Ha T '⊆T és Q=Q ', V '=V, akkor A ' bemenő jel részautomatája vagy T- részautomatája (jelekben: A '⊆TA), ha pedig V '⊆V, továbbá Q '=Q, T '=T, akkor az A ' kimenőjel részautomatája, vagy V- részautomatája A- nak (jelekben: A '⊆VA). Hasonló értelemben beszélünk (Q, T)-, (Q, V)-, (T, V)- részautomatákról.

További speciális automata-típus az iniciális részautomata, mely ugyancsak definiálható az említett részautomata-típusok bármelyikére. Akkor mondjuk, hogy egy A iniciális automatának egy A ' iniciális automata iniciális részautomatája, ha mindamellett, hogy A ' az A- nak részautomatája, az is teljesül, hogy az A ' kezdőállapota épp az A kezdőállapota lesz. Hasonló értelemben mint a korábbiakban, beszélünk iniciális Q- részautomatáról, iniciális T- részautomatáról, iniciális V- részautomatáról, illetve iniciális (Q, T)-, (Q, V)-, (T, V)- részautomatáról. Minden esetben tehát a megfelelő részautomata-tulajdonság mellett még azt is elvárjuk, hogy a megfelelő részautomata-típus kezdőállapota épp az őt tartalmazó automata kezdőállapota legyen.

Azt mondjuk, hogy az A '=(Q ', T ', V ', d ', f ') Mealy-automata homomorf képe az A=(Q, T, V, d, f) Mealy-automatának (jelekben AA '), ha megadható olyan szürjektív (azaz "ra" típusú, vagy más néven ráképező) ψ1:Q  → Q ', ψ2:T  → T ', ψ3:V  → V ' leképezésekből álló ψ=(ψ1, ψ2, ψ3) leképezés-hármas, hogy teljesülnek rá az úgynevezett művelettartó tulajdonságok. Más szóval, képletben kifejeve, tetszőleges qQ, aT pár esetén

ψ1(d(q, a))=d '(ψ1(q), ψ2(a)),

illetve

ψ3(f(q, a))=f '(ψ1(q), ψ2(a)).

Világos, hogy a homomorfia mint reláció reflexív ( AA) és tranzitív ( AA ', A '∼A ''⇒AA ''). Mint ahogy beszélünk speciális részautomatákról, ugyanúgy beszélünk speciális homomorfizmusokról. Azt mondjuk, hogy az A '=(Q ', T ', V ', d ', f ') Mealy-automata állapothomomorf képe vagy Q- homomorf képe az A=(Q, T, V, d, f) Mealy-automatának (jelekben AQA '), ha az előbb definiált ψ1, ψ2, ψ3 leképezés-hármasban a ψ2 és a ψ3 választható identikus leképezésnek. Ezen feltétel mellett tehát az előbbi egyenlőségeink tetszőleges qQ, aT pár esetén a következő alakúak lesznek: ψ1(d(q, a))=d '(ψ1(q), a), illetve f(q, a)=f '(ψ1(q), a). Ebben az értelemben beszélünk tehát ψ1:Q  → Q ' Q- homomorfizmusról. Ilyenkor nem egy leképezes-hármas, hanem egyetlen ψ1 leképezés képviseli az állapothomomorfizmust (mert eltekintünk az identikus ψ2:T  → T ' és ψ3:V  → V ' leképezések szerepeltetésétől). Hasonló értelemben beszélünk ψ2:T  → T ' bemenőjel-, vagy T- homomorfizmusról, ψ3:Y  → Y ' kimenőjel-, vagy Y- homomorfizmusról, illetve ψ '={ψ1, ψ2} (Q, T)- homomorfizmusról (ahol ψ1:Q  → Q ', ψ2:T  → T '), ψ ''={ψ1, ψ3} (Q, V)- homomorfizmusról (ahol ψ1:Q  → Q ', ψ3:V  → V '), valamint ψ '''={ψ2, ψ3} (T, V)- homomorfizmusról (ahol ψ2:T  → T ', ψ3:V  → V ').

További speciális homomorfizmus típus az iniciális homomorfizmus, mely ugyancsak definiálható az említett speciális homomorfizmus-típusok (iniciális Q- homomorfizmus, iniciális T- homomorfizmus, stb.) bármelyikére is. Akkor mondjuk, hogy egy A iniciális automatának egy A ' iniciális automata iniciális homomorf képe (iniciális Q- homomorf képe, iniciális T- homomorf képe, stb.), ha mindamellett, hogy A ' a A- nak homomorf képe, az is teljesül, hogy az A ' kezdőállapota épp az A kezdőállapotának homomorf képe ( Q- homomorf képe, T- homomorf képe, stb.) lesz. Hasonló értelemben beszélünk tehát iniciális Q- homomorfizmusról, iniciális T- homomorfizmusról, iniciális V- homomorfizmusról, illetve iniciális (Q, T)-, (Q, V)-, (T, V)- homomorfizmusról. (Minden esetben a megfelelő homomorfia-tulajdonság mellett még azt is elvárjuk, hogy a homomorf kép kezdőállapota épp a ráképező automata kezdőállapota legyen.)

Amennyiben a homomorfizmus olyan, hogy az összes szereplő ráképezések bijekciók (azaz kölcsönösen egyértelmű ráképezések), akkor izomorfizmusról beszélünk. Így minden egyes speciális homomorfizmus-típusnak van egy megfelelő izomorfizmus-típusa ( Q- izomorfizmus, iniciális Q- izomorfizmus, stb.). Nyilvánvaló, hogy ha egy A Mealy-automatának egy A ' Mealy-automata izomorf képe (képletben AA '), s a φ=(φ1, φ2, φ3) leképezés-hármas az A izomorfizmusa A '- re, akkor a φ-1=(φ1-1, φ2-1, φ3-1) leképezés-hármas az A ' izomorfizmusa lesz A- ra. Az izomorfizmus tehát mint reláció, szimmetrikus. Mindamellett mint a homomorfizmus általában (és az izomorfizmus a homomorfizmusnak speciális fajtája), az izomorfizmus mint reláció reflexív és tranzitív. Az izomorfizmus mint reláció tehát ekvivalencia reláció, hisz reflexív, szimmetrikus és tranzitív. (Ugyanez természetesen vonatkozik az összes speciális izomorfizmus-típusokra is.)

Az absztrakt algebrai vizsgálatoknál az egymással izomorf struktúrákat azonosnak szokták tekinteni. Ez az úgynevezett izomorfia elv. Ezt az elvet automataelméleti vizsgálatoknál sok esetben csak részlegesen szokásos elfogadni a vizsgálatok sajátosságai miatt.

Most részletesebben foglalkozunk még a Q- homomorfizmusokkal és a velük kapcsolatban álló kompatibilis osztályozásokkal. Legyen A=(Q, T, V, d, f) tetszőleges Mealy-automata és legyen ρ tetszőleges ekvivalencia reláció a Q állapothalmazon. Ismeretes, hogy minden ekvivalencia reláció egyértelműen indukál egy osztályozást azon a halmazon, amin a reláció értelmezve van. Nevezetesen, pontosan az egymással relációban lévő elemek fognak egy osztályba sorolódni. Így a ρ reláció is indukálja a Q halmaz egy Cρ osztályozását: a p és q állapotokat akkor és csak akkor soroljuk egy osztályba, ha egymással relációban vannak, azaz pρq fennáll. A q elem által reprezentált (vagyis a q elemet tartalmazó) osztályt Cρ[q]- val jelöljük. Jelölje az osztályok halmazát, azaz legyen ={Cρ[q]|qQ}. Egy ilyen Cρ osztályozást kompatibilis osztályozásnak nevezünk, ha a hozzá tartozó ρ reláció kongruencia reláció, vagyis ha ρ- ra teljesül az a követelmény, hogy minden p, qQ párra pρq- nek tetszőleges aT esetén következménye lesz d(p, a)ρd(q, a) és f(p, a)=f(q, a).

Tegyük fel most, hogy a Q halmaz Cρ osztályozása pont egy kompatibilis osztályozás. Ekkor tehát minden p, qQ párra pρq- nek tetszőleges aT esetén következménye lesz d(p, a)ρd(q, a) és f(p, a)=f(q, a). Másként fogalmazva, feltételezzük, hogy ha valamely p, qQ pár a Cρ osztályozás szerint egy és ugyanazon Cρ osztályba esik, akkor tetszöleges aT bemenő jel esetén d(p, a) és d(q, a) is egy osztályba fognak esni, továbbá f(p, a)=f(q, a) is fennáll. Ily módon definiálható a következő automata:

ACρ=(, T, V, , ),

ahol minden qQ, aT párra

(Cρ([q], a)=Cρ[d(q, a)], (Cρ([q], a)=f(q, a).

Belátható, hogy ez az automata jól definiált és érvényes a következő:

AQACρ,

aholis a megfelelő Q- homomorfizmushoz úgy jutunk, hogy minden állapot állapothomomorf képeként az őt tartalmazó osztály adódik. Más szóval, egy automata faktorautomatái az automatának mindig Q- homomorf képei. A következő tétel azt mondja ki, hogy megfordítva, az A- homomorf képek mindig megszerkeszthetőek faktorautomataként. Ez a tétel az algebrában jól ismert Általános Homomorfia Tétel Mealy-automatákra vonatkozó speciális esete.

6. Tétel. (Általános Homomorfia Tétel Mealy-Automatákra Vonatkozó Speciális Esete) Tegyük fel, hogy az A=(Q, T, V, d, f) Mealy-automata az A '=(Q ', T ', V ', d ', f ') Mealy-automatára valamely állapothomomorfizmussal leképezhető, s tekinsük a Q állapothalmaznak azt a C osztályozását, amelynél bármely két p, qQ állapot akkor és csak akkor van egy osztályban, ha a tekintett állapothomomorfizmus szerinti képük ugyanaz. Ekkor a Q állapothalmaz ezen C osztályozása kompatibilis, s a hozzá tartozó AC faktorautomata Q- izomorf lesz az A ' automatával. Képletben,

A '∼Q A(φ)⇒A/CQ A '(C[q]  → φ(q)).

Moore automata, mint algebrai struktúra

Most Moore-féle automatákra fogjuk megadni a megfelelő részautomata-, homomorfizmus-, és izomorfizmus-fogalmakat. Ekkor egy A=(Q, T, V, d, g) Moore-automata valamely részautomatája alatt értünk egy olyan A '=(Q ', T ', V ', d ', g ') Moore-automatát, melyre Q '⊆Q, T '⊆T, V '⊆V mellett d '=d|Q '×V ' és g '=g|Q ' teljesül. Más szóval tetszőleges qQ ', aT' pár esetén d '(q, a)=d(q, a) és g '(q)=g(q). Felmerül a kérdés, hogy ha egy Moore-automatát Mealy-féle automatának tekintünk, s vesszük ezen Mealy-automata egy (Mealy-automatáknál tárgyalt értelemben tekintett) részautomatáját, vajon ez a részautomata tekinthető lesz-e ugyancsak Moore-féle automatának, illetve részautomata lesz-e abban az értelemben is, ahogy azt a Moore-automaták esetén definiáltuk. A válaszunk az, hogy a két értelemben vett részautomata fogalom (Moore automatáknál) egybeesik. Legyen ugyanis f:Q×T  → V az a leképezés, melyre a tekintett Moore-automata, tetszőleges qQ ', aT ' pár esetén eleget tesz a f(q, a)=g(d(q, a)) összefüggésnek. Tegyük fel, hogy az ezen f függvénnyel definiált, A- ból nyert B=(Q, T, V, d, f) Mealy-automatának a B '=(Q ', T ', V ', d ', f ') Mealy-automata részautomatája. Ekkor d '=d|Q '×T ' és f '=f|Q '×T '. Ily módon tetszőleges qQ ', aT ' párra d '(q, a)=d(q, a) és f '(q, a)=f(q, a). Viszont f(q, a)=g(d(q, a)), f '(q, a)=f(q, a), valamint d '(q, a)=d(q, a) miatt ekkor f '(q, a)=g(d '(q, a)). Vagyis definiálhatjuk az A ''=(Q ', T ', V, d ', g) Moore-automatát, mely nyilvánvalóan (Q, T)- részautomatája lesz A- nak abban az értelemben, ahogy azt a Moore-automatáknál definiáltuk. Természetesen az is igaz, hogy V tetszőleges olyan V ''⊆V részhalmazára, melyre {g '(a)|qQ '}⊆V '', a g ''=g|Q '' feltételnek eleget tevő A '''=(Q ', T ', V '', d ', g '') Moore-automata a A automatának Moore-féle részautomatája lesz a Moore-automatáknál tekintett értelemben. Így valóban, ez a két részautomata-fogalom Moore-automatáknál egybeesik.

A Mealy-automatákra definiált speciális részautomata-fogalmak természetes módon definiálhatók Moore-féle automatákra, s az általános Moore-féle részautomata fogalomnál tárgyaltakhoz hasonló észrevételeket nyerünk, ha a Moore-automatákat speciális Mealy-automatáknak tekintve vesszük ezen Mealy-automaták megfelelő speciális ( Q-, T-, V-, (Q, T)-, (Q, V)-, (T, V)-) részautomatáit. Ugyanez érvényben marad az iniciális Moore-automaták iniciális részautomatáira is és azok további speciális (iniciális Q- részautomata, iniciális T- részautomata, stb.) eseteire is.

Egy A=(Q, T, V, d, g) Moore-automata valamely A '=(Q ', T ', V ', d ', g ') Moore-automatára történő (általános) Moore-homomorfizmusa alatt egy olyan ψ=(ψ1, ψ2, ψ3) szürjektív leképezésekből álló leképezés-hármast értünk, melynek tagjai ψ1:Q  → Q ', ψ2:T  → T ', ψ3:V  → V ' formájúak, s teljesülnek rájuk minden qQ, aT pár esetén a

ψ1(d(q, a))=d '(ψ1(q), ψ2(a)),

illetve a

ψ3(g(q))=g '(ψ1(q))

összefüggés. Igazolható, hogy a Moore-féle homomorfizmus speciális esete a Mealy-féle automatákra értelmezett homomorfizmusnak abban az értelemben, hogy ha szereplő Moore-automatákat speciális Mealy-automatáknak tekintjük, akkor az előbb definiált Moore-féle homomorfizmus egy Mealy-féle automatákra definiált homomorfizmust fog szolgáltatni. De az is igaz, hogy lehetséges példát adni olyan Moore-automatára, melyet ha Mealy-automatának tekintünk, a Mealy-automatáknál vett értelemben homomorfan leképezhető lesz egy olyan Mealy-automatára, mely nem tekinthető Moore-automatának (lásd alábbi példában).

4.6. példa - Mealy és Moore automaták homomorfizmusa

Legyen adva egy A=({p, q}, {a, b}, {x, y}, d, g) Moore-automata, melyre d(p, a)=d(q, a)=p, d(p, b)=d(q, b)=q és g(p)=x, g(q)=y. Ezt a Moore-automatát Mealy-automatának tekintve nyerjük a B=({p, q}, {a, b}, {x, y}, d, g) Mealy-automatát, melyre f(p, a)=f(q, a)=x, f(p, b)=f(q, b)=y. Nyilvánvalóan fennáll minden q '∈{p, q}, a '∈{a, b} párra a f(q ', a ')=g(d(q ', a ')) összefüggés. Most vegyük a B '=({r}, {a, b}, {x, y}, d ', f ') Mealy-automatát, melyre d '(r, a)=d '(r, b)=r fennállása mellett f '(r, a)=x, f '(r, b)=y. Azonnal látszik, hogy a ψ(p)=ψ(q)=r összefüggéssel definiált ψ:{p, q} → {r} leképezés a B egy Q- homomorfizmusa lesz B '- re. De d '(r, a)=d '(r, b)=r és f '(r, a)≠f '(r, b) mellett az is látszik, hogy nincs olyan g ':{r} → {x, y} leképezés, melyre f '(r, a ')=g '(d '(r, a ')) fennállna minden a '∈{a, b} mellett. B ' tehát nem Moore-automata. ★


Ugyanúgy mint a Mealy-automatáknál, itt is tekinthetünk különféle speciális Moore-féle Q-, T-, V-, (Q, T)-, (Q, V)-, (T, V)- homomorfizmus típusokat, továbbá tekinthetjük mind az általános Moore-féle homomorfizmus-fogalom, mind pedig a speciális Moore-féle homomorfizmus-típusok iniciális változatait iniciális Moore-automatákra. Ugyanúgy, mint az általános esetben, ezekben az esetekben is lehet példát adni arra, hogy (Moore-automaták esetén) a Moore-féle speciális homomorfizmus-fogalmak (Moore-féle Q-, T-, V-, (Q, T)-, (Q, V)-, (T, V)- homomorfizmus és ezek iniciális változatai) is valódi speciális esetei a Mealy-féle változatoknak. Végül megjegyezzük, hogy ha a szereplő leképezések bijektívek (vagy ha egy ilyen leképezés van akkor ha a szereplő leképezés bijektív), akkor Moore-féle izomorfizmusról, illetve annak megfelelő speciális típusairól beszélünk. Izomorfizmusok esetén viszont a két féle (Mealy-féle, illetve Moore-féle) izomorfizmus-fogalmak egybeesnek.

Hasonlóan mint Mealy-automaták esetén, kimondható az algebrában jól ismert Általános Homomorfia Tétel Moore-automatákra vonatkozó speciális esete.

7. Tétel. (Általános Homomorfia Tétel Moore-Automatákra Vonatkozó Speciális Esete) Tegyük fel, hogy az A=(Q, T, V, d, g) Moore-automata az A '=(Q ', T ', V ', d ', g ') Moore-automatára valamely Moore-féle állapothomomorfizmussal leképezhető, s tekinsük a Q állapothalmaznak azt a C osztályozását, amelynél bármely két p, qQ állapot akkor és csak akkor van egy osztályban, ha a tekintett Moore-féle állapothomomorfizmus szerinti képük ugyanaz. Ekkor az Q állapothalmaz ezen C osztályozása kompatibilis, s a hozzá tartozó AC faktorautomata Q- izomorf lesz az A ' automatával. Képletben,

A '∼QA(φ)⇒A/CQA '(C[q]  → φ(q)).

Kimenőjel nélküli automata, mint algebrai struktúra

Hátramaradt még a megfelelő részautomata-, homomorfizmus-, és izomorfizmus-fogalmak kimenőjel nélküli automatákra történő definiálása. Természetesen az is igaz, hogy némi megszorítással (a kimenő jelhalmazokra vonatkozó összefüggések figyelmen kívül hagyásával) a homomorfizmus, izomorfizmus és annak egyes speciális típusai definiálhatók kimenőjel nélküli automatákra is. Így például az A=(Q, T, d) kimenőjel nélküli automatának részautomatája az A '=(Q ', T ', d ') kimenőjel nélküli automata, ha Q '⊆Q, T '⊆T, valamint d '=d|Q '×T '. Továbbá az A=(Q, T, d) kimenőjel nélküli automatának homomorf képe az A '=(Q ', T ', d ') kimenőjel nélküli automata, ha alkalmas ψ1:Q  → Q ', ψ2:T  → T ' alakú, szürjektív leképezésekből álló ψ=(ψ1, ψ2) leképezés-párra minden qQ, aT esetén ψ1(d(q, a))=d '(ψ1(q), ψ2(a)) fennáll. Az algebrában jól ismert Általános Homomorfia Tétel kimenőjel nélküli automatákra vonatkozó speciális esete formailag csaknem egybeesik a Mealy-féle automatákra vonatkozó speciális esettel.

8. Tétel. (Általános Homomorfia Tétel Kimenő Jel Nélküli Automatákra Vonatkozó Speciális Esete) Tegyük fel, hogy az A=(Q, T, d) kimenőjel nélküli automata az A '=(Q ', T ', d ') kimenőjel nélküli automatára valamely állapothomomorfizmussal leképezhető, s tekinsük a Q állapothalmaznak azt a C osztályozását, amelynél bármely két p, qQ állapot akkor és csak akkor van egy osztályban, ha a tekintett állapothomomorfizmus szerinti képük ugyanaz. Ekkor a Q állapothalmaz ezen C osztályozása kompatibilis, s a hozzá tartozó AC faktorautomata Q- izomorf lesz az A ' automatával. Képletben,

A '∼QA(φ)⇒A/CQA '(C[q]  → φ(q)).

Az elmélet további kiépítésénél elsősorban Mealy-automatákra szorítkozunk. Így ha mást nem mondunk, a jegyzetnek ebben a részében automata alatt mindig Mealy-féle automatát fogunk érteni, azaz a Mealy-automaták esetén a "Mealy" jelzőt sok esetben elhagyjuk.

Az automaták által indukált leképezések

A korábban nem üres és véges halmazokra definiált néhány fogalmat a továbbiakban tetszőleges halmazokra is értelmezni fogjuk. Így valamely (véges vagy végtelen) V halmaz elemeiből alkotott véges láncot V- beli szónak, V elemeit pedig időnként betűknek hívjuk. Ha V az üres halmaz, technikai okokból (ahogy a Kleene itaráció definíciójából is kitűnik) V* egy olyan egy elemű halmazt jelöl, melynek egyetlen eleme az üresszó: tehát ∅*={λ}. Nemcsak véges, hanem végtelen V halmazokra is (és az üres halmazra is) érvényes lesz, hogy a V*- beli összes szavak a konkatenációra (egymás mellé írásra) nézve - mint műveletre - monoidot, azaz egységelemes szabad félcsoportot fognak alkotni. Ugyancsak igaz, nemcsak véges hanem végtelen V halmazokra is, hogy a V+- beli összes szavak a konkatenációra (egymás mellé írásra) nézve - mint műveletre - szabad félcsoportot fognak alkotni. (Ha V az üres halmaz, akkor a V feletti összes nem üres szavak V+ halmaza is nyilván üres halmaz. Márpedig egy félcsoportról fel szokás tételezni, hogy legalább egy eleme van, azaz az üres halmazt nem szokás félcsoportnak tekinteni. Így V+- t nem tekintjük félcsoportnak ha V üres halmaz.) Egy pV* szó hosszát - akkor is ha V nem véges - |p|- el jelöljük, s mint korábban, a szót alkotó betűk számát értjük alatta (multiplicitásokkal együtt). A V halmaz számosságát is (akár véges, akár nem, akár üres akár nem) |V|- el jelöljük. Végül, ha p nem üres, mint korábban, ≫p jelöli a p utolsó betűjét.

Legyen A=(Q, T, V, d, f) tetszőleges Mealy-automata. A d:Q×TQ és a f:Q×TV függvények értelmezését kiterjesztjük Q×T*- ra a következő definícióval:

Legyenek d:Q×T*  → Q+, f:Q×T*  → V* úgy definiálva, hogy tetszőleges qQ és a1, …, anT esetén álljanak fenn a

d(q, a1⋅⋅⋅an)=q1⋅⋅⋅qn

és a

f(q, a1⋅⋅⋅an)=b1⋅⋅⋅bn

összefüggések, ahol q1=d(q, a1), …, qn=d(qn-1, an), illetve b1=f(q, a1), …, bn=f(qn-1, an). Emellett legyen d(q, λ)=q, f(q, λ)=λ. Ez a formális definíció annak az interpretációnak felel meg, hogy bármely qQ állapotból indulva az A automata egy bemenő jelsorozatnak egy kimenő jelsorozatot feleltet meg (az automata "szekvenciális gép"). Nevezetesen, az automata az üres bemenő szóra üres kimenő szóval reagál.

Valamely T halmaz feletti T* szabad monoidot egy V halmaz feletti V* szabad monoidba leképező α:T*  → V* leképezést alfabetikus leképezésnek hívunk. A bemenő szavak a bemenő információ, a kimenő szavak pedig a kimenő információ hordozói. Az automata az információ átalakítást alfabetikus leképezések segítségével realizálja. Így a fenti a1a2⋅⋅⋅an szóhoz az automata a fenti b1b2⋅⋅⋅bn szót rendeli hozzá. Speciálisan, az üresszónak minden állapot az üresszót felelteti meg, hisz definícióink értelmében tetszőleges qQ állapotra f(q, λ)=λ. A továbbiakban egy A=(Q, T, V, d, f) Mealy-automata minden egyes qQ állapotához hozzárendeljük a φq, A(w)=f(q, w), wT* összefüggéssel definiált φq, A:T*  → V* leképezést, melyet a qQ állapot által indukált leképezésnek is fogunk hívni. Ha nem áll fenn a félreértés veszélye, φq, A helyett a legtöbbször csak φq- t írunk. Iniciális A=(Q, T, V, q0, d, f) Mealy-automata esetén a q0 kezdőállapottal indukált φq0 leképezést az A iniciális automata által indukált leképezésnek, vagy röviden az A automata leképezésének is mondjuk és időnként φA- val jelöljük. A következő tétel George N. Raneytől (ejtsd: réni) származik.

9. Tétel. (Raney tétele) Egy φ:T*  → V* alfabetikus leképezés akkor és csak akkor automata leképezés, ha eleget tesz a következő két feltételnek:

(i) hossztartó, azaz tetszőleges wT*- ra |w|=|φ(w)|,

(ii) kezdőszelet tartó (kezdőszeletet kezdőszeletbe visz át), azaz minden w, vT*- hoz létezik olyan uV*, hogy φ(wv)=φ(w)u.

Bizonyítás. A szükségesség nyilvánvaló a kiterjesztett átmeneti és kimeneti függvények tulajdonságai miatt. Valóban, legyen A=(Q, T, V, d, f) tetszőleges Mealy-automata, s legyen qQ tetszőleges állapota. Legyen wT* tetszőleges. Ha w=λ, azaz w az üresszó, akkor f(q, λ)=λ a definíciónk szerint, azaz a φq(λ)=f(q, λ) és a f(q, λ)=λ összefüggések miatt ekkor φq(λ)=λ, amiből |φq(λ)|=|λ| nyilvánvalóan következik. φq tehát az üresszóra teljesíti a hossztartó tulajdonságot. Most legyen wT* nem üresszó, azaz legyen valamely a1, …, anT bemenő jelekre w=a1an. Ekkor, amint a d és f függvények kiterjesztésénél láttuk, alkalmas q1, …, qnQ állapotokra q1=d(q, a1), q2=d(q1, a2), …, qn=d(qn-1, an) teljesülése mellett f(q, a1⋅⋅⋅an)=f(q, a1)f(q1, a2)⋅⋅⋅f(qn-1, an). Vagyis, bevezetve a b1=f(q, a1), b2=f(q1, a2), …, bn=f(qn-1, an) jelöléseket, φq(a1⋅⋅⋅an)=f(q, a1⋅⋅⋅an)=b1⋅⋅⋅bn. Ebből nyilvánvaló, hogy |a1⋅⋅⋅an|=|b1⋅⋅⋅bn|=n, vagyis |w|=|φq(w)|, azaz φw minden T*- beli (üres vagy nem üres) szóra hossztartó.

Az üresszó T*- nak és V*- nak egységeleme, azaz tetszőleges vT*, wV* esetén λv=vλ=v, illetve λw=wλ=w. Legyen most vT* tetszőleges szó. Ekkor azt kapjuk, hogy φq(λv)=φq(v)=λφq(v). Vagyis a kezdőszelet tartó tulajdonság teljesülni fog ha az üresszó a kezdőszelet, a végszelet pedig maga a tekintett szó. (Írjunk u- t a φq(v) helyébe a φq(λv)=λφq(v) egyenlőség jobboldalán.) Hasonlóan kapjuk tetszőleges wT*- ra a φq(wλ)=φq(w)=φq(w)λ levezetést. Tehát a kezdőszelet tartó tulajdonság akkor is teljesülni fog, ha a szó kezdőszeletének magát a szót tekintjük, végszeletének pedig az üresszót. (Írjunk u- t a λ helyébe a φq(wλ)=φq(w)λ egyenlőség jobboldalán.) Most válasszuk meg a w, vT* párt úgy, hogy egyikük se legyen üres. Ekkor valamely a1, …, ak, ak+1, …, anT bemenő jelekre w=a1⋅⋅⋅ak, v=ak+1⋅⋅⋅an. Vezessük be rendre a q1=d(q, a1), q2=d(q1, a2), …, qn=d(qn-1, an) és a b1=f(q, a1), b2=f(q1, a2), …, bn=f(qn-1, an) jelöléseket. Ekkor φq(wv)=f(q, wv)=f(q, a1⋅⋅⋅an)=f(q, a1)f(q1, a2)⋅⋅⋅f(qk-1, ak)f(qk+1, ak+1)⋅⋅⋅f(qn-1, an)=b1⋅⋅⋅bkbk+1⋅⋅⋅bn és φq(w)=f(q, w)=f(q, a1⋅⋅⋅ak)=f(q, a1)f(q1, a2)⋅⋅⋅f(qk-1, ak)=b1⋅⋅⋅bk fennállnak. Ebből viszont φq(wv)=φq(w)bk+1⋅⋅⋅bn, vagyis az u=bk+1⋅⋅⋅bn választással kapjuk, hogy alkalmas uV*- ra φq(wv)=φq(w)u ebben az esetben is fennáll. φq tehát valóban kezdőszelet tartó.

Az elegendőséghez legyen φ:T*  → V* tetszőleges hossz- és kezdőszelet-tartó alfabetikus leképezés. Ekkor minden w, vT* párhoz lesz olyan uV*, hogy φ(wv)=φ(w)u.

Rögzített wT* esetén jelölje φw azt a φw:T*  → V* alfabetikus leképezést, melyre tetszőleges vT* esetén a φ(wv)=φ(w)φw(v) egyenlőség fog teljesülni. Először mutassuk meg, hogy a tetszőlegesen választott wT*- hoz tekintett φw alfabetikus leképezés is automata leképezés. Valóban, φ hossztartó volta miatt |wv|=|φ(wv)| és |w|=|φ(w)|. Másrészt φ(wv)=φ(w)φw(v) miatt |φ(w)φw(v)|=|φ(wv)|, azaz |w|+|v|=(|wv|=|φ(w)φw(v)|=)|φ(w)|+|φw(v)|. Ebből |w|=|φ(w)| értelmében |v|=|φw(v)|, azaz φw hossztartó. Mutassuk meg, hogy kezdőszelet tartó is. Legyen v, zT* tetszőleges. Ekkor φ(wvz)=φ(w)φw(vz) és φ(wvz)=φ(wv)φwv(z)=φ(w)φw(v)φwv(z) is teljesülni fognak a φ kezdőszelet tartó volta miatt. Így φ(w)φw(vz)=φ(w)φw(v)φwv(z) is teljesül. Ám szabad monoidban a szavak egyenlősége betűről-betűre való egyenlőséget jelent, azaz a legutóbb kapott egyenlőségünkből φw(vz)=φw(v)φwv(z) is következik. Más szóval, tetszőleges v, zT*- hoz létezik olyan u(=φwv(z))∈V*, hogy φw(vz)=φw(v)u teljesül. Tehát φw is kezdőszelet tartó. Azt kaptuk tehát, hogy tetszőleges wT* esetén φw is automata leképezés. Tetszőleges wT* esetén a φw automata leképezést a továbbiakban a φ leképezés állapotának fogjuk hívni. Legyen Qφ={φw|wT*} és definiáljuk az Aφ=(Qφ, T, V, φλ, dφ, fφ) Mealy-automatát úgy, hogy minden φwQφ, aT esetén dφ(φw, a)=φwa, fφ(φw, a)=φw(a). A tételhez azt kell még megmutatni, hogy Aφ automata a φ leképezést indukálja.

Mivel az üresszó az egyetlen olyan szó, melynek hossza nulla, a φ hossztartó volta miatt φ(λ)=λ. Így tekintettel arra, hogy az üresszó mint bemenő szó hatására egy Mealy-automata kimenő szóként definíció szerint az üresszót adja ki, fφ(φλ, λ)=φ(λ)(=λ) teljesülni fog. Most legyen w=a1⋅⋅⋅an egy nem üres bemenő szó, ahol a1, …, anT tetszőleges bemenő jelek. Az Aφ automata definíciója értelmében, valamint amiatt, hogy tetszőleges uT* szóra λu=u fennáll, d(φλ, w)=d(φλ, a1⋅⋅⋅an)=φλa1φλa1a2⋅⋅⋅φλa1⋅⋅⋅an=φa1φa1a2⋅⋅⋅φa1⋅⋅⋅an. Ekkor azonban, ugyancsak az Aφ automata definíciója alapján φAφ=fφ(φλ,w)=fφ(φλ,a1⋅⋅⋅an)=fφ(φλ,a1)fφ(φa1,a2)⋅⋅⋅fφ(φa1⋅⋅⋅an-1,an)=φλ(a1)φa1(a2)⋅⋅⋅φa1⋅⋅⋅an-1(an)= =λφλ(a1)φa1(a2)⋅⋅⋅φa1⋅⋅⋅an-1(an)=φ(λ)φλ(a1)φa1(a2)⋅⋅⋅φa1⋅⋅⋅an-1(an)=φ(λa1)φa1(a2)⋅⋅⋅φa1⋅⋅⋅an-1(an)= =φ(λa1a2)φa1a2(a3)⋅⋅⋅φa1⋅⋅⋅an-1(an)=⋅⋅⋅=φ(λa1⋅⋅⋅an)=φ(a1⋅⋅⋅an)=φ(w).

Viszont épp ezt kellett bizonyítani. ∎

Nyilvánvaló, hogy ha egy automata leképezés egy véges iniciális automatával indukálható, akkor ennek az automata leképezésnek legfeljebb annyi állapota lehet mint az őt indukáló véges automatának. Másrészt az is világos, hogy a Raney tételének bizonyításában szereplő Aφ automata véges, ha a bemenő és kimenő jelhalmazok végessége mellett a tekintett φ automata leképezés véges állapotú. Így a következő állításhoz jutunk.

1. Következmény. Egy véges halmaz feletti monoidot egy véges halmaz feletti monoidba képező automata leképezés akkor és csakis akkor indukálható véges automatában, ha állapotainak száma véges.

2. Megjegyzés. Egy φ:T*  → V* automata leképezés indukálható a következő Mealy-automatával is: Aφ=(T*, T, V, λ, dφ, fφ), ahol tetszőleges wT*, aT párra dφ(w, a)=wa, fφ(w, a)=≫φ(wa) (ahol ≫φ(wa) a φ(wa) utolsó betűjét jelöli).

Az Aφ automatát a φ automata leképezéshez tartozó alsó automatának, az Aφ automatát pedig a φ automata leképezéshez tartozó felső automatának hívjuk. Világos, hogy a felső automata mindig végtelen állapotú.

Egy iniciális automatát iniciálisan összefüggőnek hívunk, ha a kezdőállapotából minden állapotba visz át bemenő szó. Képletben, az A=(Q, T, V, q0, d, f) iniciális Mealy automata iniciálisan összefüggő, ha minden qQ állapothoz létezik olyan wT* bemenő szó, hogy d(q0, w)=q, azaz a q0 állapotból indulva a w szót feldolgozva az automata a q állapotba jut. (Megjegyezzük, hogy w=λ választással ez a kezdőállapotra mindig fennáll.) Nyilvánvaló, hogy egy automata leképezéshez tartozó alsó és felső automaták iniciálisan összefüggőek. Bizonyítás nélkül megemlítjük a következő tételt.

10. Tétel. Ha A tetszőleges olyan iniciálisan összefüggő automata, amely a φ leképezést indukálja, akkor az A automata az Aφ felső automatának állapothomomorf képe, s ugyanekkor az Aφ alsó automata pedig A- nak állapothomomorf képe.

3. Megjegyzés. Egy φ automata leképezés előállításánál felhasznált automaták közül a hozzá tartozó alsó automata a lehető leggazdaságosabb, a hozzá tartozó felső automata pedig a lehető leggazdaságtalanabb. Így az optimális előállításnál a φ automata leképezéshez tartozó alsó automatát kell előállítani. Ez így azonban csupán elméleti eredmény, mivel adott w, vT* párra általában nehéz ellenőrizni, hogy fennáll-e a φw=φv egyenlőség.

11. Tétel. Tetszőleges T halmazra T* összes önmagába történő automata leképezéseinek KT halmaza a leképezések szokásos szorzására nézve monoidot, azaz egységelemes félcsoportot alkot.

4. Megjegyzés. Egy A=(Q, T, V, q0, d, f) által indukált leképezésnek a B=(Q ', T ', V ', q'0, d ', f ') automata által indukált leképezéssel való szorzása értelmezhető, ha VT '. Ezt a szorzat-leképezést a B automata indukálja, ha B '=(Q×Q ', T, V ', (q0, q'0), d '', f '') alakú, ahol tetszőleges (q, q ')∈Q×Q ', aT párra d ''((q, q '), a)=(d(q, a), d '(q ', f(q, a)) és f ''((q, q '), a)=f '(q ', f(q, a)). A B ' automatát az A automata B automatával történő soros kapcsolásának vagy szuperpozíciójának hívjuk.

12. Tétel. Egy T halmaz feletti T* monoid összes önmagába történő, véges automaták által indukálható leképezéseinek LT halmaza a leképezések szokásos szorzására nézve részfélcsoportot alkot a KT félcsoportban.

13. Tétel. Tetszőleges T halmazra az T* összes önmagába történő bijektív automata leképezéseinek AT halmaza a leképezések szokásos szorzására nézve részcsoportot alkot a KT félcsoportban.

14. Tétel. Egy T halmaz feletti T* monoid összes önmagába történő, véges automaták által indukálható bijektív leképezéseinek GT halmaza a leképezések szokásos szorzására nézve részcsoportot alkot a KT félcsoportban és az AT csoportban.

Egy S félcsoport generátorrendszerén értjük S- beli elemek egy H részhalmazát, ha S minden eleme előáll H- beli elemek szorzataként. H minimális generátorrendszere, vagy más néven bázisa S- nek, ha amellett hogy S- nek generátorrendszere, tetszőleges hH mellett H∖{h} már nem generátorrendszere S- nek. Hasonlóan, egy G csoport generátorrendszerén értjük G- beli elemek egy H részhalmazát, ha G minden eleme előáll olyan szorzatként, melynek minden tényezője vagy egy H- beli elem, vagy pedig egy H- beli elem inverze. Ugyanúgy mint félcsoportok esetén, H minimális generátorrendszere, vagy más néven bázisa G- nek, ha amellett hogy G- nek generátorrendszere, tetszőleges hH mellett H∖{h} már nem generátorrendszere G- nek. (Az itt szereplő S és G betűk az angol group (=csoport), illetve semi-group szavak kezdőbetűi, a generatív nyelvtanoknál szereplő S, illetve G- vel való azonosságuk csak a véletlen műve!)

Nem nehéz belátni, hogy ha T egy egyelemű halmaz vagy T az üres halmaz, akkor KT, LT, AT, GT mindegyike egy elemű. Így ebben az esetben mindegyiknek önmaga a bázisa. Ha T legalább két elemű, akkor érvényes a következő állítás.

15. Tétel. Egy legalább két elemű T halmaz esetén KT- nek és LT- nek nincs bázisa.

Nyitott kérdés, hogy van-e bázisa AT- nek, illetve GT- nek egy legalább két elemű T halmaz esetén.

Végül megjegyezzük, hogy Moore-automata esetén az átmeneti és jelfüggvények kiterjesztése hasonlóképp történik mint Mealy-automata esetén. Legyen A=(Q, T, V, d, g) tetszőleges Moore-automata. A d:Q×TQ és a g:Q → V függvények értelmezését kiterjesztjük Q×T*- ra, illetve Q+- ra a következő definícióval:

Legyenek d:Q×T*  → Q+, g:Q*  → V* úgy definiálva, hogy tetszőleges qQ és a1, …, anT esetén álljanak fenn a

d(q, a1⋅⋅⋅an)=q1⋅⋅⋅qn

és a

g(q1⋅⋅⋅qn)=b1⋅⋅⋅bn

összefüggések, ahol q1=d(q, a1), …, qn=d(qn-1, an), illetve b1=g(q1), …, bn=g(qn). Emellett legyen d(q, λ)=q, g(λ)=λ. Ekkor a q állapot által indukált φq leképezésre φq(λ)=g(λ)=λ, illetve tetszőleges a1, …, anT- re φq(a1⋅⋅⋅an)=g(q1⋅⋅⋅qn), aholis q1=d(q, a1), q2=d(q1, a2), …, qn=d(qn-1, an). Később látni fogjuk, hogy minden iniciális Mealy-automatával indukálható automata leképezés indukálható iniciális Moore-automatával is. Sőt az is igaz, hogy ha egy automata leképezés véges iniciális Mealy automatával indukálható, akkor indukálható véges iniciális Moore-automatával is. Így a fejezetben tárgyaltak Moore-automatákra ugyanígy érvényben maradnak. Az átmeneti függvény természetesen kiterjeszthető kimenőjel nélküli automata esetén is. Nevezetesen, ugyanúgy mint Moore-automata esetén, egy A=(Q, T, d) tetszőleges kimenőjel nélküli automatára a d:Q×TQ függvény értelmezését úgy terjesztjük ki Q×T*- ra, hogy d:Q×T*  → Q+- t a következőképp definiáljuk: Legyen d:Q×T*  → Q+ úgy definiálva, hogy tetszőleges qQ és a1, …, anT esetén álljanak fenn a

d(q, a1⋅⋅⋅an)=q1⋅⋅⋅qn

összefüggések, ahol q1=d(q, a1), …, qn=d(qn-1, an). Emellett legyen d(q, λ)=q. Ekkor a q állapot által indukált φq leképezésre φq(λ)=λ, illetve tetszőleges a1, …, anT- re φq(a1⋅⋅⋅an)=q1⋅⋅⋅qn, aholis q1=d(q, a1), q2=d(q1, a2), …, qn=d(qn-1, an).

Mint korábban megjegyeztük, egy A=(Q, T, d) kimenőjel nélküli automatát szokás olyan A=(Q, T, V, d, f) Mealy-automatának tekinteni, ahol V=Q és f=d. Ez a kiterjesztett átmeneti és kimeneti függvényekre csak korlátozottan érvényes. Nevezetesen, ha wT* nem üres, akkor a kiterjesztett kimeneti függvényt is úgy értelmezzük, hogy f(q, w)=d(q, w), qQ. Az üresszó esetén viszont a kiterjesztett átmeneti és kimeneti függvényeket ebben az esetben (tehát egy A=(Q, T, Q, d, f) Mealy automatának tekintett A=(Q, T, d) kimenőjel nélküli automaták esetén) úgy definiáljuk, hogy d(q, λ)=q és f(q, λ)=λ minden qQ- ra. Ekkor egy A=(Q, T, d) kimenőjel nélküli automata esetén egy qQ állapot által indukált φq leképezés alatt értjük azt a φq:Q*  → Q* leképezést, melyre tetszőleges wT* esetén

φq(w)=d(q, w), ha wλ,

φq(w)=λ, ha w=λ.

A kimenőjel nélküli automaták által indukált automata leképezések speciális automata leképezések, s nem minden (Mealy- vagy Moore-féle automatával indukálható) automata leképezés indukálható véges automatával.

4.7. példa - Automataleképezések

Legyen A=({q0, q}, {a, b}, {a, b}, q0, d, f) egy iniciális Mealy-automata, ahol d(q0, a)=d(q, a)=q0, d(q0, b)=d(q, b)=q, f(q0, a)=f(q, a)=f(q0, b)=a, f(q, b)=b. Ekkor φq0(aababb)=aaaaab, amihez akárhogy is szerkesztünk meg egy iniciális kimenőjel nélküli B=(Q ', T, p0, d ') automatát, φp0(aababb)≠aaaaab fog teljesülni. Tehát valóban, nem minden automata leképezés indukálható kimenőjel nélküli automatával. ★


Redukált automata. Véges determinisztikus automaták minimalizálása

Az előző fejezetben láttuk, hogy tetszőleges automata alfabetikus leképezések egy sokaságát indukálja. (Minden állapot indukál egy alfabetikus leképezést, melyek közül egyesek egybeeshetnek.) Jelölje FA={φq|qQ} egy A=(Q, T, V, d, f) által indukált leképezések sokaságát. Egy ilyen sokaságot az A automata által indukált leképezések családjának is fogunk hívni. Előfordulhat, hogy p, qQ, pq és mégis φp=φq. Most azzal a kérdéssel foglalkozunk, hogy ha egy F leképezés családhoz sikerül már olyan A automatát találnunk, melyre FA=F teljesül, hogyan tudjuk helyettesíteni A- t egy ugyanilyen tulajdonságú, de minimális állapotszámú A0 automatával. (Természetesen ennek a dolognak akkor van igazán értelme, ha az állapothalmaz véges.) Definiáljunk egy A=(Q, T, V, d, f) Mealy-automata állapothalmazán egy ρA relációt: qρApφq=φp (azaz qρQpf(q, w)=f(p, w) minden w bemenő szóra). Könnyen belátható, hogy az így definiált ρA reláció kongruencia, s ráadásul a ρA- hoz tartozó CA kompatibilis osztályozás maximális abban az értelemben, hogy minden más kompatibilis osztályozás CA- nak finomítása. Ezesetben CA- t az A automatához tartozó maximális kompatibilis osztályozásnak is hívjuk, az AρA faktorautomatát pedig az A -hoz tartozó redukált automatának mondjuk. Általában, egy A=(Q, T, V, d, f) Mealy-automatát redukáltnak nevezünk, ha tetszőleges p, qQ pár esetén pρAqp=q.

Ehhez két fontos megjegyzésünk van:

5. Megjegyzés.

1. Egy automatához tartozó redukált automata a legkisebb állapotszámmal (illetve végtelen automaták esetén a legkisebb számosságú állapothalmazzal) bíró olyan automata, amely ugyanazt a leképezés családot állítja elő, mint az illető automata.

2. Egy automata akkor és csak akkor redukált, ha Q- izomorf saját magával.

Egy A automata minimalizálásán az A- hoz tartozó A0 redukált automata megszerkesztését értjük. Ebben a vonatkozásban az A0 redukált automatát minimálisnak hívjuk. A következő, véges automaták minimalizálására szolgáló algoritmus D. D. Aufenkamp és F. E. Hohn nevéhez fűződik.

Aufenkamp-Hohn-féle minimalizációs algoritmus

Egy véges A=(Q, T, V, d, f) automata esetén az A0 redukált automatához úgy jutunk el, hogy a

p, qQ:(pρAq⇔∀wT*:f(p, w)=f(q, w))

(azaz minden p, qQ pár esetén pρAq akkor és csak akkor, ha f(p, w)=f(q, w) bármely wT* esetén fennáll) relációhoz tartozó CA osztályozást osztályozások egy C1, C2, … sorozatán keresztül szerkesztjük meg, melyeket a következőképp definiálunk:

(i)∀p, qQ:(C1[p]=C1[q]⇔∀aT:f(p, a)=f(q, a))

(azaz minden p, qQ párra a C1 osztályozás szerint p és q akkor és csak akkor esnek egy osztályba, ha ugyanazon bemenő jelre ugyanazon kimenőjellel reagálnak);

(ii) ha i ≥ 1Ci+1[p]=Ci+1[q]⇔Ci[p]=Ci[q]∀aT:Ci[d(p, a)]=Ci[d(q, a)].

(Azaz ha i ≥ 1, úgy a Ci+1 osztályozás szerint p és q akkor és csak akkor esnek egy osztályba, ha egyrészt már Ci szerint is egy osztályba esnek, másrészt pedig minden bemenő jel hatására egy és ugyanazon Ci szerinti osztályba mennek át.)

Először megszerkesztjük a Q állapothalmaz C1 szerinti osztályait, mikoris pontosan akkor tartozik két állapot egy osztályba, amikor minden egyes bemenő jel hatására ugyanazt a kimenőjelet adják ki. (Lásd (i).) Ezután minden egyes m>1- re megszerkesztjük a Cm szerinti osztályokat egészen addig, míg Cm=Cm+1 teljesül. Látni fogjuk, hogy ilyen m létezik, s nagysága legfeljebb |Q|-1. Igazolni fogjuk, hogy ez a Cm osztályozás épp a Q maximális kompatibilis osztályozása. Ezután a redukált automata megszerkesztése van csak hátra, melynek szerkezete ACm=(Cm, T, V, dCm, fCm), ahol minden Cm[q]∈Cm, aT- re dCm(Cm[q], a)=Cm[d(q, a)], illetve fCm(Cm[q], a)=f(q, a). Speciálisan, ha az eredeti automata iniciális volt, és a kezdő állapota q0 volt, akkor a redukált automata is választható iniciálisnak, éspedig úgy, hogy a kezdőállapotát Cm[q0]- nak választjuk.

Kiegészítés az Aufenkamp-Hohn minimalizációs algoritmushoz

Ha a célunk nem az automatához tartozó (redukált) minimális állapotszámú automata, hanem csupán a φq0- t indukáló minimális iniciális automata meghatározása, akkor ehhez az A=(Q, T, V, q0, d, f) minimalizálandó automata helyett annak a kezdőállapotból elérhető állapotok által meghatározott, azaz a Q '={≫d(q0, w)|wT*} állapothalmazzal rendelkező A '=(Q ', T, V, q0, d ', f ') iniciálisan összefüggő állapot-részautomatáját minimalizáljuk. (Emlékeztetőül: a ≫d(q0, w)∈Q+ szó utolsó betűjét jelenti.) A q0- ból el nem érhető állapotok ugyanis nem játszanak szerepet a φq0 leképezés indukálásában (az összes q0- ból elérhető állapot viszont igen). Mivel A végessége miatt ekkor a kezdőállapotból csak azok az állapotok érhetők el, melyek legfeljebb |Q|-1 hosszúságú szavakkal elérhetők, a Q állapothalmaz Q ' részhalmaza algoritmikusan meghatározható. Erre a következő módszer kínálkozik: Legyen először Q0={q0}. Ezután minden i ≥ 1- re legyen Qi+1={q|∃q '∈Qi, aT:d(q ', a)=q}. Ha valamely i ≥ 1- re elérjük, hogy Qi=Qi+1, akkor Q '=Qi. Nyilván az ilyen i- re i ≤ |Q|-1 teljesül.

Most meg fogjuk mutatni, hogy az algoritmus és a kiegészítő megjegyzésünk korrekt. Érvényesek a következő megállapítások:

1. Segédtétel. Tetszőleges p, qQ párra és i ≥ 1 természetes számra Ci[p]=Ci[q] akkor és csak akkor áll fenn, ha minden i- nél nem hosszabb wT* bemenő szóra f(p, w)=f(q, w).

Bizonyítás. Először azt igazoljuk, hogy tetszőleges p, qQ párra és i ≥ 1 természetes számra Ci[p]=Ci[q]- nek következménye, hogy minden i- nél nem hosszabb wX* bemenő szóra f(p, w)=f(q, w). Állításunkat teljes indukcióval fogjuk igazolni.

Ha i=1, akkor egy i- nél nem hosszabb szó vagy az üresszó, vagy a bemenő jelhalmaz egy eleme. Az üresszóra f(p)=λ minden pQ pár esetén fennáll, tehát f(p, λ)=f(q, λ)(=λ) akkor is igaz, ha speciálisan C1[p]=C1[q] valamely p, qQ- ra. Amennyiben viszont aT és C1[p]=C1[q], akkor f(p, a)=f(q, a) is teljesülni fog összhangban a C1 osztályozás definíciójával.

Tegyük fel most, hogy valamely i ≥ 1- re igaz az állítás. Mutassuk meg, hogy ekkor i+1- re is igaz. Először észrevesszük, hogy minden olyan p, qQ párra, melyre Ci+1[p]=Ci+1[q] fennáll, definíciónk értelmében Ci[p]=Ci[q] is igaz. Ekkor viszont az indukciós feltevésünk miatt minden olyan wT*- ra, melyre w nem hosszabb i- nél, f(p, w)=f(q, w). Azt kell tehát csak belátnunk, hogy amennyiben egy w szó hossza i+1, akkor minden olyan p, qQ párra, melyre Ci+1[p]=Ci+1[q], fennáll a d(p, w)=d(q, w) egyenlőség. Igen ám, de ekkor w előáll w=av alakban, ahol aT, s ugyanekkor vT* pedig i hosszúságú. Ekkor tehát f(p, w)=f(p, av)=f(p, a)f(d(p, a), v), illetve f(q, w)=f(q, av)=f(q, a)f(d(q, a), v). Ci+1[p]=Ci+1[q] fennállása mellett C1[p]=C1[q] is igaz, amiből f(p, a)=f(q, a) következik (lásd i=1 eset). Másrészt Ci+1[p]=Ci+1[q] definíció szerint azt is jelenti, hogy minden aT esetén Ci[d(p, a)]=Ci[d(q, a)]. Viszont az indukciós feltevésünk értelmében ekkor minden i hosszúságú vT* szóra f(d(p, a), v)=f(d(q, a), v). Ehhez figyelembe véve az előbb megállapított f(p, a)=f(q, a) egyenlőséget, fennáll az f(p, a)f(d(p, a), v)=f(q, a)f(d(q, a), v) egyenlőség is, ami épp azt jelenti, hogy f(p, av)=f(q, av). Ez viszont w=av értelmében az f(p, w)=f(q, w) egyenlőséghez vezet.

Most azt tegyük fel, hogy adott p, qQ és i ≥ 1 mellett f(p, w)=f(q, w) teljesül minden wT*, |w| ≤ i feltételnek eleget tevő bemenő szóra. Igazoljuk teljes indukcióval, hogy ekkor Ci[p]=Ci[q].

Ha i=1 és minden aT- re (azaz minden wT*, |w|=1- re) f(p, a)=f(q, a), akkor C1[p]=C1[q] definíció szerint teljesül. Tegyük fel ezután indukciós feltevésként, hogy valamely rögzített i ≥ 1- re valahányszor egy p, qQ párra f(p, w)=f(q, w) minden |w| ≤ i- nek eleget tevő wT* bemenő szó esetén fennáll, mindannyiszor Ci[p]=Ci[q]. Legyen ezután minden i+1- nél nem hosszabb nem üres wT* bemenő szó esetén f(p, w)=f(q, w). Ekkor w=av, ahol aT és vT*, ahol |v| ≤ i. Ez többek között azt jelenti, hogy minden aT- re és i- nél nem hosszabb vT*- ra f(d(p, a), v)=f(d(q, a), v). Indukciós feltevésünk értelmében így Ci[d(p, a)]=Ci[d(q, a)] tetszőleges aT esetén teljesül. Másrészt ha f(p, w)=f(q, w) minden i+1- nél nem hosszabb w, vT* bemenő szóra teljesül, úgy teljesül minden i- nél nem hosszabb bemenő szóra is. Ez viszont indukciós feltevésünk miatt Ci[p]=Ci[q]- t eredményezi. Ezt összevetve azzal, hogy Ci[d(p, a)]=Ci[d(q, a)] tetszőleges aT esetén teljesül, definíció szerint kapjuk, hogy Ci+1[p]=Ci+1[q]. Ezzel az állítást igazoltuk. ∎

2. Segédtétel. Ha valamely m ≥ 1 természetes számra Cm=Cm+1, akkor minden j, k ≥ m természetes számpárra Cj=Ck.

Bizonyítás. Állításunkhoz nyilván elég igazolni, hogy ha Cm=Cm+1 akkor Cm+1=Cm+2. Legyen tehát valamely m ≥ 1 természetes számra Cm=Cm+1, s legyen valamely p, qQ állapotpárra Cm+1[p]=Cm+1[q]. Ekkor viszont definíció szerint tetszőleges aT- re teljesülni fog a Cm[d(p, a)]=Cm[d(q, a)] egyenlőség. Viszont Cm=Cm+1 miatt így Cm+1[d(p, a)]=Cm+1[d(q, a)] is fenn fog állni. Ez viszont a feltételezett Cm+1[p]=Cm+1[q] egyenlőséggel együtt azt fogja definíció szerint eredményezni, hogy Cm+2[p]=Cm+2[q]. Vagyis azt kaptuk, hogy ha Cm=Cm+1, akor minden olyan p, qQ párra, melyre Cm+1[p]=Cm+1[q], fennáll Cm+2[p]=Cm+2[q] is. Ez pedig pontosan azt jelenti, hogy Cm+1=Cm+2. ∎

Most igazoljuk, hogy az Aufenkamp-Hohn féle algoritmus valóban korrekt.

16. Tétel. Az Aufenkamp-Hohn féle algoritmus véges sok lépésben minimális redukált automatát állít elő.

Bizonyítás. Ha C1 szerint minden állapot egy osztályba esik, akkor minden állapot egy és ugyanazon kimenőjellel reagál egy és ugyanazon bemenő jelre. Ekkor C1=C2 nyilvánvaló. Ez esetben tehát a 2. Segédtétel értelmében a minimális automata egyetlen állapottal fog rendelkezni, s egy-egy bemenő jelre ez a redukált automata egy és ugynazon kimenőjelet adja ki, mint az eredeti automata bármelyik állapota.

Tegyük fel most, hogy |C1|>1. Ha C1=C2, akkor m=1 és ismét a C1 a kívánt maximális kongruencia osztályozás. Ellenkező esetben C2- nek legalább eggyel több osztályt kell tartalmaznia mint C1- nek, vagyis legalább három osztályt. Ezt folytatva lesz egy egyre finomodó osztályozás rendszerünk, ahol minden egyes osztályozás legalább eggyel több osztályt fog tartalmazni mint az előző. Tekintettel arra, hogy feltételeztük |C1|>1- t, továbbá figyelembe véve, hogy legfeljebb |Q| számú osztálya lehet egy-egy osztályozásnak (hisz egy adott osztályozásnál minden osztálynak kell legalább egy Q- beli elemet tartalmaznia), azt kapjuk, hogy lesz olyan m ≤ |Q|-1, melyre Cm=Cm+1. Valóban, ha veszünk valamely m>1- re egy egyre finomodó olyan osztályozás rendszert, melyre C1C2⊃⋅⋅⋅⊃Cm, akkor ha C1- nek legalább két, C2- ek legalább három, …, Cm- nek legalább m+1 eleme van és összesen |Q| számú állapotunk van (vagyis legfeljebb |Q| számú osztálya lehet egy-egy osztályozásnak), akkor m+1 ≤ |Q| fennállása azt is jelenti, hogy m ≤ |Q|-1. Így viszont valóban lesz olyan m ≤ |Q|-1, mikoris Cm=Cm+1, ami a 2. Segédtétel értelmében azt is jelenti, hogy teszőleges i ≥ m- re Ci=Cm. Ez azonban az 1. Segédtétel miatt azt is eredményezi, hogy teszőleges olyan p, qQ állapotpárra, melyre Cm[p]=Cm[q], teljesülni fog a f(p, w)=f(q, w) egyenlőség, akármilyen hosszú is a tekintett wT* bemenő szó. Ezzel beláttuk, hogy Cm egy kongruencia osztályozás, aholis m ≤ |Q|-1.

Be kell még látnunk, hogy Cm valóban maximális kongruencia osztályozás, vagyis ha két állapot nem tartozik Cm szerint egy osztályba, akkor az általuk indukált leképezések különbözőek. Legyen p, qQ két állapot, mely Cm szerint nem tartozik egy osztályba. Ha már C1 szerint sem tartoznak egy osztályba, akkor valamely aT- re f(p, a)≠f(q, a) és akkor valóban igaz, hogy φpφq. Ellenkező esetben van egy maximális k<m, hogy Ck[p]=Ck[q], ám Ck+1[p]≠Ck+1[q]. Ekkor viszont a 1. Segédtétel alapján van legalább egy olyan k+1 hosszúságú wT* szó, hogy d(p, w)≠d(q, w). (Nevezetesen, minden k+1- nél rövidebb wT* szóra Ck[p]=Ck[q] miatt f(p, w)=f(q, w), másrészről pedig Ck+1[p]≠Ck+1[q] miatt van legalább egy olyan k+1- nél nem hosszabb wT* szó, melyre f(p, w)≠f(q, w). A két állítás együttes fennállása azt jelenti, hogy f(p, w)≠f(q, w) legalább egy k+1 hosszú szóra teljesül.)

Be kell még látnunk azt is hogy a kiegészítő megjegyzésünk is korrekt. A fentiek alapján az is igaz, hogy ha az A automata iniciális és kezdőállapota q0, akkor a redukált automatát is választhatjuk iniciálisnak oly módon, hogy kezdőállapotának a Cm[q0] osztályt választjuk. Ez az osztály is a φq0 leképezést fogja a redukált automatában indukálni ugyanúgy, mint ahogy a q0 a φq0 leképezést indukálja A- ban.

Ha egy iniciális A=(Q, T, V, q0, d, f) véges automatához keressük azt a minimális automatát, mely φq0- t indukálja, először célszerű a Q állapothalmaz Q '={q '∈Q|q '=≫d(q0, w), wT*} részhalmazát meghatározni, s azután a Q ' állapothalmaz által meghatározott A ' iniciális állapot-részautomatát minimalizálni. Világos ugyanis, hogy ez az A ' iniciális állapot-részautomata ugyancsak a φq0- t indukálja, azaz A- ban a QQ '- beli, azaz az q0- ból el nem érhető állapotok ugyanis φq0 indukálásában nem játszanak szerepet. Jelölje B a A- hoz tartozó iniciális redukált automatát, B ' pedig a A '- höz tartozó iniciális redukált automatát. Világos, hogy B ' ugyanúgy a φq0- t fogja indukálni, mint B. Mivel Q ' részhalmaza a Q- nak, az is világos, hogy a B ' állapothalmaza részhalmaza a B állapothalmazának. Így ha Q'B jelöli a B ', továbbá QB jelöli a B állapothalmazát, |Q'B| ≤ |QB|.

Esetleg lehet olyan qQQ ' állapotunk, melyre φq∉{φq '|q'Q '}. Ekkor azonban |Q'B|<|QB|, vagyis ilyen esetben B nem egy minimális, φq0 leképezést indukáló automata. Tehát valóban, egy φq0 leképezést indukáló minimális automata keresésénel célszerű először a vizsgált A iniciálisan összefüggő állapot részautomatáját meghatározni, majd az Aufenkamp-Hohn féle algoritmust erre az iniciális állapot részautomatára alkalmazni.

Kérdés még, hogy a Q ' meghatározásához javasolt algoritmusunk korrekt-e. Az világos, hogy minden i ≥ 1- re a Qi halmaz definíció szerint a q0- ból legfeljebb i hosszúságú szavakkal elérhető állapotok halmaza. Így azt kell csak kimutatnunk, hogy ha egy állapot q0- ból elérhető, akkor elérhető |Q|-1- nél nem hosszabb bemenő szóval is.

Tetszőleges w, v, uT* esetén ≫d(q0, wv)=≫d(q0, w) mellett ≫d(q0, wvu)=≫d(q0, wu) nyilván fennáll. Így ha valamely qQ állapothoz van olyan w ' szó, hogy ≫d(q0, w ')=q, akkor w ' megválaszható úgy, hogy bármely két különböző w '', w '''∈T* kezdőszeletére ≫d(q0, w '')≠≫d(q0, w ''') teljesüljön. Ekkor viszont w ' hossza legfeljebb |Q|-1 lehet, különben az ismétlődés elkerülhetetlen. Így megvizsgálva azt, hogy melyek azok az állapotok, melyek elérhetők a kezdőállapotból legfeljebb |Q|-1 hosszú szóval, megkapjuk Q '- t. Az is világos, hogy ha valamely k<|Q|-1- re a q0- ból legfeljebb k hosszú szóval elérhető állapotok Qk halmaza egybeesik a q0- ból legfeljebb k+1 hosszú szóval elérhető állapotok halmazával, úgy a q0- ból elérhető összes állapotok halmaza Qk- val megegyezik. Valóban, ha a legfeljebb k hosszú bemenő szavakkal ugyanazokat az állapotokat érjük el mint a legfeljebb k+1 hosszú szavakkal, akkor minden l ≥ 0- ra a legfeljebb k hosszú hosszú bemenő szavakkal ugyanazokat az állapotokat érjük el mint a legfeljebb k+l, azaz bármilyen hosszú szavakkal. Az Aufenkamp-Hohn-féle minimalizációs algoritmushoz vett kiegészítő megjegyzésünk tehát ugyancsak korrekt. ∎

4.8. példa - Mealy-automata minimalizálása 1.feladat


Készítsük el az Aufenkamp-Hohn-féle minimalizációs algoritmus segítségével az
A=({a1,a2,a3,a4,a5,a6},{x,y},{u,v,w},d,f)
Mealy-automatához tartozó A0 minimális állapotszámú automatát! (d és f a következő táblázattal adott):

A a1 a2 a3 a4 a5 a6
x (a2,u) (a1,w) (a1,u) (a5,w) (a4,u) (a3,u)
y (a3,v) (a2,v) (a4,v) (a4,v) (a3,v) (a2,v)


Megoldás:
(I.) A feladat megoldásának első lépéseként különböző osztályokba fogjuk sorolni az
A automata belső állapotait. A kiinduló oszályokban két állapot akkor és csak akkor
esik egy osztályba, ha ugyanarra a bemenő jelre ugyanazzal a kimenőjellel reagálnak.

Jelen esetben:
C1={a1,a3,a5,a6},{a2,a4}.
Ezek után a Ci+1-edik osztályozás esetén két állapot akkor esik egy
osztályba, ha egyrészt a Ci-edik osztályozás esetén is azonos
osztályba tartoztak, másrészt pedig minden bemenő jel hatására azonos
Ci-beli osztályban található állapotokba mennek át. Az osztályozás
véget ér, amennyiben Ci=Ci+1 valamely i ≥ 1 esetén.

Jelen esetben:
C2={a1,a5},{a3,a6},{a2,a4}.
C3={a1,a5},{a3},{a6},{a2,a4}.
C4={a1,a5},{a3},{a6},{a2,a4}.
Mivel C3=C4, ezért az osztályozás véget ért. A C3 osztályait
jelöljük valamely új betűvel, például b-vel:
b1={a1,a5},b2={a3},b3={a6},b4={a2,a4}.
(II.) Készítsük el az A automatával ekvivalens, minimális állapotszámú A0 automatát,
mely állapothalmazát az osztályozás és az új jelölés bevezetése után kapott bi betűk alkotják,
- a bemenő- és kimenőjeleinek halmaza megegyezik az A automata megfelelő jeleinek halmazával,
- az átmenetfüggvényét megkapjuk úgy, hogy megnézzük, hogy az adott bi osztálybeli állapotok
az adott bemenő jel hatására mely bj osztálybeli állapotokba mentek át az A automata esetén
- és végül az aktuális bi osztályhoz tartozó kimenőjelet megkapjuk, ha megnézzük,
hogy az adott bi osztálybeli állapotok az adott bemenő jel hatására mely
kimenőjelet szolgáltatták az A automata működése közben.
Jelen esetben:
A0=({b1,b2,b3,b4},{x,y},(u,v,w),d',f'). Ahol d ' és f ' a következő táblázattal adott:
 

A0 b1 b2 b3 b4
x (b4,u) (b1,u) (b2,u) (b1,w)
y (b2,v) (b4,v) (b4,v) (b4,v)


4.9. példa - Mealy-automata minimalizálása 2.feladat


Készítsük el az Aufenkamp-Hohn-féle minimalizációs algoritmus segítségével az
A=({a1,a2,a3,a4,a5,a6,a7},{x,y},{u,v,w},d,f)
Mealy-automatához tartozó A0 minimális állapotszámú automatát!
Ahol d és f a következő táblázattal adott:

A a1 a2 a3 a4 a5 a6 a7
x (a2,w) (a3,w) (a2,w) (a7,w) (a6,w) (a5,w) (a4,w)
y (a4,u) (a2,v) (a4,u) (a2,v) (a4,u) (a5,v) (a2,u)


Megoldás:
(I.)
C1={a1,a3,a5,a7},{a2,a4,a6}.
C2={a1,a3,a5,a7},{a2,a4},{a6}.
C3={a1,a3,a7},{a5},{a2,a4},{a6}.
C4={a1,a3,a7},{a5},{a2,a4},{a6}.
b1={a1,a3,a7},b2={a5},b3={a2,a4},b4={a6}.
(II.)
A0=({b1,b2,b3,b4},{x,y},(u,v,w),d',f').
Ahol d ' és f ' a következő táblázattal adott:
 

A0 b1 b2 b3 b4
x (b3,w) (b4,w) (b1,w) (b2,w)
y (b3,u) (b3,u) (b3,v) (b2,v)


4.10. példa - Mealy-automata minimalizálása 3.feladat


Készítsük el az Aufenkamp-Hohn-féle minimalizációs algoritmus segítségével az
A=({a1,a2,a3,a4,a5},{x,y,z},{u,v},d,f)
Mealy-automatához tartozó A0 minimális állapotszámú automatát!

A a1 a2 a3 a4 a5
x (a2,u) (a2,v) (a2,u) (a5,v) (a4,v)
y (a4,u) (a3,u) (a1,u) (a3,u) (a3,u)
z (a5,v) (a5,u) (a1,v) (a5,u) (a2,u)


Megoldás:
(I.)
C1={a1,a3},{a2,a4,a5}.
C2={a1},{a3},{a2,a4,a5}.
C3={a1},{a3},{a2,a4,a5}.
b1={a1},b2={a3},b3={a2,a4,a5}.
(II.)
A0=({b1,b2,b3},{x,y,z},(u,v),d',f').
 

A0 b1 b2 b3
x (b3,u) (b3,u) (b3,v)
y (b3,u) (b1,u) (b2,u)
z (b3,v) (b1,v) (b3,u)


4.11. példa - Mealy-automata minimalizálása 4.feladat


Készítsük el az Aufenkamp-Hohn-féle minimalizációs algoritmus segítségével az
A=({a1,a2,a3,a4,a5,a6,a7,a8},{x,y},{u,v},d,f)
Mealy-automatához tartozó A0 minimális állapotszámú automatát!

A a1 a2 a3 a4 a5 a6 a7 a8
x (a8,u) (a3,v) (a8,u) (a1,v) (a8,u) (a4,u) (a3,v) (a5,v)
y (a2,v) (a1,u) (a7,u) (a2,v) (a7,v) (a2,v) (a6,u) (a3,v)


Megoldás:
(I.)
C1={a1,a5,a6},{a2,a7},{a3},{a4,a8}.
C2={a1,a5,a6},{a2,a7},{a3},{a4},{a8}.
C3={a1,a5},{a6},{a2,a7},{a3},{a4},{a8}.
C4={a1,a5},{a6},{a2},{a7},{a3},{a4},{a8}.
C5={a1},{a5},{a6},{a2},{a7},{a3},{a4},{a8}.                            
Ebben az esetben - mivel a C5 osztályozás esetén minden ai állapot külön osztályba esik, -
az A automata már minimális, így tovább nem minimalizálható, azaz A0=A. ★


Aufenkamp-Hohn féle minimalizációs algoritmus Moore-automatákhoz adaptált változata

Megjegyezzük először, hogy ha egy Moore-automatát Mealy-automatának tekintünk, s minimalizáljuk, az eredmény nem feltétlenül lesz Moore-féle automata (lásd Mealy és Moore automaták homomorfizmusa). Ha az A=(Q, T, V, d, g) Moore-automatához azt a minimális állapotszámú Moore-féle automatát akarjuk meghatározni, mely ugyanazt a leképezési családot indukálja, mint az eredeti Moore-automata, akkor az Aufenkamp-Hohn féle algoritmust egy kicsit módosítanunk kell.

Egy véges A=(Q, T, V, d, g) Moore-automata esetén az A0 redukált Moore-automatához úgy jutunk el, hogy definiálunk egy kongruencia relációt a következőképpen:

p, qQ:(pρAq⇔∀a1, …, anT:g(p1⋅⋅⋅pn)=g(q1⋅⋅⋅qn)),

p1=d(p, a1), p2=d(p1, a2), …, pn=d(pn-1, an),

q1=d(q, a1), q2=d(q1, a2), …, qn=d(qn-1, an)

(azaz minden p, qQ pár esetén pρAq akkor és csak akkor, ha g(p1⋅⋅⋅pn)=g(q1⋅⋅⋅qn) fennáll minden olyan p1, …, pn, q1, …, qnQ esetén, melyekre p1=d(p, a1), p2=d(p1, a2), …, pn=d(pn-1, an), q1=d(q, a1), q2=d(q1, a2), …, qn=d(qn-1, an) fennáll valamely a1, …, anT bemenő jelek esetén).

Ekkor a ρA relációhoz tartozó CA osztályozást osztályozások egy C1, C2, … sorozatán keresztül szerkesztjük meg, melyeket a következőképp definiálunk:

(i) ∀p, qQ:(C1[p]=C1[q]⇔∀aT:g(p)=g(q))

(azaz minden p, qQ párra a C1 osztályozás szerint p és q akkor és csak akkor esnek egy osztályba, ha ugyanaz az állapotjelük);

(ii) ha i ≥ 1Ci+1[p]=Ci+1[q]⇔Ci[p]=Ci[q]∀aT:Ci[d(p, a)]=Ci[d(q, a)].

(Azaz ha i ≥ 1, akkor amint a Mealy-automatáknál, a Ci+1 osztályozás szerint p és q akkor és csak akkor esnek egy osztályba, ha egyrészt már Ci szerint is egy osztályba esnek, másrészt pedig minden bemenő jel hatására egy és ugyanazon Ci szerinti osztályba mennek át.)

A továbbiakban formailag a Moore-automatákra adaptált Aufenkamp-Hohn féle eljárás csaknem teljesen megegyezik a Mealy-automatáknál tárgyaltakkal. Először megszerkesztjük a Q állapothalmaz C1 szerinti osztályait, mikoris pontosan akkor tartozik két állapot egy osztályba, amikor ugyanaz az állapotjelük. (Lásd (i) pont, fentebb.) Ezután minden egyes m>1- re megszerkesztjük a Cm szerinti osztályokat egészen addig, míg Cm=Cm+1 teljesül. Ugyanúgy mint Mealy-automaták esetén, ilyen m létezik, s nagysága legfeljebb |Q|-1. Ez a Cm osztályozás épp a Q (Moore-változatú) maximális kompatibilis osztályozása. Ezután a Moore-féle redukált automata megszerkesztése van csak hátra, melynek szerkezete ACm=(Cm, T, V, dCm, gCm), aholis minden Cm[q]∈Cm, aT- re dCm(Cm[q], a)=Cm[d(q, a)], illetve gCm(Cm[q])=g(q). Speciálisan, ha az eredeti automata iniciális volt, és a kezdő állapota q0 volt, akkor a redukált automata is választható iniciálisnak, éspedig úgy, hogy a kezdőállapotát Cm[q0]- nak választjuk.

Kiegészítés az Aufenkamp-Hohn-féle minimalizációs algoritmus Moore-automatákhoz adaptált változatához

Ha a célunk nem az automatához tartozó (redukált) minimális állapotszámú Moore-automata, hanem csupán az a φq0- t indukáló minimális iniciális Moore-automata meghatározása, akkor ehhez az A=(Q, T, V, q0, d, g) minimalizálandó automata helyett annak a kezdőállapotból elérhető állapotok által meghatározott, azaz a Q '={≫d(q0, w)|wT*} állapothalmazzal rendelkező A=(Q ', T, V, q0, d ', g ') iniciálisan összefüggő állapot-részautomatáját minimalizáljuk. A q0- ból el nem érhető állapotok ugyanis nem játszanak szerepet a φq0 leképezés indukálásában (az összes q0- ból elérhető állapot viszont igen). Mivel A végessége miatt ekkor a kezdőállapotból csak azok az állapotok érhetők el, melyek legfeljebb |Q|-1 hosszúságú szavakkal elérhetők, a Q állapothalmaz Q ' részhalmaza algoritmikusan meghatározható. Erre ugyanaz a módszer kínálkozik mint Mealy-automaták esetén: Legyen először Q0={q0}. Ezután minden i ≥ 1- re legyen Qi+1={q|∃q '∈Qi, aT:d(q ', a)=q}. Ha valamely i ≥ 1- re elérjük, hogy Qi=Qi+1, akkor Q '=Qi. Nyilván az ilyen i- re i ≤ |Q|-1 teljesül.

4.12. példa - Moore-automata minimalizálása 1.feladat


Készítsük el az Aufenkamp-Hohn-féle minimalizációs algoritmus segítségével az
A=({a1,a2,a3,a4,a5,a6},{x,y},{u,v,w},d,g)
Moore-automatához tartozó A0 minimális állapotszámú automatát!
d és g függvények a következő táblázattal adottak:

 uvuuww
A a1 a2 a3 a4 a5 a6
x a4 a1 a4 a1 a1 a3
y a1 a3 a6 a4 a6 a5


Megoldás:
(I.) A feladat megoldásának első lépéseként különböző osztályokba fogjuk sorolni az
A automata belső állapotait. A kiinduló oszályokban két állapot akkor és csak akkor
esik egy osztályba, ha ugyanarra a bemenő jelre ugyanazzal a kimenőjellel reagálnak.

Jelen esetben:
C1={a1,a3,a4},{a2},{a5,a6}.
Ezek után a Ci+1-edik osztályozás esetén két állapot akkor esik egy
osztályba, ha egyrészt a Ci-edik osztályozás esetén is azonos
osztályba tartoztak, másrészt pedig minden bemenő jel hatására azonos
Ci-beli osztályban található állapotokba mennek át. Az osztályozás
véget ér, amennyiben Ci=Ci+1 valamely i ≥ 1 esetén.

Jelen esetben:
C2={a1,a4},{a2},{a3},{a5,a6}.
C3={a1,a4},{a2},{a3},{a5},{a6}.
C4={a1,a4},{a2},{a3},{a5},{a6}.
Mivel C3=C4, ezért az osztályozás véget ért. A C3 osztályait
jelöljük valamely új betűvel, például b-vel:
b1={a1,a4},b2={a2},b3={a3},b4={a5},b5={a6}.
(II.) Készítsük el az A automatával ekvivalens, minimális állapotszámú A0 automatát,
mely állapothalmazát az osztályozás és az új jelölés bevezetése után kapott bi betűk alkotják,
- a bemenő- és kimenőjeleinek halmaza megegyezik az A automata megfelelő jeleinek halmazával,
- az átmenetfüggvényét megkapjuk úgy, hogy megnézzük, hogy az adott bi osztálybeli állapotok
az adott bemenő jel hatására mely bj osztálybeli állapotokba mentek át az A automata esetén
- és végül az aktuális bi osztályhoz tartozó kimenőjelet megkapjuk, ha megnézzük,
hogy az adott bi osztálybeli állapotok az adott bemenő jel hatására mely
kimenőjelet szolgáltatták az A automata működése közben.
Jelen esetben:
A0=({b1,b2,b3,b4,b5},{x,y},(u,v,w),d',g').
Táblázattal:
 

  u v u w w
A0 b1 b2 b3 b4 b5
x b1 b1 b1 b1 b3
y b1 b3 b5 b5 b4


4.13. példa - Moore-automata minimalizálása 2.feladat


Készítsük el az Aufenkamp-Hohn-féle minimalizációs algoritmus segítségével az
A=({a1,a2,a3,a4,a5},{x,y},{u,v},d,g)
Moore-automatához tartozó A0 minimális állapotszámú automatát!

 uvvuu
A a1 a2 a3 a4 a5
x a2 a4 a4 a2 a3
y a5 a3 a2 a3 a1


Megoldás:
(I.)
C1={a1,a4,a5},{a2,a3}.
C2={a1,a5},{a4},{a2,a3}.
C3={a1,a5},{a4},{a2,a3}.
b1={a1,a5},b2={a4},b3={a2,a3}.
(II.)
A0=({b1,b2,b3},{x,y},(u,v),d',g').
Ahol d ' és g ' a következő táblázattal adott:
 

  u u v
A0 b1 b2 b3
x b3 b3 b2
y b1 b3 b3


4.14. példa - Moore-automata minimalizálása 3.feladat


Készítsük el az Aufenkamp-Hohn-féle minimalizációs algoritmus segítségével az
A=({a1,a2,a3,a4,a5},{x,y,z},{u,v,w},d,g)
Moore-automatához tartozó A0 minimális állapotszámú automatát!

 uvvww
A a1 a2 a3 a4 a5
x a2 a4 a4 a2 a3
y a5 a4 a5 a3 a3
z a1 a3 a2 a5 a4


Megoldás:
(I.)
C1={a1},{a2,a3},{a4,a5}.
C2={a1},{a2,a3},{a4,a5}.
b1={a1},b2={a2,a3},b3={a4,a5}.
(II.)
A0=({b1,b2,b3},{x,y,z},(u,v,w),d',g').
 

  u v w
A0 b1 b2 b3
x b2 b3 b2
y b3 b3 b2
z b1 b2 b3


Minimalizációs algoritmus kimenőjel nélküli automatákra

Tetszőleges A=(Q, T, d) kimenőjel nélküli automata esetén valamely qQ állapot és nem üres w bemenő szó esetén a kimenő szót d(q, w)- vel azonosítottuk. Ha a bemenő szó az üresszó, akkor viszont kimenő szónak ugyancsak az üresszót tekintettük minden állapotra vonatkozóan, mint a Mealy-automatáknál.

Ezek szerint egy egymástól különböző p, qQ állapotpár nem tartozhat egy osztályba, ha valamely (nem feltétlen különböző) r, sQ állapotpárra és a, bT bemenő jelekre d(r, a)=p és d(s, b)=q. Másképp mondva, két p, qQ állapot csak úgy tartozhat egy osztályba, ha egyrészt minden aT- re d(p, a)=d(q, a), másrészt legalább egy r∈{p, q}- ra akárhogy is adjuk meg az sQ, aT párt, d(s, a)≠r.

Így az Aufenkamp-Hohn féle minimalizációs algoritmus helyett kimenőjel nélküli automatákra a következő algoritmust alkalmazzuk:

Egy véges A=(Q, T, d) kimenőjel nélküli automata esetén az A0 redukált kimenőjel nélküli automatához is úgy jutunk el, hogy először képezzük a Q egy olyan Q0 részhalmazát, mely tartalmaz minden olyan qQ állapotot, melyhez van olyan pQ, aT, hogy d(p, a)=q. Vezessük be továbbá a C0=QQ0 jelölést. Mindaddig, míg valamely i ≥ 0- ra Ci üres nem lesz, hajtsuk végre a következő algoritmust:

Tegyük fel, hogy valamely i ≥ 0- ra Qi és Ci adottak. Legyen valamely tetszőlegesen rögzített rCi- re Qi+1=Qi∪{r}. Eután Ci+1- t Ci- ből úgy képezzük, hogy Ci elemei közül elhagyunk minden olyan r '∈Ci elemet, melyhez van olyan pQi+1, hogy tetszőleges aT mellett d(r ', a)=d(p, a). Ha Ci+1=∅, akkor készen vagyunk, különben növeljük eggyel i értékét, s ismételjük meg az előző lépést.

Világos, hogy Q végessége miatt ez az eljárás véges lépésben valamely i ≥ 0- ra véget ér, s az is könnyen igazolható, hogy a fenti algoritmus végén minden qQ- hoz tartozik pontosan egy olyan pQi+1, hogy tetszőleges aT mellett d(q, a)=d(p, a). Ekkor megkapjuk a B=(Q ', T, d ') kimenőjel nélküli automatát, ahol Q '=Qi+1 és d '=d|Q '×T mellett B olyan (kimenőjel nélküli) állapot részautomatája lesz A- nak, hogy minden qQ- hoz található olyan pQ ', hogy tetszőleges aT mellett d(q, a)=d(p, a). Ez a B kimenőjel nélküli automata lesz az A kimenőjel nélküli automatához tartozó redukált automata.

Kiegészítés a minimalizációs algoritmus kimenőjel nélküli automatákra ismertetett változatához

Ha a célunk nem a kimenőjel nélküli automatához tartozó (redukált) minimális állapotszámú kimenőjel nélküli automata, hanem csupán az a φq0- t indukáló minimális iniciális kimenőjel nélküli automata meghatározása, akkor ehhez az A=(Q, T, q0, d) minimalizálandó kimenőjel nélküli automata helyett annak a kezdő állapotból elérhető állapotok által meghatározott, azaz a Q '={≫d(q0, w)|wT*} állapothalmazzal rendelkező A=(Q ', T, q0, d ') iniciálisan összefüggő (kimenőjel nélküli) állapot-részautomatáját minimalizáljuk. A q0- ból el nem érhető állapotok ugyanis most sem játszanak szerepet a φq0 leképezés indukálásában (az összes q0- ból elérhető állapotok viszont igen). Mivel A végessége miatt ekkor a kezdőállapotból csak azok az állapotok érhetők el, melyek legfeljebb |Q|-1 hosszúságú szavakkal elérhetők, a Q állapothalmaz Q ' részhalmaza algoritmikusan meghatározható. Erre itt is a következő módszer kínálkozik: Legyen először Q0={q0}. Ezután minden i ≥ 1- re legyen Qi+1={q|∃q '∈Qi, aT:d(q ', a)=q}. Ha valamely i ≥ 1- re elérjük, hogy Qi=Qi+1, akkor Q '=Qi. Nyilván az ilyen i- re i ≤ |Q|-1 teljesül. A q0- ból elérhető minden q '∈Q ' állapot nyilván rendelkezik azzal a tulajdonsággal, hogy alkalmas pQ ', aT párra d(p, a)=q '. Így ha q0 is elérhető önmagából, akkor A ' egy minimális, φq0- t indukáló automata lesz. Ugyancsak az lesz, ha minden qQ '∖{q0} esetén van olyan aT, melyre d(q0, a)≠d(q, a). Ellenkező esetben valamely qQ '- re d(q, a)=d(q0, a) minden aT- re fennáll, továbbá tetszőleges (az üresszótól különböző) wT+ bemenő szó esetén d(q0, w)≠zq0 semmilyen zQ* esetén sem. Ha van olyan wT+ (üresszótól különböző) bemenő szó, hogy d(q, w)=zq valamely zQ*- ra, akkor világos, hogy A ' ismét redukált automata lesz. Ellenkező esetben amellett, hogy az q, q0Q párra d(q, a)=d(q0, a), aT fennáll, {≫d(q0, w)|wT+}∩{q0, q}=∅ és {≫d(q, w)|wT+}∩{q0, q}=∅ is teljesül. Világos hogy ebben az esetben a d ''(p, a)=d(p, a), pQ '∖{q0}, aT átmeneti függvénnyel definiált B=(Q '∖{q0}, T, q, d '') egy olyan minimális állapotszámú iniciális kimenőjel nélküli automata lesz, melynek qQ '∖{q0} kezdőállapota pont φq0- t indukálja.

Csak megemlítjük itt, hogy hasonló módszerrel minimalizálhatóak a Rabin-Scott (felismerő-) automaták is (részleteket lásd Véges determinisztikus elfogadó automaták minimalizálása fejezetben). Ezesetben, az Aufenkamp-Hohn algoritmus első osztályozó lépésében két csoportot képzünk, mégpedig a végállapotok, illetve a többi állapot halmazát.

Automaták ekvivalenciája, Gill tétele

A közös T, V halmazokkal bíró A=(Q, T, V, d, f) és A '=(Q ', T, V, d ', f ') automaták pQ és qQ ' állapotait egymással ekvivalens állapotoknak mondjuk (jelekben: pq), ha p és q az A, illetve B automatában ugyanazt a leképezést indukálja, azaz φp, A=φq, B. Magukat az A és B automatákat ekvivalenseknek nevezzük, ha bármelyikük bármely állapotához van a másiknak ezzel az állapottal ekvivalens állapota, azaz FA=FB. Speciálisan, két iniciális automatát akkor mondunk ekvivalensnek, ha kezdőállapotaik ekvivalensek egymással.

17. Tétel. Tetszőleges A automatával ekvivalens automaták M halmazában létezik olyan Q- izomorfiától eltekintve egyértelműen meghatározott A ' automata, amely bármely M- beli automatának Q- homomorf képe. A '- ként választható bármely M- beli automatához tartozó redukált automata.

Mint már korábban láttuk, egy Moore-automata tekinthető speciális Mealy-automatának. Az elmélet kiépítése folyamán fontos szerepet tölt be Arthur Gill (ejtsd: gill, zsill) következő eredménye, mely azt igazolja, hogy információ átalakítás szempontjából a két automata fogalom ekvivalens.

18. Tétel. (Gill tétele) Bármely Mealy-automatához létezik vele ekvivalens Moore-automata. Emellett, ha a Mealy-automata véges, akkor a hozzá megkonstruált, vele ekvivalens Moore-automata is választható végesnek.

Bizonyítás. Legyen A=(Q, T, V, d, f) tetszőleges Mealy-automata. Egy vele ekvivalens Moore-automatát a következőképp konstruálhatunk meg:

Legyen A '=(Q ', T, V, d ', f '), ahol Q '=QQ×T, továbbá tetszőleges q '∈Q ', aT párra

d '(q ', a)=(q ', a) ha q '∈Q,

d '(q ', a)=(d(q, a '), a) ha q '=(q, a ')∈Q×T,

f '(q ', a)=f(q, a) ha q '∈Q,

f '(q ', a)=f(d(q, a '), a) ha q '=(q, a ')∈Q×T.

Mutassuk meg, hogy minden qQ, wT* esetén f(q, w)=f '(q, w). Nyilván elegendő nem üres szavakra szorítkoznunk. Legyen tehát a1, …anT és tekintsük a q, q1=d(q, a1), q2=d(q1, a2), …, qn-1=d(qn-2, an-1) állapotokhoz a b1=f(q, a1), b2=f(q1, a2), …, bn=f(qn-1, an) kimenőjeleket. Világos, hogy ekkor definíció szerint f(q, a1⋅⋅⋅an)=b1⋅⋅⋅bn. Másrészről, d ' és f ' definíciója alapján d '(q, a1)=(q, a1), d '((q, a1), a2)=(d(q, a1), a2)=(q1, a2), d '((q1, a2), a3)=(d(q1, a2), a3)=(q2, a3), illetve f '(q, a1)=f(q, a1)=b1, f '((q, a1), a2)=f(d(q, a1), a2)=f(q1, a2)=b2, f '((q1, a2), a3)= =f(d(q1, a2), a3)=f(q2, a3)=b3, …, f '((qn-2, an-1), an)=f(d(qn-2, an-1), an)=f(qn-1, an)=bn. Azt kaptuk tehát, hogy minden qQ- ra és wT*- ra f(q, w)=f '(q, w). Így minden A- beli állapothoz létezik vele ekvivalens A '- beli állapot. Természetesen az is igaz, hogy A ' minden A- ba eső állapotához van vele ekvivalens A- beli állapot. A és A ' ekvivalenciájához azt kell még megmutatnunk, hogy az A ' minden Q×T- beli állapotához is van az A automatának vele ekvivalens állapota. Ehhez legyen (q, a)∈Q×T. Mutassuk meg, hogy A ' ezen állapota ekvivalens az A automata d(q, a) állapotával, azaz f '((q, a), w)=f(d(q, a), w) minden wT* mellett fennáll. Nyilván most is elegendő nem üres szavakra szorítkoznunk. Legyen tehát a1, …anT.

Ekkor, az előbb kapott f(q, a1⋅⋅⋅an)=f '(q, a1⋅⋅⋅an) egyenlőség fennállásának igazolásához hasonlóan bizonyítható, hogy f(q, aa1⋅⋅⋅an)=f '(q, aa1⋅⋅⋅an). Viszont f(q, aa1⋅⋅⋅an)=f(q, a)f(d(q, a), a1⋅⋅⋅an) és f '(q, aa1⋅⋅⋅an)==f(q, a)f '(d '(q, a), a1⋅⋅⋅an) definíció szerint fennáll. d ' definíciója szerint d '(q, a)=(q, a), így f '(q, aa1⋅⋅⋅an)=f(q, a)f '((q, a), a1⋅⋅⋅an). Másrészt f ' definíciója értelmében f '(q, a)=f(q, a). Mivel két kimenő szó pontosan akkor egyezik meg, ha betűről-betűre megegyezik, f '(q, a)=f(q, a) és f(q, aa1⋅⋅⋅an)=f '(q, aa1⋅⋅⋅an) teljesülése ekkor f(q, aa1⋅⋅⋅an)=f(q, a)f(d(q, a), a1⋅⋅⋅an) és f '(q, aa1⋅⋅⋅an)=f(q, a)f '((q, a), a1⋅⋅⋅an) miatt azt jelenti, hogy f(d(q, a), a1⋅⋅⋅an)=f '((q, a), a1⋅⋅⋅an). Ezzel kimutattuk, hogy az A automata d(q, a) állapota ekvivalens az A ' automata (q, a) állapotával. Tehát, valóban, az A automata ekvivalens az A ' automatával.

A tételhez azt fogjuk még igazolni, hogy A ' tekinthető Moore-automatának. Legyen g:Q ' → V tetszőleges olyan leképezés, melyre minden (q, a ')∈Q×T esetén g((q, a '))=f(q, a). ( g(q) értéke qQ mellett tehát lényegtelen azon túlmenően, hogy egy rögzített V- beli elemnek kell lennie.) Ekkor tetszőleges qQ, aT párra f '(q, a)=f(q, a), ahol (q, a)=d '(q, a). Mindemellett ha (q, a ')∈Q×T, úgy minden aT- re f '((q, a '), a)=f(d(q, a '), a), ahol (d(q, a '), a)=d '((q, a '), a). Tehát g:Q → V speciális megválasztásával kaptuk, hogy minden qQ ', aT párra f '(q, a)=g(d '(q, a)). A ' így valóban Moore-automata. (Érdekességként megjegyezzük, hogy g(q) értékére qQ esetén annyit kellett csak kikötni, hogy egy tetszőlegesen rögzített V- beli elem legyen.)

Végül, ha A véges, akkor Q, T, V rendre véges halmazok. Ekkor viszont Q '=QQ×T is véges, ami ( T és V végessége mellett) azt jelenti, hogy A ' véges. Ezzel a tételt teljesen bebizonyítottuk. ∎

6. Megjegyzés. Gill tétele lehetővé teszi, hogy bizonyos kérdésekben csupán Moore-automatákra szorítkozzunk, hiszen a tétel azt fejezi ki, hogy már Moore-automatákkal előállíthatók mindazok a leképezések, amelyek előállíthatók az általánosabb Mealy-automatákkal. Másrészt azt is meg kell jegyeznünk, hogy a Moore-automaták osztálya számos fontos konstrukcióra nézve nem zárt (állapothomomorf kép képzése, redukált automata meghatározása, stb.). Emiatt mégsem szorítkozhatunk minden vizsgálatnál csak a Moore-automaták osztályára. Végül megjegyezzük azt is, hogy hasonló konstrukcióval igazolható Gill tétele iniciális automatákra is.

Automaták analízise és szintézise

Az automaták és az automata leképezések kapcsolatát illetően két ellentétes kérdés fogalmazható meg:

I. Ha adva van egy iniciális automata, meghatározandó az áltata indukált leképezés (analízis);

II. Ha adva van egy iniciális automata leképezés, meghatározandó legalább egy olyan iniciális automata, amely ezt a leképezést indukálja (szintézis).

A szintézis feladata nem egyértelmű ugyan, de egyértelművé tehető a minimalizálás feladatával. Az analízis és szintézis feladata csak akkor fogalmazható meg egzakt módon, ha megállapodunk abban, hogy mit értünk automata és automata leképezés megadásán. Véges automatát például táblázattal adunk meg. Véges automata leképezések megadása általában problémát jelent a végtelen értelmezési tartomány miatt. Bizonyos esetekben viszont közönséges módon is lehetséges. Így például T={a}, V={b, c} mellett a λ → λ, anbcn-1, n ≥ 1 kifejezésekkel nyilván egy automata leképezést adtunk meg. Az analízis és szintézis probléma ebben a megfogalmazásban túl általános. Ezért ezt a két feladatot csak véges automatákra fogalmazzuk meg pontosabban. Ezzel kapcsolatban egy további probléma is fellép:

0. Meg kell adnunk a véges automaták által indukálható automata leképezéseknek az automatáktól független leírását. Más szóval, keresnünk kell olyan írásmódot, amelyben el tudjuk dönteni, hogy valamely, ebben az írásmódban megadott automata leképezés indukálható-e véges automatával vagy sem. Ezek után véges automatákra az analízis és szintézis problémája így fogalmazható meg:

I'. Bármely adott véges automata esetén meg kell tudnunk adni a szóban forgó írásmódban azt a leképezést, amelyet az automata indukál;

II'. Ha ebben az írásmódban meg van adva egy véges automata által indukálható leképezés, akkor meg kell tudnunk adni legalább egy olyan automatát, mely ezt a leképezést indukálja és állapothalmaza véges.

Egy olyan leképezés megadási módszer, mely eleget tesz a 0.,I.',II.' feltételeknek, először S. C. Kleene talált 1956-ban, bevezetve a reguláris kifejezés fogalmát (lásd: Reguláris kifejezések). Ennek megfelelően az automaták szintézisét és analízisét véges elfogadó automatákra tesszük meg a reguláris nyelvek fejezetben.

Egyéb véges automaták

Az automataelméleti fejezet zárásaként röviden bemutatunk néhány további véges automata fajtát.

Irányítható automaták

Vegyünk egy űrszondát, ami a Hold körül kering, ennek következtében időnként elveszítjük vele a kapcsolatot. A műholdat egy véges állapotú rendszernek tekintve, ha tudjuk milyen állapotban van, akkor megfelelő input jeleket küldve neki mi irányítjuk. Amikor viszont nincs kapcsolatunk vele, nincs ellenőrzésünk alatt, így nem tudjuk hogy milyen állapotba kerül. Az ilyen esetekre kínálnak megoldást az irányítható automaták.

6. Definíció. Az A=(Q, V, d) automatát irányíthatónak vagy szinkronizálhatónak neveztük, ha van olyan uV bemenő szó és qQ állapot, hogy minden pQ állapot esetén d(p, u)=zq, ahol zQ*. Az ilyen u szót az A automata irányító vagy szinkronizáló szavának, q- t pedig az A automata irányított vagy szinkronizált állapotának nevezzük. ★

Tehát, visszatérve az űrszondánkra, mindig amikor felvesszük vele kapcsolatot először egy irányító szót küldünk neki, és ezután tudjuk vele elvégeztetni a kívánt tevékenységeket. Természetesen az egyik kézenfekvő megoldás, ha pl. egy adott jelre (egybetűs irányítószóra) az automata irányított állapotba kerül, másrészt viszont, ha limitált ábécével kommunikálunk, nem biztos hogy érdemes egy betűt erre a célra fenntartani.

Jan Černý (ejtsd: csernyi) 1964-ben írt dolgozatában fogalmazta meg következő sejtését az irányítható automatákról.

1. Sejtés. Ha egy n állapotú automata irányítható, akkor a legrövidebb szinkronizáló szavának hossza nem több, mint (n-1)2.

A Černý sejtés az automaták algebrai elméletének egyik legrégebbi megoldatlan problémája.

Automata több kezdőállapottal

Az üresszavas átmeneteket is megengedve könnyen belátható, hogy az automata ugyanazt a nyelvosztályt fogadja el, akkor is ha több kezdőállapotot engedünk meg. A következő módszerrel egyszerűen konstruálhatunk egy kezdőállapottal rendelkező üresszavas átmenetes véges automatát, amely ugyanazt a nyelvet fogadja el, mint az eredeti több kezdőállapottal rendelkező automatánk.

Legyen (Q, I, T, d, F) adott, ahol Q az állapotok véges halmaza, IQ a kezdőállapotok halmaza, T az input ábécé, d az átmenetfüggvény, F pedig a végállapotok halmaza. Vegyünk fel egy új q0 állapotot, amely nem eleme a Q- nak. Legyen Q '=Q∪{q0} és legyen a d ' származtatva a d- ből oly módon, hogy a d átmenetein kívül legyen benne q0- ból átmenet az üresszó hatására minden qI állapotba. Ekkor a (Q ', q0, T, d ', F) automata megfelel az állításunknak: pontosan ugyanazt a nyelvet fogadja el, mint az eredeti és pontosan egy kezdőállapottal rendelkezik.

Átlátszóbetűs felismerő automata

A felismerő automatának az átlátszóbetűs változatát, melynek elfogadóereje jóval túlmutat a korábban ismertetett felismerő automatáén 2010-ben Friedrich Otto és Nagy Benedek vezették be. A hagyományos automatának ebben a kiterjesztésében minden állapotra megadhatunk a T bemenő ábécének egy olyan részhalmazát, amit az automata az adott állapotban nem lát. Az inputszalagon így az automata az első nem átlátszó betűt olvassa (törli), ami így nem biztos, hogy a legelső betű. Az olvasott betűnek megfelelő átmenet utáni állapotban más betűk lehetnek átlátszóak, így lehetőség van az előző állapotban nem látott - akár a törölt betűt megelőző - betűk elolvasására is. Az automata mindig az adott állapotban látszó legelső betűt tudja olvasni, ily módon nem feltétlenül a hagyományos balról jobbra sorrendben feldolgozva az inputot.

7. Definíció. Átlátszóbetűs (nemdeterminisztikus) felismerő automatának nevezzük az A=(Q, I, T, $, t, d, F) rendezett hetest, ahol Q az állapotok véges halmaza, IQ a kezdőállapotok halmaza, T az inputábécé, $∉T a szalagvége jel, t:Q → 2T átlátszósági függvény, d:Q×T → 2Q az állapotátmenet-függvény, FQ pedig a végállapotok halmaza. Minden qQ állapotra a t(q)- ban szereplő betűk átlátszóak, az automata ebben az állapotban ezeket a betűket nem látja. ★

Az automata működése a következő: először nemdeterminisztikusan választunk egy qI állapotot. A kezdőkonfiguráció: (q0, w$). Legyen w=a1a2an ahol n ≥ 1, és a1, a2, …, anT. Ekkor megkeressük az első olyan betűt balról amely nem átlátszó az adott állapotban, legyen w=uav olyan, hogy at(q0), u∈(t(q0))*. Ekkor a d(q0, a)- ból nemdeterminisztikusan választunk egy q ' állapotot és a következő konfiguráció (q ', uv$) lesz. Ha d(q0, a)=∅, akkor az automata megáll anélkül hogy elfogadna. Ha w∈(t(q0))*, akkor az automata a $ szimbólumot látja és megáll. Ha a gép a $ jelet látja, és az aktuális állapot végállapot, akkor elfogadja az inputot.

4.15. példa - Átlátszóbetűs elfogadó automata

Az {a, b, c} ábécé felett azokat a szavakat tartalmazó nyelv elfogadása, amelyekben az a- k, a b- k és a c- k száma megegyezik pl. a következő átlátszóbetűs felismerő automatával megy: ({q0, q1, q2, q3}, {q0}, {a, b, c}, $, t, d, {q3}), ahol t(q0)={b, c}, t(q1)={a, c}, t(q2)={a, b}, t(q3)=∅ és d(q0, a)={q1}, d(q1, b)={q2}, d(q2, c)={q0, q3}, minden más esetben a d értéke az üres halmaz. ★


A jegyzetben a későbbiekben nemvéges (de végesen definiálható, illetve leírható) automatákról is lesz szó.

Irodalmi megjegyzések

A determinisztikus véges automaták elmélete egymástól függetlenül a [Huffman 1954], [Mealy 1955] és [Moore 1956] művekben került megalapozásra. Az elfogadóautomatákkal kapcsolatos alapmunka [Rabin, Scott 1959], itt vezették be a nemdeterminisztikus véges automatákat és bizonyították ekvivalenciájukat a determinisztikus elfogadó automatákkal. Az automaták elméletével kapcsolatos részletes jegyzet magyarul a 3 kötetes [Peák 1988,1989,1990]. Az automataelmélettel kapcsolatos további részletes jegyzet [Babcsányi 2007]. Az automaták elméletének egy jelenleg is aktív kutatási iránya az automatahálózatok vizsgálata, lásd pl. [Dömösi, Nehaniv 2005]. Az átlátszóbetűs véges automatákról és ezek kiterjesztéseiről, pl. átlátszóbetűs veremautomatáról stb., és ezek tulajdonságairól részletesen olvashatunk a [Nagy, Otto 2010a, 2010b, 2010c, 2011a, 2011b] cikkekben.

5. fejezet - Reguláris nyelvek

A reguláris nyelvek alkotják a Chomsky-féle hierarchia legkisebb osztályát. Ezzel a nyelvosztállyal kapcsolatosan számos elméleti eredmény ismert, és ezek a nyelvek a gyakorlatban is számos helyen alkalmazhatóak.

Emlékeztetőül, egy nyelvtanról akkor mondjuk, hogy reguláris, ha minden egyes szabálya A → uB vagy A → u alakú (ahol A, BN, uT*).

Elsőként azt a bárkiben felmerülő kérdést tisztázzuk, hogy mi a véges és a reguláris nyelvek viszonya.

19. Tétel. Minden véges nyelv reguláris.

Bizonyítás. Legyen L={w1, …, wn} véges nyelv (megadhatjuk az elemeinek felsorolásával) valamilyen T ábécé felett, ekkor a G=({S}, T, S, {Swi | wiL}) nyelvtan pont L- et generálja. Másrészt G minden szabályára igaz, hogy a jobboldalon csak terminálisok szerepel(het)nek, így G reguláris. ∎

A következő egyszerű példa azt mutatja, hogy vannak végtelen reguláris nyelvek is:

5.1. példa - Végtelen reguláris nyelv

Legyen G=({S}, {a}, S, {SaaS, S → aa}). Ekkor a generált nyelv L={a2n | n ≥ 1}. ★


2. Következmény. A véges nyelvek halmaza valódi része a reguláris nyelvek halmazának.

A reguláris nyelvtanok esetén levezetéseket nagyon egyszerű, csúcscímkézett fagráfokkal tudjuk reprezentálni: A kiinduló gyökércsúcs címkéje az S mondatszimbólum. Egy A nemterminális címkéjű csúcsból, ha arra már alkalmaztunk egy Aa1akB megfelelő levezetési szabályt ( k ≥ 0 a szabályban szereplő terminálisok száma, k=0 esetben A → B a szabály alakja), k+1 él indul, és a gyerekcsúcsok címkéje balról jobbra haladva a1, …, ak, valamint B. Ha a levélelemek közt van nemterminális címkéjű, akkor a fa egy még be nem fejezett levezetést ábrázol, ilyenkor pontosan egy nemterminális címkéjű levélcsúcs van. Ha nincs nemterminális címkéjű levél, akkor az ábrázolt levezetés befejezett (termináló). A terminális címkéjű csúcsok levélelemei minden levezetési fának.

A mondatformát, illetve a levezetett szót megkapjuk, ha a levelek címkéit balról jobbra haladva elolvassuk.

Normálformák a reguláris nyelvtanokhoz

A Chomsky-féle nyelvosztályok definíciójában megengedtük, hogy egy lépésben bármennyi terminális bekerülhet a mondatformába, vagyis a szabályok jobb oldalának hosszára nem adtunk korlátot. Most megmutatjuk, hogy minden reguláris nyelv generálható speciálisabb formájú nyelvtanokkal is.

8. Definíció. Egy reguláris nyelvtanról azt mondjuk, hogy gyenge normálformában van, ha minden szabályára teljesül az alábbi alakok egyike: A → aB, A → B, A  → a, Aλ (ahol A, BN, aT). ★

20. Tétel. Minden reguláris nyelv generálható gyenge normálformájú reguláris nyelvtannal.

Bizonyítás.. Legyen adva G=(N, T, S, H) reguláris nyelvtan. Ez alapján fogjuk elészíteni a G '=(N ', T, S, H ') nyelvtant, hogy a generált nyelv ne változzon meg, de H ' csak olyan alakú szabályokat tartalmazzon, amikben maximum egy terminális szerepel. Az eredeti definícióban megengedett, hogy egynél több terminális szerepeljen egy szabály jobboldalán, ezeket kell helyettesítenünk a normálformának eleget tevő szabályok sorozataival. Vegyük sorra tehát a H szabályait:

Ha az aktuális szabályra teljesül az A → aB, A → B, A  → a, Aλ alakok egyike, akkor őt változtatás nélkül másoljuk át H- ból, H '- be. Ha az aktuális szabályra nem teljesül a fenti alakok egyike sem, akkor a következő két eset lehetséges:

- a szabály alakja Aa1ak ( k>1, a1, …, akT) . Ekkor vegyük fel az N ' halmazba, az eddig még nem szereplő X1, …, Xk-1 nemterminálisokat, és az aktuális szabály helyett a H '- be vegyük fel a Aa1X1, X1a2X2, …, Xk-2ak-1Xk-1, Xk-1ak szabályokat.

- a szabály alakja Aa1akB ( k>1, a1, …, akT) . Ekkor vegyük fel az N ' halmazba, az eddig még nem szereplő X1, …, Xk-1 nemterminálisokat, és az aktuális szabály helyett a H '- be vegyük fel a Aa1X1, X1a2X2, …, Xk-1akB szabályokat.

Majd tekintsük ugyanilyen eljárás során a kövtekező szabályt H- ból.

Az eljárásunk végén G ' gyenge normálformájú reguláris nyelvtan lesz, továbbá benne minden újonnan bevezetett nemterminális pontosan két szabályban szerepel, egyszer a jobb oldalon, egyszer a baloldalon. Ha egy olyan szabályt alkalmazunk, aminek a jobb oldalán új ( N- ben nem szereplő) nemterminális van, akkor a levezetés csak úgy folytatódhat, ha azt a szabályt alkalmazzuk, ahol ez a nemterminális van a bal oldalon. Ily módon végig kell alkalmaznunk az eredetileg alkalmazott szabályt helyettesítő lánc szabályait. Ennek alapján indukcióval belátható, hogy a G és a G ' által generált nyelv megegyezik. ∎

A fenti ábrán látható, hogy a normálformára hozás tekinthető a levezetési fák olyan transzformációjának, aminek ereményeként bináris (minden csúcsban maximum ketté ágazó) fa áll elő; miközben a levélelemek száma és sorrendje nem változik.

Az előző normálforma tovább alakítható. Az A → λ alakú szabályok kiküszöbölhetőek az Üresszó-lemmánál bizonyított módon (Üresszó-lemma). Így elérhető, hogy vagy ( λ- mentes nyelv esetén) egyáltalán nem fordul elő olyan szabály, aminek jobboldala az üresszó, vagy (ha a nyelvben szerepel az üresszó, akkor) csak az S → λ szabályban fordul elő, miközben S nem szerepel egyik szabály jobb oldalán sem (ahol S a mondatszimbólum).

Tekintsük most a nyelv üresszómentes részét, ennek megfelelően nem használunk A → λ alakú szabályt egyáltalán. Megmutatjuk, hogy az A → B alakú, úgynevezett láncszabályoktól (vagy nemterminális átnevezésektől) is meg tudunk szabadulni.

9. Definíció. Egy reguláris nyelvtanról azt mondjuk, hogy erős normálformában van, ha minden szabályára teljesül az alábbi alakok egyike: A → aB, A → a (ahol A, BN, aT). ★

21. Tétel. Minden reguláris nyelvhez van vele ekvivalens erős normálformájú reguláris nyelvtan.

Bizonyítás. Az előzőek alapján feltehetjük, hogy G=(N, T, S, H) nyelvtanunkban csak A → aB, A → a és A → B alakú szabályok vannak ( A, BN, aT) . Definiáljuk minden AN változóhoz a következő halmazokat:

- U1(A)={A}.

- Ui+1(A)=Ui(A)∪{BN | ∃CUi(A) | CBH}, ha i>1.

Ekkor N véges volta miatt létezik olyan minimális k index, hogy Uk(A)=Uk+j(A), ha j=1, 2, …. Jelöljük minden AN nemterminális jelhez tartozó Uk(A)- t U(A)- val. Ekkor U(A) éppen azokat a nemterminálisokat tartalmazza, amelyek levezethetőek az A-ból csupán láncszabályokat felhasználva, vagyis tetszőleges A, BN változókra A*B pontosan akkor, ha BU(A). Ezek után definiáljuk a H ' szabályhalmazt a következőképpen:

H '={A → r | ha van olyan BN hogy B → rH , rN, BU(A)}.

Ekkor G '=(N, T, S, H ') nyelvtan erős normálformájú, és ekvivalens az eredetivel. ∎

Itt jegyezzük meg, hogy a szakirodalomban előfordul, hogy a reguláris nyelvtanokat eleve csak az imént ismertetett normálformájú nyelvtanokkal definiálják; az általunk reguláris nyelvtanként definiált nyelvtanokat pedig jobblineáris nyelvtannak hívják. Ahogy láttuk ezek a nyelvtantípusok ekvivalensek egymással, így mi továbbra sem fogunk köztük különbséget tenni.

A ballineáris nyelvtanok és a jobblineáris nyelvtanok ekvivalenciáját a lineáris nyelvtanoknál tárgyaljuk (lásd Bal- és jobb-lineáris nyelvtanok ekvivalenciája).

Reguláris kifejezések

Legyen T={a1, …, an} tetszőleges nem üres és véges halmaz. Ha a T ábécét kibővítjük a benne nem szereplő ∅, λ, +, ⋅, *, (, ) jelekkel: V=T∪{∅, λ, +, ⋅, *, (, )}, akkor a V ábécé felett értelmezhetjük a reguláris kifejezések halmazát a következő induktív definícióval:

Elemi kifejezés:

- ∅ reguláris kifejezés,

- λ reguláris kifejezés,

- minden aT reguláris kifejezés.

Indukciós lépések:

- ha p és r reguláris kifejezések, akkor (p+r) is az,

- ha p és r reguláris kifejezések, akkor (pr) is az,

- ha r reguláris kifejezés, akkor r* is az.

Továbbá, minden reguláris kifejezés előáll az elemi kifejezésekből az indukciós lépések véges sokszori alkalmazásával.

A konkatenáció ⋅ műveleti jelét sokszor, ahogy eddig is, elhagyjuk.

A reguláris kifejezések segítségével nyelveket írhatunk le:

az elemi kifejezésekkel elemi nyelveket:

- ∅ (üres halmaz) jelöli az {} üres nyelvet,

- λ jelöli a {λ} kezdő nyelvet,

- a jelöli az {a} egyszavas alapnyelvet.

Az indukciós lépéssel pedig:

- (p+r) jelöli az LpLr nyelvet,

- (pr) jelöli az LpLr nyelvet,

- r* jelöli az Lr* nyelvet,

ahol Lp és Lr a p és az r reguláris kifejezések által jelölt nyelvek.

Két reguláris kifejezést ekvivalensnek nevezünk, ha ugyanazt a nyelvet írják le.

A T feletti nyelvek közt, tehát, a következő műveleteket (reguláris műveleteknek) hívjuk:

(i) összedás: nem más mint a két nyelv halmazelméleti uniója;

(ii) szorzás: a két nyelv konkatenációja;

(iii) iteráció: L iteráltján vagy más néven lezártján értjük és L*- al jelöljük az L*={p1p2⋅⋅⋅pk|p1, …, pkL, k ≥ 1}∪{λ} nyelvet. Vagy ahogy már korábban is definiáltuk, , ahol L0={λ}, Li=LLi-1.

Az LT = {L|LT*} halmazt a rajta értelmezett ezen három művelettel T feletti nyelvalgebrának hívjuk. A nyelvalgebrában érvényesek az absztrakt algebrából ismert, vagy azokhoz hasonló műveleti tulajdonságok:

L1L2=L2L1 (összeadás kommutatívitása);

(L1L2)∪L3=L1∪(L2L3) (összeadás asszociativitása);

L∪∅=L (additív egységelem létezése);

(L1L2)L3=L1(L2L3) (szorzás asszociativitása);

L{λ}={λ}L=L (multiplikatív egységelem létezése);

(L1L2)L3=L1L3L2L3 (baloldali disztributivitás);

L1(L2L3)=L1L2L1L3 (jobboldali diszributivitás);

{λ}*={λ} ;

*={λ};

LL*=L*L ;

L*={λ}∪LL* ;

(L1L2)*=(L1*L2*)* (unió kiváltása).

Két kivétellel minden felsorolt azonosság egyszerű számítással adódik a definíciók alapján. Ezért csak ezt a két összefüggést fogjuk bizonyítani.

Mutassuk meg először, hogy . Ehhez azt kell belátnunk, hogy a baloldali halmaznak pontosan azok az elemei mint a jobboldalinak.

A baloldali halmaznak és a jobboldali halmaznak is eleme az üresszó, így csak az üresszótól különböző elemek vizsgálatára kell szorítkoznunk. A baloldal az üres szón kívül tartalmazza azokat a p szavakat, melyek előállnak valamely n ≥ 1- re p=p1⋅⋅⋅pn alakban, ahol p1, …, pnL. Ha minden tényező az üresszó, akkor p=λ, s ezzel az esettel már nem kell tovább foglalkoznunk. Tehát feltehető, hogy van olyan 1 ≤ i ≤ n, hogy piλ, azaz pλ. Legyen valamely u ≥ 0 nemnegatív egészre n=uk+v, ahol 0 ≤ v<k. Ekkor p=q1q2, ahol vagy q1=λ (ekkor u=0) vagy pedig q1=p1⋅⋅⋅puk, ahol p1, …, pukL (ha u≠0), s ugyanekkor vagy q2=λ (ekkor v=0), vagy q2=puk+1⋅⋅⋅puk+v, ahol puk+1, …, puk+vL (ha v≠0). Mindenképp fennáll, hogy q1∈(Lk)*, illetve q2Lv, 0 ≤ v<k, azaz p=q1q2∈(Lk)*Lv. Tehát p eleme mindkét oldalnak, amivel a két oldal egyenlőségét kimutattuk.

Igazoljuk most az (L1L2)*=(L1*L2*)* egyenlőséget. Itt is igaz, hogy a baloldali halmaznak és a jobboldali halmaznak is eleme az üresszó, így csak az üresszótól különböző elemek vizsgálatára kell szorítkoznunk. Hasonló a helyzet mint az előző esetben. Mindkét oldal az üresszón kívül pontosan azokat a p szavakat tartalmazza, melyek előállnak valamely n ≥ 1- re p=p1⋅⋅⋅pn alakban, ahol p1, …, pnL1L2. A két halmaz tehát egyenlő.

A reguláris kifejezésekben a fent említett nyelvazonosságok miatt (pl. asszociativitás) zárójeleket hagyhatunk el a leírt nyelv egyértelműségét megtartva. További zárójeleket hagyhatunk el, ha megállapodunk abban a szokásos precedenciában, hogy a * művelet (ahogy a hatványozás szokott lenni) a legerősebb, majd következik a szorzás (konkatenáció) és az összeadás (unió) a leggyengébb.

A reguláris kifejezésekkel a reguláris nyelvek egy alternatív definícióját adhatjuk meg.

Reguláris nyelvnek hívjuk az üres nyelvet, továbbá mindazon nyelveket, amelyek elemi nyelvekből a reguláris műveletek véges számú alkalmazásával előállíthatók. (Így például reguláris nyelvek: ∅, {λ}, {a1}, T*, ({a1}{a2})*∪{a3}.) Később igazolni fogjuk, hogy a reguláris nyelv fogalmának korábbi nyelvtannal történő definíciója ezzel a fogalommal ekvivalens. A reguláris kifejezések tehát megmutatják, hogy a reguláris nyelv hogyan áll elő az elemi nyelvek és az alapműveletek segítségével. Egy reguláris kifejezés egyértelműen definiál egy nyelvet, fordítva viszont egy reguláris nyelvet leíró reguláris kifejezés általában nem egyértelműen meghatározott. (Például L{λ}=∅*L=({λ}+{λ})L=⋅⋅⋅.) Ezért külön érdekes, hogy hogyan lehet eldönteni az FT nyelvalgebrában, hogy két különböző reguláris kifejezés ugyanazt a reguláris nyelvet állítja-e elő. Később látni fogjuk, hogy ez a kérdés eldönthető. Sőt, ha pontosan megmondjuk, hogy mit is értünk egy reguláris nyelvet megadó minimális reguláris kifejezésen (például lehet ez alatt érteni (a karakterszámra) a legrövidebbet), akkor annak meghatározására is megadható algoritmus.

Itt jegyezzük meg, hogy az unió és konkatenáció műveletek tartják a végességet, vagyis ha * művelet nem szerepel egy reguláris kifejezésben, akkor az általa leírt nyelv véges. Ily módon éppen a véges nyelvek egy jellemzését adhatjuk meg, hiszen minden véges nyelv megadható a szavai között + jelekkel, mint reguláris kifejezéssel megadott nyelv. A következőkben néha nem teszünk különbséget egy reguláris kifejezés és az általa leírt nyelv között, vagyis magára a nyelvre is hivatkozunk a reguláris kifejezéssel. Amennyiben nem okoz félreértést, az unió jelet (∪), illetve az összeadás jelet (+), is használhatjuk ugyanabban a szerepben. A következő alfejezetben ugyancsak speciális reguláris kifejezéseket fogunk megvizsgálni.

Reguláris kifejezések ekvivalenciája

A reguláris kifejezések között vannak ekvivalensek, vagyis ugyanazt a halmazt (reguláris nyelvet) általában több, egymástól különböző reguláris kifejezés is megadja. Ez alapján az ekvivalencia reláció alapján az ekvivalens formulákat felhasználhatjuk formulák átalakítására.

Néhány ilyen ekvivalencia például:

  • (pq) kifejezés jelentése ugyanaz, mint (qp) kifejezésé;

  • (pq)∪r kifejezés jelentése ugyanaz, mint p∪(qr) kifejezésé;

  • (pq)(rt) kifejezés ugyanazt jelenti, mint a (prptqrqt);

  • rr* pedig ekvivalens r*r kifejezéssel.

Az unió művelet kommutativitása és asszociativitása miatt zárójeleket hagyhatunk el, és tekinthetjük az unió műveletet akár kettőnél több argumentumúnak is.

5.2. példa - Nyelv megadása reguláris kifejezéssel 1. feladat


 Adjuk meg reguláris kifejezéssel azt a nyelvet a {0,1} ábécé felett, amely azon szavakból áll,
 amelyek tartalmazzák részszóként a 010 szót!


 Megoldás: L=(0+1)*010(0+1)* ★
 


5.3. példa - Nyelv megadása reguláris kifejezéssel 2. feladat


 Adjuk meg reguláris kifejezéssel azt a nyelvet a {0,1} ábécé felett, amely azon szavakból áll,
 amelyek tartalmazzák részszóként a 000 vagy az 111 szót!


 Megoldás: L=(0+1)*(000+111)(0+1)* ★
 


5.4. példa - Nyelv megadása reguláris kifejezéssel 3. feladat


 Adjuk meg reguláris kifejezéssel azt a nyelvet a {0,1} ábécé felett, amely azon 1-esre végződő
 szavakból áll, amelyek nem tartalmazzák részszóként a 00 szót!


 Megoldás: L=(1+01)* ★
 


5.5. példa - Nyelv megadása reguláris kifejezéssel 4. feladat


 Adjuk meg reguláris kifejezéssel azt a nyelvet a {0,1} ábécé felett, amely azon szavakból áll,
 melynek 3. betűje 0!


 Megoldás: L=(00+01+10+11)0(0+1)* ★
 


5.6. példa - Nyelv megadása reguláris kifejezéssel 5. feladat


 Adjuk meg reguláris kifejezéssel azt a nyelvet a {0,1} ábécé felett, amely azon szavakból áll,
 melyek tartalmaznak legalább három 1-est!


 Megoldás: L=(0+1)*1(0+1)*1(0+1)*1(0+1)* ★
 


5.7. példa - Nyelv megadása reguláris kifejezéssel 6. feladat


 Adjuk meg reguláris kifejezéssel azt a nyelvet a {0,1} ábécé felett, amely azon szavakból áll,
 melyek 5-tel osztható 1-est tartalmaznak!


 Megoldás: L=(0*10*10*10*10*10*)* ★
 


A kifejezésfa

A kifejezéseket, illetve a formulákat, amik atomokból (tovább nem bontható egységek), illetve műveletekből állnak szokás fa formájában is ábrázolni. A fa levélelemeiben az atomok (itt most a terminálisok és az üresszó) a többi csomópontban pedig a műveletek szerepelnek. Minden műveletnek megfelelő csúcsból pontosan annyi darab él indul ki a további részkifejezésekhez, ahány argumentumú az operátor. Példaként az egész számokat leíró reguláris kifejezés fa alakban:

Unió-normálforma reguláris kifejezésekhez

A normálformák fontos szerepet játszanak a számítástudomány sok területén, pl. a logikában a konjunktív-, diszjunktív- normálformákról, illetve prenex alakú formulákról beszélhetünk. Ezekben a formulákban a műveletek sorrendjére van valamilyen megszorításunk. Lényeges viszont az, hogy minden formulához létezik vele ekvivalens amely normálformában van. Normálformát értelmezhetünk a reguláris kifejezésekre is.

Egy reguláris kifejezésről akkor mondjuk, hogy unió-normálformában van, ha a kifejezésfájában unió művelet csak a fa gyökerében szerepelhet (megengedve bármekkora aritású unió műveletet).

Ekkor igaz a következő eredmény:

A következő ekvivalenciák véges sokszori alkalmazásával bármely (reguláris) kifejezés normálformára hozható:

(1) (pr)* → (p*r*)*,

(2) p(qr) → pqpr,

(3) (pq)rprqr,

(4) (pq)(rt) → prptqrqt.

Tehát egy unió-normálformájú kifejezés véges sok uniómentes kifejezés uniója (a normálformát 2004-ben vezette be Nagy Benedek).

Lássuk végül, hogyan néz ki a tizes számrendszerben felírt egész számokat leíró reguláris kifejezés normálformája. Mivel a kifejezés meglehetősen hosszú, bevezetünk egy rövidítést:

S≡(0*1*2*3*4*5*6*7*8*9*)*.

Így a harminc tagú unió (hogy a + előjelet ne keverjük a reguláris unió művelettel, ez utóbbit itt ∪- val jelöljük):

0S∪1S∪2S∪3S∪4S∪5S∪6S∪7S∪8S∪9S

+0S∪+1S∪+2S∪+3S∪+4S∪+5S∪+6S∪+7S∪+8S∪+9S

-0S∪-1S∪-2S∪-3S∪-4S∪-5S∪-6S∪-7S∪-8S∪-9S

5.8. példa - Reguláris kifejezés unió-normálformára alakítása - 1. feladat

(a+b)(c+d+e)≡ ac+ad+ae+bc+bd+be


5.9. példa - Reguláris kifejezés unió-normálformára alakítása - 2. feladat

((ab+c*)d*)*)≡ (abd*+c*d*)*≡ ((abd*)*(c*d*)*)*

ez már uniómentes, de egyszerűsíthető: ((ab)*c*d*)*


5.10. példa - Reguláris kifejezés unió-normálformára alakítása - 3. feladat

(a*+b)*(c+d)*≡ ((a*)*b*)*(c*d*)*)≡ (a*b*)*(c*d*)*


5.11. példa - Reguláris kifejezés unió-normálformára alakítása - 4. feladat

(a+bab)(bb+ababa)*≡ (a+bab)((bb)*(ababa)*)*a((bb)*(ababa)*)*+bab((bb)*(ababa)*)*


5.12. példa - Reguláris kifejezés unió-normálformára alakítása - 5. feladat

(p+m+λ)(0+1)(0+1)*≡ (p0+m0+0+p1+m1+1)(0+1)*≡ (p0+m0+0+p1+m1+1)(0*1*)*p0(0*1*)*+m0(0*1*)*+0(0*1*)*+p1(0*1*)*+m1(0*1*)*+1(0*1*)*


Egyszerű szintaxis gráfok

A szintaxis gráfokat pl. programnyelvek egységeinek szintaktikai leírására használhatjuk. Ez a megadási mód a Pascal nyelvvel terjedt el igazán, a grafikus kép miatt iskolások és felnőttek is könnyedén sajátították el segítségével a programozás alapjait. Több elnevezése is ismert, pl. a vasúthálózat diagram név a diagramok alakja alapján találó. A terminálisokat körökkel jelöljük, beírva őket a körbe.

Használható műveletek:

  • konkatenáció (összefűzés: több szövegelem egymás mellé/után írása),

  • alternatíva (választás: különböző lehetőségek közül egy kiválasztása),

  • opció (a szövegelem vagy megjelenik vagy nem),

  • iteráció (a szövegelem akárhányszor megjelenhet (általában a nullaszori megjelenést is beleértjük)).

5.13. példa - Azonosítók nyelvének megadása szintaxis gráffal


Egy szintaxis gráfban mindig van pont egy indulóél és egy érkezőél, ahonnan indulva és ahova érkezve kell egy utat bejárnunk a gráfban. Ha az út során összeolvassuk a terminálisokat, akkor egy szót kapunk. Az összes olyan szó, amelyet megkaphatunk az indulóéltől az érkezőélig valamely úton végighaladva adja a gráf által leírt nyelvet.

A rövidebb és áttekinthetőbb leírás kedvvért bevezethetjük a nemterminálisokat, amik egyszerű szintaxisgráf részeket rövidítenek. Azt is megengedhetjük, hogy ezekben a nemterminális rövidítésekben szerepljenek már korábban definiált nemterminálsiok.

5.14. példa - Tizes számrendszerbeli egész számok nyelvének megadása szintaxis gráffal


Az előző példa alapján a -000 szó is egész szám (eleme a nyelvnek), hiszen egy számítógépes programnyelv általában ezt is ugyanúgy érti, mint a 0 szót. Az iskolában tanultaknak megfelelően viszont egy ember számára a -000 szám hibásnak tűnik.

5.15. példa - Egész számok köznapi értelemben vett leírása - Gyakorló feladat

Adjuk meg azt a szintaxis gráfot, amely az emberek számára hétköznapi értelemben vett egész számok leírását adja! ★


Az itt ismertetett szintaxis gráfokkal pontosan a reguláris nyelveket tudjuk leírni, ha a nemterminálisokat nem használjuk. A kifejező erő ugyanennyi, ha a nemterminálisok definíciójában csak a már korábban ugyanígy megadott nemterminálisokat használhatjuk fel. Ekkor ugyanis a szereplő nemterminálisok helyettesíthetőek a definíciójukban megadott leírással, ami ha tartalmaz nem terminálist, akkor az ott szereplő nemterminálisok is helyettesíthetőek stb., amíg végül visszakaphatjuk az eredeti nemterminális mentes definíciót.

Véges elfogadó automaták (Rabin-Scott automaták)

E fejezetben megmutatjuk, hogy a 3-as típusú, azaz reguláris nyelvtanokkal generálható nyelvek osztálya megegyezik a véges automaták által felismerhető nyelvek osztályával. Más szóval, a 3-as típusú, azaz reguláris nyelvtan, mint generatív eszköz, azonos értékű a véges automatával, mint felismerő eszközzel.

Legyen FA=(Q, T, q0, d, F) véges felismerő automata (FA, az angol finite automaton alapján), ahol Q az állapotok véges nemüres halmaza, T a bemenő- (vagy szalag-) ábécé, q0Q a kezdőállapot, d az állapot átmenet függvény, FQ pedig a végállapotok vagy elfogadóállapotok halmaza.

A d leképezés alakja alapján beszélhetünk

- nemdeterminisztikus üresszó átmenetet is megengedő automatáról: d:Q×(T∪{λ})  → 2Q,

- nemdeterminisztikus üresszó átmenet nélküli automatáról: d:Q×T → 2Q,

- (parciális) determinisztikus automatáról: d:Q×TQ (parciális függvény),

- teljesen definiált determinisztikus automatáról: d:Q×TQ (teljesen definiált függvény).

Amint azt a 4. fejezetben (Nemdeterminisztikus és determinisztikus automata és Rabin-Scott automata alfejezetekben) már láttuk, a nemdeterminisztikus véges automata olyan A=(Q, T, q0, d) rendszer, amely hasonlóan működik, mint az iniciális kimenő jel nélküli (determinisztikus) automata, azzal a különbséggel, hogy a d átmeneti függvény a Q×T szorzathalmazt a Q állapothalmaz részhalmazainak halmazába, vagyis a 2Q hatványhalmazba képezi le: d:Q×T → 2Q. Minden qQ, aT párra d(q, a)⊆Q az átmeneti lehetőségek halmaza. Feltételezzük viszont, hogy az A egy qQ állapotból az aT jel hatására mindig egy állapotba megy át (kivéve ha d(q, a)=∅, amikor az átmenet nincs értelmezve), az átmenet azonban A által nincs egyértelműen meghatározva. Továbbá, az üresszó hatására is történhet átmenet, ilyenkor a szalag olvasása nélkül is állapotot válthat az automata. Tehát az automata a diszkrét időskála mentén minden pillanatban egy jól meghatározott állapotban van, egy lépés során olvas (vagy λ- átmenet esetén nem olvas) az input szalagról egy betűt, és ennek hatására állapotot vált (vagy nem vált).

5.16. példa - Egy nemdeterminisztikus véges automata

Apqr
a{ q, p }{ p }
b{ r }{ q, r }{ r }


A fenti táblázattal definiált A nemdeterminisztikus véges automata például az a bemenő jel hatására a p állapotból átmehet q- be, de maradhat a p állapotban is. A q állapotban az A az a bemenő jelet nem képes feldolgozni. ★

Az automata egy futásának nevezzük azt az állapotsorozatot, amin egy adott input elolvasása közben végigmehet.

Üresszó átmenetet is megengedő automata esetén az automatát megadó táblázatban a terminálisok mellett az üresszó is egy külön sorban szerepel, ahol a d(q, λ) átmenetek szerepelnek megfelelő q állapotok esetén. Gráfokkal hasonlóan adhatjuk meg ezeket az automatákat is azzal a különbséggel, hogy az állapotátmeneteket jelző nyilakon a terminálisok mellett a λ is szerepelhet.

A d függvény értelmezését kiterjesztjük, így definiáljuk a d* kiterjesztett átmenetfüggvényt. Ehhez először minden állapothoz megadjuk annak λ- lezártját, vagyis azt az állapothalmazt, amit az adott állapotból bemenőjel nélkül is elérhetünk. Formálisan: l(qj)- t definiáljuk rekurzívan tetszőleges qj állapotra:

l0(qj)={qj} ;

li+1(qj)=li∪{qk | qkd(qm, λ), valamely qmli(qj)}, ha i ≥ 0

ekkor a Q végessége miatt lesz olyan i, hogy li(qj)=li+k(qj) minden k természetes számra; ekkor l(qj)=li(qj) halmazt a qj állapot λ- lezártjának nevezzük.

A λ- lezárt fogalmát értelmezhetjük nemcsak állapotokra, de állapot halmazokra is: l(Q ')={qk | qkl(q) valamely qQ ' esetén }.

Ekkor a kiterjesztett átmenetfüggvényt a következőképpen definiáljuk: d*:Q×T*  → 2Q, ahol minden qQ- ra d*(q, λ)=l(q) és minden aT, wT* párra (Természetesen előfordulhat, hogy d(q, wa)=∅.) Vegyük észre, hogy ez a kiterjesztés lényegesen különbözik az automataelméleti vizsgálatoknál korábban alkalmazott kiterjesztéstől, hisz ott képelemként 2(Q+)- beli elemek léptek fel, míg itt csak 2Q- beliek.

Egy véges automata akkor fogad el egy wT* input szót, ha van olyan futása amely a w elolvasása után végállapotba ér, vagyis d*(q0, w)∩F≠∅. Egy automata által elfogadott szavak halmaza jelenti az automata által elfogadott nyelvet.

Ez alapján azt is mondhatjuk, hogy az L nyelv előállítható vagy felismerhető az A automatában az FQ állapot halmazzal, jelekben: L(A)=LAF, ha wLd*(q0, w)∩F≠∅.

5.17. példa - A páratlan a-ból és páros b-ből álló szavak nyelve

Az alábbi ábrán olyan automatát láthatunk, mely azokat a szavakat fogadja el, melyek páratlan számú a- t és páros számú b- t tartalmaznak.

Az automata működés közben:


5.18. példa - Az x-re végződő szavak nyelve

Az alábbi ábrákon látható egy nemdeterminisztikus automata működése, mely az x- re végződő szavakat fogadja el.


Most lássunk néhány példát nemdeterminisztikus automata működésére.

Az automata nemdeterminisztikus működéssel olyan állapotba jut és olyan szimbólumot olvas, melyekre az állapotfüggvény üres:

Az automata nemdeterminisztikus működés során végigolvassa az inputot, de a működést nem elfogadó végállapotban fejezi be:

Az automata működése során végigolvassa az inputot és végállapottal elfogadja azt:

Véges determinisztikus és nemdeterminisztikus automaták ekvivalenciája

Két automatát ekvivalensnek hívunk, ha az általuk elfogadott nyelvek megegyeznek. Habár az imént bemutatott négy automatafogalom elég különbözőnek tűnhet most megmutatjuk, hogy az általuk elfogadott nyelvek osztálya megegyezik. Egyrészt világos, hogy a bemutatott sorrendben egyre speciálisabbak az automaták, vagyis definíció szerint a nemdeterminisztikus üresszó átmenet nélküli automaták, tulajdonképpen a nemdeterminisztikus üresszó átmenetet is megengedő automaták speciális esetei, amikben üresszó átmenet nem fordul elő. Továbbá a (parciális) determinisztikus automaták a nemdeterminisztikus üresszó átmenet nélküli automaták olyan speciális esetei ahol a d függvény képhalmaza maximum egyelemű halmazokat tartalmaz. A teljesen definiált determinisztikus automaták viszont olyan speciális parciális determinisztikus automaták, amelyekben a d értéke mindig pontosan egyelemű halmaz.

Ezek alapján világos, hogy a teljesen definiált determinisztikus automaták által elfogadott nyelvek osztálya részhalmaza a parciális determinisztikus automaták által elfogadott nyelvek halmazának, amely részhalmaza a nemdeterminisztikus üresszó átmenet nélküli automatákkal elfogadott nyelvek osztályának, az viszont részhalmaza a nemdeterminisztikus üresszó átmenetet is megengedő automaták által elfogadott nyelvek halmazának. Azt, hogy itt nem valódi részhalmaz relációkról van szó a következő tétel, illetve annak bizonyításában szereplő konstrukcióval látjuk be.

22. Tétel. Minden nemdeterminisztikus üresszó átmenetet is megengedő véges automatához van vele ekvivalens teljesen definiált determinisztikus automata.

Bizonyítás. Legyen NFA=(Q, T, q0, d, F) egy nemdeterminisztikus üresszó átmenetet is megengedő véges automata. Konstruáljuk meg a DFA=(2Q, T, l(q0), d ', F ') véges automatát, ahol az állapotok 2Q halmaza az eredeti automata állapotainak a lehetséges részhalmazaiból áll. A d ' állapotátmenet-függvény definíciója pedig ahol p∈2Q, vagyis pQ és aT. Az új automata végállapotai pedig F '={p | van olyan qp, hogy qF}. Világos, hogy DFA teljesen definiált determinisztikus véges automata.

Másrészt belátható, hogy L(DFA)=L(NFA), hiszen az eredeti NFA automata minden elfogadó futásához tartozik az új DFA automatának egy elfogadó futása, és viszont. ∎

Az előző tételben megkonstruált DFA tartalmazhat olyan állapotokat, amelyek a kezdőállapotból nem érhetőek el. Például csak olyan p∈2Q állapotok érhetőek el melyekre p=l(p) teljesül.

Ez alapján, egy determinisztikus automata megkonstruálásakor akkor járunk el észszerűen, ha az l(q0)- nak megfelelő állapotból indulunk el, és csak azokat az állapotokat (vagyis Q azon részhalmazait) vesszük fel az állapotok közé, amely előáll valamilyen eddigi állapotból valamely bemenőjel hatására.

5.19. példa - Automata determinizálása 1. feladat


Adjunk meg az A=({ a0, a1, a2 }, { x, y }, a0, δ, { a1 }) nemdeterminisztikus, parciálisan definiált,
kimenő jel nélküli, iniciális, végállapotokkal bővített véges automatával ekvivalens Ad
determinisztikus, teljesen definiált automatát!


δa0a1a2
x{ a2 }{ a0 }{ a1, a2 }
y{ a1 }{ a2 }-

Megoldás

  1.  Első lépésben meg kell határozni az új Ad automata belső állapotainak halmazát.
    Az A automata kezdőállapotához, valamint azon állapothalmazaihoz,
    melyek elérhetőek a kezdőállapotból, rendeljünk új betűket!
    Ezek az új betűk alkotják az új állapothalmazt.
    Jelen esetben:
    Az A automata kezdőállapotához és a kezdőállapotból egy lépésben elérhető
    állapothalmazokhoz rendeljünk új betűket:
    Jelöljük bi-vel ezeket az elemeket!

    b0={ a0 }, b1={ a2}, b2={ a1 }.
     
    Vegyük fel azokat az állapothalmazokat is, melyek egy lépésben elérhetőek
    a már meglévő állapothalmazokból és még nem szerepeltek:

    b3={ a1, a2 }, b4 = ∅.
     
    Mindezt addig kell folytatni, amíg van újabb elérhető állapothalmaz.
    Amennyiben több állapot is szerepel egy állapothalmazban, - mint az megfigyelhető a b3
    állapothalmaz esetén, - akkor az ezen állapotokból elérhető állapothalmazok unióját kell venni:

    b5={ a0, a1, a2 }.
     
    Mivel újabb bővítés nem lehetséges, készen vagyunk az első lépéssel.
     
     

  2. Második lépésben meghatározzuk az Ad automata δ' átmenetfüggvényét.
     Ehhez a következő lépésekre van szükség:

    1. Ha az automata bi = ∅ állapotban van, akkor bármely
      bemenő jel hatására ugyanebben az állapotban marad.

    2. Ha az automata egy bi ≠ ∅ állapotban van, akkor meg kell
      vizsgálni, hogy a bi halmazban lévő al1, ..., aln
      állapotok az adott bemenő jel hatására mely ak1, ... ,akm állapotokba mennek át.
      Az Ad automata a bi állapotból az adott bemenő jel hatására az
       ak1, ... ,akm halmazhoz tartozó bj állapotba megy át.

    δ'b0b1b2b3b4b5
    xb1b3b0b5b4b5
    yb2b4b1b1b4b3
  3.  Harmadik lépésben meg kell határozni az Ad automata
    bemenő jeleinek halmazát, kezdőállapotát, valamint végállapotainak halmazát.

    • Az Ad automata bemenő jeleinek halmaza megegyezik az A automata bemenő jeleinek a halmazával.

    • Az Ad automata kezdőállapota az A automata kezdőállapotához rendelt bi lesz.

    • Az Ad automata végállapotainak a halmaza pedig tartalmazni fog minden olyan
      bj állapotot, melynek mint halmaznak eleme az A automata bármely végállapota.

    Jelen esetben:
    Ad=({ b0, b1, b2, b3, b4, b5 }, { x, y }, b0, δ', { b1, b2, b3, b5 }).

5.20. példa - Automata determinizálása 2. feladat

Adjunk meg az A=({ a0, a1 }, { x, y }, a0, δ, { a1 })
nemdeterminisztikus, parciálisan definiált, kimenő jel nélküli, iniciális, végállapotokkal bővített
véges automatával ekvivalens Ad determinisztikus, teljesen definiált automatát!


δa0a1
x{ a1 }{ a0, a1 }
y{ a0 }-

Megoldás:

  1. b0={ a0 }, b1={ a1 }, b2={ a0, a1 }, b3 = ∅.

  2. δ'b0b1b2b3
    xb1b2b2b3
    yb0b3b0b3

  3. Ad=({ b0, b1, b2, b3 }, { x, y }, b0, δ', { b1, b2 }).

5.21. példa - Automata determinizálása 3. feladat

Adjunk meg az A=({ a0, a1 }, { x, y, z }, a0, δ, { a0 })
nemdeterminisztikus, parciálisan definiált, kimenő jel nélküli, iniciális, végállapotokkal bővített
véges automatával ekvivalens Ad determinisztikus, teljesen definiált automatát!


δa0a1
x{ a1 }-
y-{ a0, a1 }
z{ a0, a1 }{ a0 }

Megoldás:

  1. b0={ a0}, b1={ a1 }, b2 = ∅, b3={ a0, a1 }.

  2. δ'b0b1b2b3
    xb1b2b2b1
    yb2b3b2b3
    zb3b0b2b3

  3. Ad=({ b0, b1, b2, b3 }, { x, y, z }, b0, δ', { b0, b3 }).

5.22. példa - Automata determinizálása 4. feladat

Adjunk meg az A=({ a0, a1 }, { x, y }, a0, δ, { a1 })
nemdeterminisztikus, parciálisan definiált, kimenő jel nélküli, iniciális, végállapotokkal bővített
véges automatával ekvivalens Ad determinisztikus, teljesen definiált automatát!


δa0a1
x{ a0, a1 }{ a0, a1 }
y{ a0, a1 }-

Megoldás:

  1. b0={ a0 }, b1={ a0, a1 }.

  2. δ'b0b1
    xb0b1
    yb1b1

  3. Ad=({ b0, b1 }, { x, y }, b0, δ', { b1 }).

5.23. példa - Automata determinizálása 5. feladat

Adjunk meg az A=({ a0, a1, a2 }, { x, y }, a0, δ, { a0, a1 })
nemdeterminisztikus, parciálisan definiált, kimenő jel nélküli, iniciális, végállapotokkal bővített
véges automatával ekvivalens Ad determinisztikus, teljesen definiált automatát!


δa0a1a2
x{ a2 }{ a1 }{ a1, a2 }
y{ a0 }{ a2 }{ a0 }

Megoldás:

  1. b0={ a0 }, b1={ a2 }, b2={ a1, a2 }, b3={ a0, a2 }.

  2. δ'b0b1b2b3
    xb1b2b2b2
    yb0b0b3b0

  3. Ad=({ b0, b1, b2, b3 }, { x, y }, b0, δ', { b0, b2, b3 }).

5.24. példa - Automata determinizálása 6. feladat

Adjunk meg az A=({ a0, a1, a2 }, { x, y }, a0, δ, { a1 })
nemdeterminisztikus, parciálisan definiált, kimenő jel nélküli, iniciális, végállapotokkal bővített
véges automatával ekvivalens Ad determinisztikus, teljesen definiált automatát!


δa0a1a2
x{ a1 }{ a1, a2 }{ a2 }
y--{a1}

Megoldás:

  1. b0={ a0 }, b1={ a1 }, b2 = ∅, b3={ a1, a2 }.

  2. δ'b0b1b2b3
    xb1b3b2b3
    yb2b2b2b1

  3. Ad=({ b0, b1, b2, b3 },{ x, y }, b0, δ', { b1, b3 }).

5.25. példa - Automata determinizálása 7. feladat

Adjunk meg az A=({ a0, a1, a2 }, { x, y, z }, a0, δ, { a1, a2 })
nemdeterminisztikus, parciálisan definiált, kimenő jel nélküli, iniciális, végállapotokkal bővített
véges automatával ekvivalens Ad determinisztikus, teljesen definiált automatát!


δa0a1a2
x{ a0 }-{ a0, a2 }
y{ a1, a2 }{ a0 }-
z-{ a0, a1 }-

Megoldás:

  1. b0={ a0 }, b1={ a1, a2 }, b2 = ∅, b3={ a0, a2 }, b4={ a0, a1 }, b5={ a0, a1, a2 }.

  2. δ'b0b1b2b3b4b5
    xb0b3b2b3b0b3
    yb1b0b2b1b5b5
    zb2b4b2b2b4b4

  3. Ad=({ b0, b1, b2, b3, b4, b5 },{ x, y ,z }, b0, δ', { b1, b3, b4, b5 }).

5.26. példa - Automata determinizálása 8. feladat

Adjunk meg az A=({ a0, a1, a2, a3 }, { x, y, z }, a0, δ, { a1, a3 })
nemdeterminisztikus, parciálisan definiált, kimenő jel nélküli, iniciális, végállapotokkal bővített
véges automatával ekvivalens Ad determinisztikus, teljesen definiált automatát!


δa0a1a2a3
x{ a0 }-{ a2, a3 }{ a1, a2 }
y{ a1, a2, a3 }{ a0 }-{ a0 }
z-{ a1, a2 }{ a1, a3 }{ a1 }

Megoldás:

  1. b0={ a0 }, b1={ a1, a2 , a3}, b2 = ∅.

  2. δ' b0 b1 b2
    x b0 b1 b2
    y b1 b0 b2
    z b2 b1 b2

  3. Ad=({ b0, b1, b2 },{ x, y ,z }, b0, δ', { b1 }).

Véges determinisztikus elfogadó automaták minimalizálása

Itt mutatjuk be az Aufenkamp-Hohn-féle Minimalizációs Algoritmus determinisztikus elfogadó automatákra működő változatát.

Legyen adott DFA=(Q, T, q0, d, F). A valódi minimalizásiós algoritmus végrehajtása előtt az iniciális összefüggőséget kell ellenőriznünk, illetve a kezdőállapotból nem elérhető állapotokat törölni: azaz a Q '={d*(q0, w)|wT*} állapothalmazzal és F '=F∩{d*(q0, w)|wT*} végállapothalmazzal rendelkező DFA '=(Q ', T, q0, d ', F ') iniciálisan összefüggő (kimenő jel nélküli) állapot-részautomatát minimalizáljuk.

A továbbiakban legyen DFA=(Q, T, q0, d, F) iniciálisan összefüggő. A CDFA osztályozást osztályozások egy C1, C2, … sorozatán keresztül szerkesztjük meg, melyeket a következőképp definiálunk:

Kezdetként a C1 osztályozással bontsuk a Q állapothalmazt két részre: F és QF.

Ezután, ha i ≥ 1, úgy a Ci+1 osztályozás szerint p és q akkor és csak akkor esnek egy osztályba, ha egyrészt már Ci szerint is egy osztályba esnek, másrészt pedig minden bemenő jel hatására egy és ugyanazon Ci szerinti osztályba mennek át.

Képletben: ha i ≥ 1, akkor Ci+1[p]=Ci+1[q]⇔Ci[p]=Ci[q] és ∀aT:Ci[d(p, a)]=Ci[d(q, a)].

A Q végessége miatt lesz olyan m, hogy Cm osztályozás megegyezik Ci+m osztályozással (vagyis megkaptuk a CDFA osztályozást), ekkor a teljesen definiált determinisztikus minimális automatát a következőképpen adjuk meg:

ACm=(Cm, T, Cm[q0], dCm, FCm), ahol minden Cm[q]∈Cm, aT- re dCm(Cm[q], a)=Cm[d(q, a)], illetve FCm={Cm[q] | qF}.

Az így kapott automata ekvivalens az eredetivel, ugyanazt az L nyelvet fogadja el; teljesen definiált determinisztikus és minimális állapotszámú.

Ha egy DFA=(Q, T, q0, d, F) minimális automata esetén vannak olyan T*- beli szavak amelyek nem prefixei (kezdőszeletei) egyetlen L=L(DFA) nyelvbeli szónak sem, azaz van olyan uT*, hogy nincs olyan vT*, hogy uvL, akkor a minimális determinisztikus teljesen definiált automatának van nyelőállapota, vagyis olyan q állapot, amire bármilyen aT bemenőjelre d(q, a)=q és qF.

Például ez a nyelő állapot felel meg egy nemdeterminisztikus automata nem definiált átmeneteinek, vagyis a determinizáló algori