Удаление цепных правил из грамматики
НЕТ ВОЙНЕ |
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян. Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием. Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей. Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить. Антивоенный комитет России |
Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению. |
meduza.io, Популярная политика, Новая газета, zona.media, Майкл Наки. |
Определение: |
Цепное правило (unit rule) — правило вида | , где и — нетерминалы.
Постановка задачи
Пусть контекстно-свободная грамматика, содержащая цепные правила. Требуется построить эквивалентную грамматику , не содержащую цепных правил.
Задача удаления цепных правил из грамматики возникает при попытке её приведения к нормальной форме Хомского.
Алгоритм
Определение: |
Цепная пара (unit pair) — упорядоченная пара | , в которой , используя только цепные правила.
Алгоритм удаления цепных правил из грамматики:
- Найти все цепные пары в грамматике .
- Для каждой цепной пары добавить в грамматику все правила вида , где — нецепное правило из .
- Удалить все цепные правила
Найти все цепные пары можно по индукции:
Базис.
— цепная пара для любого нетерминала, так как за ноль шагов.Индукция. Если пара
— цепная, и есть правило , то — цепная пара.Нетрудно понять, что такой алгоритм найдет все цепные правила грамматики
, и только их.Корректность алгоритма
Теорема: |
Пусть контекстно-свободная грамматика. — грамматика, полученная в результате применения алгоритма к . Тогда — |
Доказательство: |
|
Время работы алгоритма
Данный алгоритм работает за
.Пример
Рассмотрим грамматику:
, в которой есть два цепных правила и .- Для каждого нетерминала создадим цепную пару. Теперь множество цепных пар будет состоять из , , и .
- Рассмотрим цепное правило
добавим в множество пару , у которой первый элемент такой же как у найденной, а второй равен правому нетерминалу из текущего правила.
. Так как существует цепная пара , второй элемент которой совпадает с левым нетерминалом из правила, - Повторим второй пункт для правила и пары . Теперь множество цепных пар будет состоять из , , , , и .
- Повторим второй пункт для правила и пары , и получим множество .
- Для каждой пары добавим в
- для
- и для
- и для
- Оставшиеся цепные пары новых правил не добавят.
новые правила:
См. также
Литература
- Хопкрофт Д., Мотвани Р., Ульман Д. — Введение в теорию автоматов, языков и вычислений, 2-е изд. : Пер. с англ. — Москва, Издательский дом «Вильямс», 2002. — 528 с. : ISBN 5-8459-0261-4 (рус.)