Razlika između inačica stranice »Gramatika neograničenih produkcija«
(Bot: Automatski unos stranica) |
m (Bot: Automatska zamjena teksta (-{{cite book +{{Citiranje knjige)) |
||
Redak 26: | Redak 26: | ||
== Izvori == | == Izvori == | ||
* {{ | * {{Citiranje knjige | ||
|author = John Hopcroft i Jeffrey D. Ullman | |author = John Hopcroft i Jeffrey D. Ullman | ||
| year = 1979 | | year = 1979 | ||
Redak 34: | Redak 34: | ||
| id = {{ISBN|0-201-44124-1}}}} (''the Cinderella book'') | | id = {{ISBN|0-201-44124-1}}}} (''the Cinderella book'') | ||
*{{ | *{{Citiranje knjige | ||
| author = Siniša Srbljić | | author = Siniša Srbljić | ||
| title = Jezični procesori 1 | | title = Jezični procesori 1 |
Trenutačna izmjena od 01:40, 17. studenoga 2021.
U teoriji formalnih jezika, gramatika neograničenih produkcija je formalna gramatika koja ne postavlja ograničenja na lijeve i desne strane produkcija. Ovo je najopćenitija klasa gramatika u Chomskyjevoj hijerarhiji koja može generirati proizvoljan rekurzivno prebrojiv jezik.
Formalna definicija
Gramatika neograničenih produkcija je formalna gramatika [math]\displaystyle{ G = (N, \Sigma, P, S) }[/math], gdje je [math]\displaystyle{ N }[/math] skup nezavršnih znakova, [math]\displaystyle{ \Sigma }[/math] skup završnih znakova, [math]\displaystyle{ N }[/math] i [math]\displaystyle{ \Sigma }[/math] su disjunktni skupovi (ustvari, ovo i nije nužno potrebno, pošto gramatike neograničenih produkcija ne razlikuju završne i nezavršne znakove, a oznake postoje iz jednostavnog razloga da se zna kad treba stati prilikom pokušaja generiranja rečeničnih oblika gramatike), [math]\displaystyle{ P }[/math] je skup produkcija oblika [math]\displaystyle{ \alpha \to \beta }[/math] pri čemu su [math]\displaystyle{ \alpha }[/math] i [math]\displaystyle{ \beta }[/math] nizovi znakova u [math]\displaystyle{ N \cup \Sigma }[/math] i [math]\displaystyle{ \alpha }[/math] nije prazni niz, te [math]\displaystyle{ S \in N }[/math] specijalno označeni početni znak. Kao što samo ime implicira, ne postoje stvarna ograničenja nad tipovima produkcija dozvoljenih u gramatikama neograničenih produkcija.
Gramatike neograničenih produkcija i Turingovi strojevi
Može se pokazati da gramatike neograničenih produkcija opisuju rekurzivno prebrojive jezike. Ovo je kao da kažemo da za svaku gramatiku neograničenih produkcija [math]\displaystyle{ G }[/math] postoji neki Turingov stroj koji prepoznaje [math]\displaystyle{ L(G) }[/math], a vrijedi i obrat ove tvrdnje. Za danu gramatiku neograničenih produkcija takav je Turingov stroj jednostavno konstruirati, i to kao dvotračni nedeterministički Turingov stroj. Prva traka sadrži ulaznu riječ [math]\displaystyle{ w }[/math] koju ispitivamo, dok stroj koristi drugu traku za generiranje rečeničnih oblika iz [math]\displaystyle{ G }[/math]. Turingov stroj potom radi sljedeće:
- Započinje rad na krajnje lijevom kraju druge trake i potom ponavljajuće odabire pomak udesno ili odabire trenutnu poziciju na traci.
- Nedeterministički odabire produkciju [math]\displaystyle{ \beta \to \gamma }[/math] iz skupa produkcija gramatike [math]\displaystyle{ G }[/math].
- ako se [math]\displaystyle{ \beta }[/math] pojavi na nekoj poziciji druge trake, zamijeni [math]\displaystyle{ \beta }[/math] sa [math]\displaystyle{ \gamma }[/math], uz mogući posmak znakova trake lijevo ili desno ovisno o relativnim duljinama [math]\displaystyle{ \beta }[/math] i [math]\displaystyle{ \gamma }[/math] (tj. ako je [math]\displaystyle{ \beta }[/math] dulji od [math]\displaystyle{ \gamma }[/math], obavi posmak znakova trake ulijevo).
- Usporedi rezultirajući rečenični oblik na drugoj traci sa riječi na prvoj traci. Ako odgovaraju, tada Turingov stroj prihvaća riječ. Ako ne odgovaraju, vrati se na prvi korak.
Lako se vidi da će ovaj Turingov stroj generirati sve i samo rečenične oblike gramatike [math]\displaystyle{ G }[/math] na drugoj traci nakon što je posljednji korak izvršen proizvoljan broj puta, i time jezik [math]\displaystyle{ L(G) }[/math] mora biti rekurzivno prebrojiv.
Obrnuta konstrukcija je također moguća. Za dani Turingov stroj, moguće je stvoriti gramatiku neograničenih produkcija.
Komputacijska svojstva
Kao što se može očekivati iz pokazane istovjetnosti gramatika neograničenih produkcija i Turingovih strojeva, problem odluke pripada li dani niz znakova [math]\displaystyle{ s }[/math] jeziku neke gramatike neograničenih produkcija je općenito neodlučiv.
Savršeno je moguće stvoriti univerzalnu gramatiku neograničenih produkcija koja je sposobna prihvatiti jezik bilo koje druge gramatike neograničenih produkcija za dani opis samog jezika, baš kao što je moguće stvoriti univerzalni Turingov stroj, tako da bi u teoriji bilo moguće izgraditi programski jezik baziran na gramatikama neograničenih produkcija.
Izvori
- John Hopcroft i Jeffrey D. Ullman (1979). Introduction to Automata Theory, Languages, and Computation (1st edition ed.). Addison-Wesley. ISBN 0-201-44124-1 (the Cinderella book)
- Siniša Srbljić (2003). Jezični procesori 1. Element. ISBN 953-197-129-3
Teorija automata: formalni jezici i formalne gramatike | |||
---|---|---|---|
Chomskyjeva hijerarhija |
Gramatike | Jezici | Minimalni automat |
Tip 0 | Neograničenih produkcija | Rekurzivno prebrojiv | Turingov stroj |
n/a | (nema uobičajenog imena) | Rekurzivni | Odlučitelj |
Tip 1 | Kontekstno ovisna | Kontekstno ovisni | Linearno ograničen |
n/a | Indeksirana | Indeksirani | Ugniježđenog stoga |
Tip 2 | Kontekstno neovisna | Kontekstno neovisni | Nedeterministički potisni |
n/a | Deterministička kontekstno neovisna | Deterministički kontekstno neovisni | Deterministički potisni |
Tip 3 | Regularna | Regularni | Konačni |
Svaka kategorija jezika ili gramatika je pravi podskup nadređene kategorije. |