Нормальная форма Хомского — различия между версиями
Vincent (обсуждение | вклад) |
|||
Строка 1: | Строка 1: | ||
+ | ==Несколько определений== | ||
+ | |||
{{Определение | {{Определение | ||
|definition=Грамматикой в нормальной форме Хомского (''Chomsky normal form'') называется грамматика, в которой могут содержатся правила только следующего вида | |definition=Грамматикой в нормальной форме Хомского (''Chomsky normal form'') называется грамматика, в которой могут содержатся правила только следующего вида | ||
Строка 10: | Строка 12: | ||
}} | }} | ||
+ | {{Определение | ||
+ | |definition=Вершина называется обнуляемой, если из нее можно прямо или косвенно получить пустую строку. | ||
+ | Если <tex> A \rightarrow \varepsilon </tex>, то <tex> A </tex> {{---}} обнуляемая. | ||
+ | |||
+ | Если <tex> A \rightarrow B_1....B_n </tex>, где все <tex> B_i </tex> обнуляемые, то <tex> A </tex> тоже обнуляемая. | ||
+ | }} | ||
==Преобразование грамматики в нормальную форму Хомского== | ==Преобразование грамматики в нормальную форму Хомского== | ||
Версия 06:07, 26 октября 2011
Несколько определений
Определение: |
Грамматикой в нормальной форме Хомского (Chomsky normal form) называется грамматика, в которой могут содержатся правила только следующего вида
. . (где . — терминал, — нетерминалы, — стартовая вершина, — пустая строка, стартовая вершина не содержится в правых частях правил). |
Определение: |
Вершина называется обнуляемой, если из нее можно прямо или косвенно получить пустую строку.
Если Если , то — обнуляемая. , где все обнуляемые, то тоже обнуляемая. |
Преобразование грамматики в нормальную форму Хомского
Рассмотрим контекстно-свободную грамматику
. Для преобразования ее в нормальную форму Хомского необходимо избавиться от правил следующего типа.- Создание новой стартовой вершины.
- Создадим новую стартовую вершину с новым правилом , где — старая стартовая вершина.
- Удаление вершин, которые могут породить пустую строку.
- Удаление вершин, которые могут породить друг друга.
- Преобразование правил с длинной правой частью.
Рассмотрим контекстно-свободную грамматику , из которой удалены бесполезные символы, , -правиладлинные правила и цепные правила. Такая грамматика содержит только правила следующего вида:
- возможно, (при условии, что не содержится в правых частях правил)
Избавимся от правил, в правых частях которых записаны два символа, один из которых является терминалом, то есть правил вида
, и . Введем для каждого терминала "персональный" нетерминал . Затем правила вида заменим парой правил и , правила вида заменим парой правил и , а правила вида — тройкой правил , и .Теперь у нас остались только правила вида
, и, возможно, (при условии, что не содержится в правых частях правил). Грамматика, содержащая правила только такого вида, называется грамматикой в нормальной форме Хомского.Заметим, что любую контекстно-свободную грамматику можно привести к нормальной форме Хомского. Такая форма грамматики очень удобна для работы многих алгоритмов над грамматиками, например, алгоритм Кока-Янгера-Касами