Нормальная форма Хомского — различия между версиями
| Строка 1: | Строка 1: | ||
{{Определение | {{Определение | ||
|definition=Грамматикой в нормальной форме Хомского (''Chomsky normal form'') называется грамматика, в которой могут содержатся правила только следующего вида | |definition=Грамматикой в нормальной форме Хомского (''Chomsky normal form'') называется грамматика, в которой могут содержатся правила только следующего вида | ||
| − | <tex>A \rightarrow B C </tex> | + | <tex>A \rightarrow B C </tex>. |
| − | <tex>A \rightarrow a </tex> | + | <tex>A \rightarrow a </tex>. |
| − | <tex>S \rightarrow \varepsilon </tex> | + | <tex>S \rightarrow \varepsilon </tex>. |
| − | (где <tex> a </tex> {{---}} терминал, <tex> A, B, C </tex> {{---}} нетерминалы, <tex> S </tex> {{---}} стартовая вершина, <tex> \varepsilon </tex> {{---}} пустая строка). | + | (где <tex> a </tex> {{---}} терминал, <tex> A, B, C </tex> {{---}} нетерминалы, <tex> S </tex> {{---}} стартовая вершина, <tex> \varepsilon </tex> {{---}} пустая строка, стартовая вершина не содержится в правых частях правил). |
}} | }} | ||
| + | |||
| + | ==Преобразование грамматики в нормальную форму Хомского== | ||
| + | |||
| + | Рассмотрим контекстно-свободную грамматику <tex> \Gamma </tex>. Для преобразования ее в нормальную форму Хомского необходимо избавиться от правил следующего типа. | ||
| + | |||
| + | # Создание новой стартовой вершины. | ||
| + | #: Создадим новую стартовую вершину <tex> S_0 </tex> с новым правилом <tex> S_0 \rightarrow S </tex>, где <tex> S </tex> {{---}} старая стартовая вершина. | ||
| + | # Удаление вершин, которые могут породить пустую строку. | ||
| + | #: | ||
| + | # Удаление вершин, которые могут породить друг друга. | ||
| + | # Преобразование правил с длинной правой частью. | ||
Версия 05:51, 26 октября 2011
| Определение: |
| Грамматикой в нормальной форме Хомского (Chomsky normal form) называется грамматика, в которой могут содержатся правила только следующего вида
. . . (где — терминал, — нетерминалы, — стартовая вершина, — пустая строка, стартовая вершина не содержится в правых частях правил). |
Преобразование грамматики в нормальную форму Хомского
Рассмотрим контекстно-свободную грамматику . Для преобразования ее в нормальную форму Хомского необходимо избавиться от правил следующего типа.
- Создание новой стартовой вершины.
- Создадим новую стартовую вершину с новым правилом , где — старая стартовая вершина.
- Удаление вершин, которые могут породить пустую строку.
- Удаление вершин, которые могут породить друг друга.
- Преобразование правил с длинной правой частью.
Рассмотрим контекстно-свободную грамматику , из которой удалены бесполезные символы, -правила, длинные правила и цепные правила. Такая грамматика содержит только правила следующего вида:
- возможно, (при условии, что не содержится в правых частях правил)
Избавимся от правил, в правых частях которых записаны два символа, один из которых является терминалом, то есть правил вида , и . Введем для каждого терминала "персональный" нетерминал . Затем правила вида заменим парой правил и , правила вида заменим парой правил и , а правила вида — тройкой правил , и .
Теперь у нас остались только правила вида , и, возможно, (при условии, что не содержится в правых частях правил). Грамматика, содержащая правила только такого вида, называется грамматикой в нормальной форме Хомского.
Заметим, что любую контекстно-свободную грамматику можно привести к нормальной форме Хомского. Такая форма грамматики очень удобна для работы многих алгоритмов над грамматиками, например, алгоритм Кока-Янгера-Касами