Хиерархија на Чомски

Во компјутерските науки, особено во делот на програмски јазици, **Хиерархијата на Чомски** (честопати нарекувана и како **Чомски-Шуценбергеровара хиерархија** е хиерархиска класа на формални граматики кои генерираат формални јазици.

Оваа хиерархија на граматики била опишана од страна на американскиот јазичар Ноам Чомски во 1956 година.  Оваа хиерархија исто така е именувана и по Марцел-Пол Шуценбергер кој имал главна улога во развојот на теоријата на формални јазици.

## Формални граматики

Формалната граматика се состои од :

* конечно множество на ''терминални симболи'';
* конечно множество на *[[нетерминални симболи]]*;
* конечно множество на *правила* со лева- и десна- страна кои се состојат од низа на овие симболи 
* *почетен симбол*.

Формалната граматика го дефинира (или *генерира*) *формалниот јазик*, кој е (најверојатно бесконечно) множество на низи од симболи кои можат да бидат конструирани со примена на правилата врз низите од симболи кои на почетокот се состојат само од еден почетен симбол. Правило може да се примени на низа од симболи по пат на замена на секое појавување на симболите на левата страна од правилото со оние кои се појавуваат на десната страна. Низата на применети правила е наречена *деривација*. Вакваа граматика дефинира формален јазик на сите зборови кои може да се добијат со деривација од почетниот симбол. 
 
Нетерминалните симболи вообичаено се претставуваат со големи букви, терминалните симболи со мали букви, а почетниот симбол со буквата S. Пример, граматиката со терминални симболи \{a, b\}, нетерминални симболи \{S, A, B\}, и правила:
: S \rightarrow \, ABS
: S \rightarrow \, ε  (каде ε е празен стринг)
: BA \rightarrow \, AB
: BS \rightarrow \, b
: Bb \rightarrow \, bb
: Ab \rightarrow \, ab
: Aa \rightarrow \, aa
и почетен симбол S, го дефинира јазикот на сите зборови во форма на  a^n b^n  (т.е. n копија на a проследено со n копија на b).
Во следниов пример е дадена поедноставна граматика која дефинира сличен јазик: 
Терминални симболи \{p, q\}, нетерминални симболи \{S\}, почетен симбол S, правила
: S \rightarrow \, pSq
: S \rightarrow \, ε

## Хиерархија
Хиерархијата на Чомски се состои од следниве нивоа:

* Тип-0 граматики (неограничени граматики) ги вклучуваат сите формални граматики. Тие ги генерираат сите јазици кои можат да бидат препознаени од Тјуринговата машина. Овие јазици исто така се познати и како рекурзивно преброиви јазици. Да напоменеме дека овие јазици се различни од рекурзивните јазици кои можат да бидат *одлучени* од страна на Тјуринговите машини кои секогаш завршуваат
* Тип-1 граматики (контексно осетливи граматики) генерираат контексно осетливи јазици. Овие граматики имаат правила во следнава форма \alpha A\beta \rightarrow \alpha\gamma\beta со A нетерминален симбол и \alpha, \beta и \gamma стрингови на терминални и нетерминални симболи. Стринговите \alpha и \beta може да бидат празни, но стрингот \gamma не смее да биде празен. Правилото S \rightarrow \epsilon е допуштено ако S не се појавува на десната страна од било кое правило. Јазиците опишани со овие граматики се точно оние јазици кои можат да бидат препознаени од страна на линеарно ограничен автомат (неограничена Тјурингова машина чија лента е ограничена на константен број од должината на влезот).
* Тип-2 граматики (контексно слободни граматики) генерираат контексно слободни јазици. Овие граматики се дефинирани со правила во форма A \rightarrow \gamma со A како нетерминален симбол и \gamma како стринг на терминали и нетерминали. Тоа се оние јазици кои можат да бидат препознаени од неограничени потисни автомати. Контексно слободните јазици теоретски се основа на синтаксата на повеќето програмски јазици.
* Тип-3 граматики (регуларни граматики) генерираат регуларни јазици. Овие граматики ги ограничуваат своите правила на еден нетерминален симбол на левата страна и еден терминален симбол на десната страна, со можност да му следи  (или претходи, но не и двете одеднаш во иста граматика) еден нетерминален симбол. Правилото S \rightarrow \epsilon тука е допуштено ако S не се појавува на десната страна од било кое правило. Тоа се оние јазици кои можат да бидат одлучени од страна на конечни автомати. Уште повеќе, оваа фамилија на формални јазици може да биде добиена и со регуларни изрази. Регуларните јазици вообичаено се користат за дефинирање на стрингови за пребарување во лексичката структура на програмските јазици.

Да напоменеме дека множеството од граматики кои соодветствуваат на рекурзивните јазици не е член на оваа хиерархија.

Секој регуларен јазик е контексно слободен, секој контексно слободен јазик е контексно осетлив и секој контексно осетлив јазик е рекурзивен а секој рекурзивен јазик е рекурзивно преброив. Ова се вистински подмножества, што значи дека постојат рекурзивно преброиви јазици кои не се рекурзивни, рекурзивни јазици кои не се контексно осетливи, контексно осетливи јазици кои не се контексно слободни и контексно слободни јазици кои се не регуларни.

Следната табела е сумарен приказ на секој од четирите типа на граматики на Чомски, класата на јазик кој го генерира, типот на автомат кој го препознава, и формата на неговите правила.

## Наводи
* 
* 
* 

## Надворешни врски
* http://www.staff.ncl.ac.uk/hermann.moisl/ell236/lecture5.htm

Категорија:Формални јазици
Категорија:Генеративни јазичарики
Категорија:Ноам Чомски