Изменения

Перейти к: навигация, поиск

Иерархия Хомского формальных грамматик

414 байт добавлено, 12:39, 11 марта 2018
См. также
{{Определение
|definition=
'''Иерархия Хомского''' (англ. ''Chomsky hierarchy'') {{---}} классификация [[формальные грамматики|формальных грамматик]] и [[формальные грамматики|задаваемых ими языков]], согласно которой они делятся на 4 класса по их условной сложности.
}}
== Класс 0 ==
===Пример===
Терминалы: {a, c, d};
 
Нетерминалы: {S, A, B};
 
Продукции:
<tex>
S \rightarrow aBc aBcc \\aB B \rightarrow cA A \\BAA \rightarrow d \\Ac \rightarrow B \\A \rightarrow AAA\ |\ dB\\
</tex>
 
Выведем в данной грамматике строку <tex>addd</tex>:
 
<tex>\boldsymbol{S} \Rightarrow a\boldsymbol{B}cc \Rightarrow a\boldsymbol{Ac}c \Rightarrow a\boldsymbol{B}c \Rightarrow a\boldsymbol{Ac} \Rightarrow a\boldsymbol{B} \Rightarrow a\boldsymbol{A} \Rightarrow ad\boldsymbol{B} \Rightarrow ad\boldsymbol{A} \Rightarrow ad\boldsymbol{A}AA \Rightarrow add\boldsymbol{BAA} \Rightarrow addd</tex>
== Класс 1 ==
Первый класс представлен '''неукорачивающими''' и '''контекстно-зависимыми''' грамматиками.
 
{{Определение
|id = Неукорачивающие грамматики
|definition =
'''Неукорачивающая грамматика''' (англ. ''noncontracting grammar'') {{---}} это формальная грамматика, всякое правило из <tex>P</tex> которой имеет вид <tex>\alpha\rightarrow\beta</tex>, где <tex>\alpha , \beta \in \{\Sigma\cup N\}^{+}</tex> и <tex>|\alpha|\leqleqslant |\beta|</tex> (возможно правило <tex>S \rightarrow \varepsilon</tex>, но тогда <tex>S</tex> не встречается в правых частях правил).
}}
 
{{Определение
|definition =
'''Контекстно-зависимая грамматика''' (англ. ''context-sensitive grammar'') {{---}} это формальная грамматика, всякое правило из <tex>P</tex> которой имеет вид <tex>\alpha A \beta\rightarrow\alpha\gamma\beta</tex>, где <tex>\alpha , \beta \in \{\Sigma\cup N\}^{*}</tex>, <tex>A \in N</tex> и <tex>\gamma \in \{\Sigma\cup N\}^{+}</tex> (возможно правило <tex>S \rightarrow \varepsilon</tex>, но тогда <tex>S</tex> не встречается в правых частях правил).
}}
 
Языки, заданные этими грамматиками, распознаются с помощью '''линейно ограниченного автомата''' (англ. ''linear bounded automaton'') (недетерминированная машина Тьюринга, чья лента ограничена константой, зависящей от длины входа.)
Как будет показано [[Неукорачивающие и контекстно-зависимые грамматики, эквивалентность|далееИзвестно]], что неукорачивающие грамматики эквивалентны контекстно-зависимым.
===Пример===
Язык <tex>L=\{w \in \Sigma^* | \mid w = 0^n1^n2^n, n \ge 1\}</tex> Терминалы: <tex>\{0, geqslant 1, 2\}</tex>; Нетерминалы: <tex>\{S, A\}</tex>;
Продукции:
== Класс 2 ==
Второй класс составляют [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|контекстно-свободные грамматики]], которые задают контекстно-свободные языки. Эти языки распознаются с помощью [[Автоматы_с_магазинной_памятью|автоматов с магазинной памятью]].
 
{{Определение
|definition =
'''Контекстно-свободная грамматика''' (англ. ''context-free grammar'') {{---}} это формальная грамматика, всякое правило из <tex>P</tex> которой имеет вид <tex>A \rightarrow\beta</tex>, где <tex>A\in N </tex>, <tex>\beta \in \{\Sigma \cup N\}^{+}</tex>.
}}
 То есть грамматика допускает появление в левой части правила только одного нетерминального символа.
===Пример===
Язык <tex>L=\{w \in \Sigma^* | \mid w = w^R\}</tex> (язык палиндромов). Терминалы: буквы алфавита <tex>\Sigma</tex>; Нетерминалы: <tex>S</tex>;
Продукции: <tex>S\rightarrow\alpha S\alpha\,|\,\alpha\,|\,\varepsilon, \alpha \in \Sigma</tex>;
== Класс 3 ==
'''Леволинейная грамматика''' (англ. ''left-regular grammar'') {{---}} это формальная грамматика, всякое правило из <tex>P</tex> которой имеет вид <tex>A \rightarrow B\gamma</tex> или <tex>A \rightarrow \gamma</tex>, где <tex>\gamma \in \Sigma, A, B \in N</tex>.
}}
 
{{Определение
|definition =
'''Праволинейная грамматика''' (англ. ''right-regular grammar'') {{---}} это формальная грамматика, всякое правило из <tex>P</tex> которой имеет вид <tex>A \rightarrow \gamma B</tex>; или <tex>A \rightarrow \gamma</tex>, где <tex>\gamma \in \Sigma, A, B \in N</tex>.
}}
Оба вида задают одинаковые языки. При этом если правила леволинейной и праволинейной грамматик объединить, то язык уже не обязан быть регулярным.
Оба вида задают одинаковые языки. При этом если правила леволинейной и праволинейной грамматик объединитьТакже можно [[Правоконтекстные_грамматики,_эквивалентность_автоматам|показать]], что множество языков, задаваемых праволинейными грамматиками, совпадает со множеством языков, то язык будет уже не обязан быть регулярным. Эти языки распознаются с помощью задаваемых [[Детерминированные конечные автоматы|конечных автоматовконечными автоматами]].
===Пример===
Язык <tex>L</tex> для регулярного выражения <tex>a^*bc^*</tex>. Терминалы: {a, b, c}; Нетерминалы: {S, A};
Продукции:
== См. также ==
* [[Разрешимые_(рекурсивные)_языки|Разрешимые (рекурсивные) языкиПравоконтекстные грамматики, эквивалентность автоматам]]
* [[Возможность_порождения_формальной_грамматикой_произвольного_перечислимого_языка|Возможность порождения формальной грамматикой произвольного перечислимого языка]]
* [[wikipedia:Linear_bounded_automaton|Wikipedia {{---}} Linear bounded automaton]]
==Источники информации==
[[Категория: Теория формальных языков]]
[[Категория: Контекстно-свободные грамматики]]
[[Категория: Базовые понятия о грамматиках]]
442
правки

Навигация