Нормальная форма Хомского — различия между версиями
(→Пример) |
|||
Строка 1: | Строка 1: | ||
− | |||
− | |||
{{Определение | {{Определение | ||
|definition=Грамматикой в '''нормальной форме Хомского''' (''Chomsky normal form'') называется [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|контекстно-свободная грамматика]], в которой могут содержатся правила только следующего вида: | |definition=Грамматикой в '''нормальной форме Хомского''' (''Chomsky normal form'') называется [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|контекстно-свободная грамматика]], в которой могут содержатся правила только следующего вида: | ||
Строка 43: | Строка 41: | ||
== Пример == | == Пример == | ||
− | Рассмотрим грамматику для языка правильных скобочных последовательностей: <tex>S\rightarrow \varepsilon| | + | Рассмотрим грамматику для языка правильных скобочных последовательностей: <tex>S\rightarrow \varepsilon|(S)|SS</tex>. |
# Удалим длинные правила и получим грамматику <tex> | # Удалим длинные правила и получим грамматику <tex> | ||
\begin{array}{l l} | \begin{array}{l l} | ||
− | S\rightarrow \varepsilon|A | + | S\rightarrow \varepsilon|A)|SS\\ |
− | A\rightarrow | + | A\rightarrow (S |
\end{array} | \end{array} | ||
</tex>. | </tex>. | ||
Строка 53: | Строка 51: | ||
\begin{array}{l l} | \begin{array}{l l} | ||
S\rightarrow \varepsilon|S'\\ | S\rightarrow \varepsilon|S'\\ | ||
− | S'\rightarrow A | + | S'\rightarrow A)|S'S'\\ |
− | A\rightarrow | + | A\rightarrow (S'|( |
\end{array} | \end{array} | ||
</tex>. | </tex>. | ||
# Удалим цепные правила - <tex> | # Удалим цепные правила - <tex> | ||
\begin{array}{l l} | \begin{array}{l l} | ||
− | S\rightarrow \varepsilon|A | + | S\rightarrow \varepsilon|A)|S'S'\\ |
− | S'\rightarrow A | + | S'\rightarrow A)|S'S'\\ |
− | A\rightarrow | + | A\rightarrow (S'|( |
\end{array} | \end{array} | ||
</tex>. | </tex>. | ||
Строка 68: | Строка 66: | ||
S\rightarrow \varepsilon|AB|S'S'\\ | S\rightarrow \varepsilon|AB|S'S'\\ | ||
S'\rightarrow AB|S'S'\\ | S'\rightarrow AB|S'S'\\ | ||
− | A\rightarrow CS'| | + | A\rightarrow CS'|(\\ |
− | C\rightarrow | + | C\rightarrow (\\ |
− | B\rightarrow | + | B\rightarrow ) |
\end{array} | \end{array} | ||
</tex>. | </tex>. | ||
+ | |||
+ | == См. также == | ||
+ | * [[Контекстно-свободные_грамматики,_вывод,_лево-_и_правосторонний_вывод,_дерево_разбора|Контекстно-свободные грамматики]] | ||
+ | * [http://en.wikipedia.org/wiki/Chomsky_normal_form Chomsky normal form] | ||
==Литература== | ==Литература== |
Версия 13:41, 17 ноября 2013
Определение: |
Грамматикой в нормальной форме Хомского (Chomsky normal form) называется контекстно-свободная грамматика, в которой могут содержатся правила только следующего вида:
, , где , — терминал, — нетерминалы, — стартовая вершина, — пустая строка, стартовая вершина не содержится в правых частях правил. |
Приведение грамматики к нормальной форме Хомского
Теорема: |
Любую контекстно-свободную грамматику можно привести к нормальной форме Хомского. |
Доказательство: |
Рассмотрим контекстно-свободную грамматику . Для приведения ее к нормальной форме Хомского необходимо выполнить пять шагов. На каждом шаге мы строим новую , которая допускает тот же язык, что и .
Таким образом, мы получили грамматику в нормальной форме Хомского, которая допускает тот же язык, что и .Заметим, что размеры грамматики при таком порядке действий возрастают полиномиально. При удалении длинных правил из каждого правила длины могло появиться новых правил, причем их длина не превышает двух. На этом шаге размер грамматики возрастает не более, чем вдвое.При удалении -правил из грамматики, содержащей правила длины 0, 1 и 2, размеры грамматики могли вырасти не больше, чем в 3 раза.Всего цепных правил в грамматике не больше, чем Наконец, на последнем шаге может произойти добавление не более, чем , где — число нетерминалов. При удалении цепных правил мы берем каждую из цепных пар и производим добавление нецепных правил, выводимых из второго нетерминала в паре. Если максимальная суммарная длина всех правил, выводимых из какого-либо нетерминала, равна , то размер грамматики возрастет не больше, чем на . ( — алфавит грамматики) новых правил, причем все они будут длины 1. |
Пример
Рассмотрим грамматику для языка правильных скобочных последовательностей:
.- Удалим длинные правила и получим грамматику .
- Удалим ε правила - .
- Удалим цепные правила - .
- Заменим терминалы на нетерминалы - .