Удаление цепных правил из грамматики — различия между версиями
(→Алгоритм) |
Vincent (обсуждение | вклад) |
||
| Строка 5: | Строка 5: | ||
== Постановка задачи == | == Постановка задачи == | ||
| − | Пусть <tex>\Gamma</tex> {{---}} [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|контекстно-свободная грамматика]], содержащая | + | Пусть <tex>\Gamma</tex> {{---}} [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|контекстно-свободная грамматика]], содержащая цепные правила. Требуется построить эквивалентную грамматику <tex>\Gamma'</tex>, не содержащую цепных правил. <br> |
Задача удаления цепных правил из грамматики возникает при попытке её приведения к [[нормальная форма Хомского|нормальной форме Хомского]]. | Задача удаления цепных правил из грамматики возникает при попытке её приведения к [[нормальная форма Хомского|нормальной форме Хомского]]. | ||
Версия 23:10, 23 января 2012
| Определение: |
| Цепное правило — правило вида , где и — нетерминалы. |
Постановка задачи
Пусть — контекстно-свободная грамматика, содержащая цепные правила. Требуется построить эквивалентную грамматику , не содержащую цепных правил.
Задача удаления цепных правил из грамматики возникает при попытке её приведения к нормальной форме Хомского.
Алгоритм
| Определение: |
| Цепная пара — упорядоченная пара , в которой , используя только цепные правила. |
Алгоритм удаления цепных правил из грамматики:
- Найти все цепные пары в грамматике .
- Для каждой цепной пары добавить в грамматику все правила вида , где — нецепное правило из .
- Удалить все цепные правила
Найти все цепные пары можно по индукции:
Базис. — цепная пара для любого нетерминала, так как за ноль шагов.
Индукция. Если пара — цепная, и есть правило , то — цепная пара.
Нетрудно понять, что такой алгоритм найдет все цепные правила грамматики , и только их.
Корректность алгоритма
| Теорема: |
Пусть — контекстно-свободная грамматика. — грамматика, полученная в результате применения алгоритма к . Тогда |
| Доказательство: |
|
|
Литература
- Хопкрофт Д., Мотвани Р., Ульман Д. — Введение в теорию автоматов, языков и вычислений, 2-е изд. : Пер. с англ. — Москва, Издательский дом «Вильямс», 2002. — 528 с. : ISBN 5-8459-0261-4 (рус.)