Нормализация контекстно-свободных грамматик для целей грамматического вывода
Ограничения правил контекстно-свободных грамматик. Восстановление контекстно-свободных грамматик, использование свойства факторизуемости правых частей правил вывода. Специфика процесса устранения нетерминалов, допускающих неукорачивающую факторизацию.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 18.01.2018 |
Размер файла | 35,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Нормализация контекстно-свободных грамматик для целей грамматического вывода
C.Ю. Соловьев
В работе показывается, что на правила контекстно-свободных грамматик можно наложить существенные ограничения, которые позволяют развивать конструктивные методы грамматического вывода.
Задача грамматического вывода (восстановления грамматик) [Соловьев, 1985] в искусственном интеллекте и распознавании образов исследуется давно [Хант, 1978; Фу, 1977]. Считается, что построение грамматики по конечному множеству порожденных ею предложений соответствует построению базы знаний или решающего правила. Обычно конструктивные методы грамматического вывода разрабатываются для отдельных классов грамматик -суть- отдельных классов формальных языков. При этом существенно используются "тонкие" свойства порождающих грамматик. В настоящей работе показывается, что при восстановлении контекстно-свободных грамматик (КС-грамматик) можно использовать свойство факторизуемости правых частей правил вывода. Причем факторизуемость не сказывается на других важных свойствах КС-грамматик.
Контекстно-свободной грамматикой [Ахо и др., 1978] называется четверка G = < N, , P, S >, где
N - алфавит нетерминальных символов (нетерминалов);
- непересекающийся с N алфавит терминальных символов (терминалов);
P - конечное множество правил вывода вида A, где A N, - цепочка символов из N ;
S - выделенный символ из N, именуемый начальным символом.
В дальнейших выкладках будем полагать, что:
· A, B, C обозначают нетерминалы; S - начальный символ;
· , обозначают непустые цепочки символов из N ;
· x, y обозначают непустые цепочки-предложения символов из ;
· R(G,A) = { | A P} - множество всех правых частей A-правил из P;
· Запись A {1, ..., n} означает множество правил { A1, ..., An };
· запись A 1 | ... | n, также означает множество правил {A1, ..., An};
· запись G означает, что цепочка выводима из цепочки в грамматике G, т.е. может быть получена из применением конечного числа правил;
· L(G) = { x | S G x } - язык, порождаемый грамматикой G.
Принятые соглашения, в частности, позволяют задавать КС-грамматики множествами правил вывода.
С точки зрения грамматического вывода класс КС-грамматик можно изначально ограничить только такими грамматиками, в которых:
· отсутствуют e-правила - правила с пустой правой частью e - за исключением быть может правила S e;
· отсутствуют бесполезные правила и недостижимые нетерминалы, не участвующие в выводе предложений языка;
· обязательно содержится правило S #, причем начальный символ S и уникальный терминал # в правых частях других правил вывода не встречаются.
Последнее ограничение фактически означает, что множество заданных для грамматического вывода предложений “насильно” пополнено предложением из одного уникального символа #. Использование дополнительного символа позволяет обособить начальный символ S и избежать большого числа оговорок. В частности:
· S не является рекурсивным;
· S не является простым, то есть R(G,S) содержит более одной цепочки;
· цепочки из R(G,S) не имеют общих префиксов и суффиксов.
Вместе с тем удалить в восстановленной грамматике правило S # труда не составляет. факторизация нетерминал грамматика
Будем говорить, что нетерминал A допускает неукорачивающую левую факторизацию, если все предложения из R(G,A) могут быть представлены в виде i, где , 1, 2, ..., n - непустые строки. По-умолчанию будем полагать, что - префикс максимально возможной длины.
Если нетерминал A допускает неукорачивающую левую факторизацию в КС-грамматике G, то G можно трансформировать в грамматику GA, применив следующее ЛНФ-преобразование:
- шаг 1 - исключить из G все A-правила;
- шаг 2 - к оставшимся правилам добавить правила A 1 | 2 | ... | n;
- шаг 3 - во всех правилах на местах нетерминала A разместить строку A.
Пример 1. Пошаговое выполнение ЛНФ-преобразования.
Грамматика G |
>> |
шаг 1 |
|
S S | # |
S S | # |
||
S B | BA |
S B | BA |
||
A +B | +BA |
|||
B D | DC |
B D | DC |
||
C *D | *DC |
C *D | *DC |
||
D (S) | a |
D (S) | a |
>> |
шаг 2 |
>> |
шаг 3 = GA |
|
S S | # |
S S | # |
|||
S B | BA |
S B | B+A |
|||
A B | BA |
A B | B+A |
|||
B D | DC |
B D | DC |
|||
C *D | *DC |
C *D | *DC |
|||
D (S) | a |
D (S) | a |
В общем случае:
ЛНФ-преобразование является эквивалентным, т.е. L(G) = L(GA);
в грамматике GA нетерминал A не допускает неукорачивающую левую факторизацию; но
в грамматике GA может появиться [другой] нетерминал, допускающий неукорачивающую левую факторизацию.
Последнее обстоятельство иллюстрирует пример 2, в котором S получает статус нетерминала, допускающего левую факторизацию, по результатам ЛНФ-преобразования для нетерминала A.
Пример 2.
Грамматика G |
>> |
ЛНФ для A |
>> |
ЛНФ для S |
|
S S | # |
S S | # |
S aS | # |
|||
S aa | Ab |
S aa | abAb |
S a | bAb |
|||
A aba | abA |
A a | abA |
A a | abA |
В связи с этим возникает вопрос: можно ли в КС-грамматиках, последовательно применяя ЛНФ-преобразования, полностью избавиться от нетерминалов, допускающих неукорачивающую левую факторизацию?
Положительный ответ на этот вопрос связан с одной численной характеристикой КС-грамматик. В КС-грамматиках (без бесполезных правил) каждому нетерминалу A можно однозначно приписать целое число h(A), равное длине самой короткой терминальной цепочки, выводимой из A. В общем случае
h() = min{ длина(x) | G x }.
При этом всю грамматику можно охарактеризовать числом
h(G) = h(A) [ суммирование по всем AN ]
Например, для грамматики G из примера 1:
h(S) = 1, h(S) = 1, h(A) = 2, h(B) = 1, h(C) = 2, h(D) = 1 и h(G) = 8.
Для результирующей грамматики GA:
h(S) = 1, h(S) = 1, h(A) = 1, h(B) = 1, h(C) = 2, h(D) = 1 и h(GA) = 7.
В результате ЛНФ-преобразования всегда выполняется соотношение h(G) h(GA). В самом деле:
h(B) не изменяется для нетерминалов B A; а
h(A) = h(A) + h() > h(A), поскольку в грамматиках без e-правил h() 0.
Таким образом, применяя к некоторой исходной КС-грамматике G ЛНФ-преобразования, одновременно получаем убывающую последовательность положительных чисел
h1, h2, h3, …, |
(1) |
где h1 = h(G), h2 = h(GA), …, что гарантирует завершение процесса устранения нетерминалов, допускающих неукорачивающую левую факторизацию. Для примера 2 последовательность (1) имеет вид: 6, 4, 3.
Аналогично рассматривается вопрос о неукорачивающей правой факторизации. Будем говорить, что нетерминал A допускает неукорачивающую правую факторизацию, если все предложения из R(G,A) могут быть представлены в виде i, где 1, 2, ... n, - непустые строки. По-умолчанию будем полагать, что - суффикс максимально возможной длины.
Если нетерминал A допускает неукорачивающую правую факторизацию в КС-грамматике G, то G можно трансформировать в грамматику GA, применив следующее ПНФ-преобразование:
- шаг 1 - исключить из G все A-правила;
- шаг 2 - к оставшимся правилам добавить правила A 1 | 2 | ... | n;
- шаг 3 - во всех правилах на местах нетерминала A разместить строку A.
Последовательность (1) для цепочки ПНФ-преобразований также является монотонно убывающей и ограниченной снизу. Из этого следует, что в любой КС-грамматике можно избавиться от нетерминалов, допускающих неукорачивающую правую факторизацию.
Для определенности будем считать, что общий процесс неукорачивающей факторизации (НФ-преобразования) заданной грамматики состоит из последовательности процессов
устранения нетерминалов, допускающих неукорачивающую левую факторизацию; и
устранения нетерминалов, допускающих неукорачивающую правую факторизацию.
Рассмотрим влияние неукорачивающую факторизации на другие свойства КС-грамматик.
Свойство 1. Процесс устранения нетерминалов, допускающих неукорачивающую факторизацию, принципиально не порождает e-правила.
Заметим, что в традиционной задаче нисходящего синтаксического анализа [Кнут, 1978] процесс [левой] факторизации допускает порождение e-правил. Однако комбинация [левой] факторизации и удаление e-правил может породить бесконечный процесс преобразования исходной грамматики. Пример такого процесса приводится в примере 3.
Пример 3.
Грамматика G |
>> |
Факторизация S |
|
S S | # |
S aS | # |
||
S a | a S |
S e | a S |
>> |
Удалить S e |
>> |
Факторизация S |
|
S a | aS | # |
||||
S a | a S |
и т.д. |
Свойство 2. Процесс устранения нетерминалов, допускающих неукорачивающую факторизацию, не порождает простые правила. Другими словами, если исходная грамматика не содержала простые правила вывода, то это свойство сохраняется в результате НФ-преобразований.
Свойство 3. Процесс устранения нетерминалов, допускающих неукорачивающую факторизацию, может породить цепные правила вида A B. Если исходная грамматика не содержала цепные правила (за исключением быть может некоторых S-правил), то это свойство можно сохранить, включив в цепочку НФ-преобразований удаление цепных правил (см. пример 4).
Пример 4.
Грамматика G |
>> |
ЛНФ для A |
|
S S | # |
S S | # |
||
S aA | Ab |
S aaaA | aaAb |
||
A aab | aaB |
A b | B |
||
B (b) | a Sb |
B (b) | a Sb |
>> |
Удалить A B |
>> |
||
S S | # |
h(S) = 1 |
|||
S aaaA | aaAb |
h(S) = 4 |
|||
A b | (b) | a Sb |
h(A) = 1 |
|||
B (b) | a Sb |
h(S) = 3 |
Очевидно, что удаление цепных правил не изменяет характеристику h преобразованной грамматики.
Свойство 4. Описанное в свойстве 3 удаление цепных правил может породить недостижимые нетерминалы и, соответственно, бесполезные правила вывода. Так, в примере 4 после удаления цепного правила A B нетерминал B становится недостижимым. В соответствии с принятыми ограничениями исходная грамматика не содержала бесполезных правил вывода. Это свойство можно сохранить, включив в цепочку НФ-преобразований удаление недостижимых нетерминалов.
Пример 4 (продолжение).
>> |
Удалить B |
|
S S | # |
h(S) = 1 |
|
S aaaA | aaAb |
h(S) = 4 |
|
A b | (b) | a Sb |
h(A) = 1 |
Очевидно, что удаление недостижимого нетерминала уменьшает характеристику h преобразованной грамматики.
Свойство 5. Процесс устранения нетерминалов, допускающих неукорачивающую факторизацию, может породить избыточные нетерминалы.
В общем случае избыточность связана с существованием нетривиального разбиения множества нетерминалов на такие классы эквивалентности, при котором пара нетерминалов A и B принадлежит одному классу если
R+(G, A) = R+(G,B),
где R+(G,C) получается из R(G,C) заменой всех нетеминалов именами соответствующих классов эквивалентности.
Так, в грамматике GA из примера 1 существует нетривиальное разбиение нетерминалов на классы эквивалентности:
{S}, {S, A}, {B}, {C}, {D}.
Если в качестве имен классов использовать имена первых нетерминалов каждого класса, то
R+(G, S) = R+(G,A) = {B, B+S},
т.е. нетерминал A оказывается избыточным, и его удаление порождает грамматику, указанную в примере 5.
Пример 5 (продолжение примера 1).
Грамматика GA |
>> |
Удалить A |
||
S S | # |
S S | # |
h(S) = 1 |
||
S B | B+A |
S B | B+S |
h(S) = 1 |
||
A B | B+A |
||||
B D | DC |
B D | DC |
h(B) = 1 |
||
C *D | *DC |
C *D | *DC |
h(C) = 2 |
||
D (S) | a |
D (S) | a |
h(D) = 1 |
Если исходная грамматика не содержала избыточные нетерминалы, то это свойство можно сохранить, включив в цепочку НФ-преобразований удаление избыточных нетерминалов. Очевидно, что такая операция уменьшает характеристику h преобразованной грамматики.
Свойство 6. Если исходная грамматика принадлежит классу LL(1) [Ахо и др., 1978], то результирующая грамматика, полученная в результате НФ-преобразований, также принадлежит классу LL(1).
Таким образом, для целей грамматического вывода можно использовать нормализованные КС-грамматики G = < N, , P, S >, удовлетворяющие всем или некоторым свойствам из перечисленного списка:
· в P имеется правило S > #, причем в остальных правилах вывода терминал # не встречается;
· в P отсутствуют e-правила, за исключением, быть может, правила S > e;
· в P отсутствуют правила, допускающие правую и левую неукорачивающую факторизацию;
· в P отсутствуют цепные правила;
· в P отсутствуют бесполезные правила;
· в N отсутствуют простые нетерминалы;
· G не является избыточной грамматикой.
Список литературы
1. [Ахо и др., 1978] Ахо А., Ульман Дж. Теория синтаксического анализа, перевода и компиляции, тт. 1,2. - М.: Мир, 1978.
2. [Кнут, 1978] Кнут Д. Нисходящий синтаксический анализ. // Кибернетический сборник. Вып. 15. - М.: Мир, 1978.
3. [Соловьев, 1985] Соловьев С.Ю. Постановка задачи грамматического вывода. // Математическое обеспечение вычислительных машин и систем. (Математические исследования, вып. 81) Кишинев: Штиинца, 1985. http://www.park.glossary.ru/serios/read_08.php
4. [Фу, 1977] Фу К. Структурные методы в распознавании образов. - М.: Мир, 1977.
5. [Хант, 1978] Хант Э. Искусственный интеллект. - М.: Мир, 1978.
Размещено на Allbest.ru
...Подобные документы
Основные понятия теории грамматик простого и операторного предшествования, алгоритмы синтаксического разбора предложения для классов КС-грамматик; разработка дерева вывода для грамматики входного языка в форме Бэкуса-Наура с указанием шагов построения.
лабораторная работа [28,0 K], добавлен 24.07.2012Теоретические и практические основы грамматик, теория конечных автоматов-распознавателей. Эквивалентные и недостижимые состояния конечных автоматов. Классификация грамматик и порождаемых ими языков. Разработка программного комплекса построения грамматик.
курсовая работа [654,2 K], добавлен 14.11.2010Разработка программы для осуществления приведения КС-грамматики к нормальному виду. Особенности преобразования грамматик. Создание алгоритма удаления бесплодных и недостижимых символов, устранения правил с пустой правой частью. Исключение цепных правил.
курсовая работа [1,5 M], добавлен 06.01.2012Применение правил грамматики. Синтаксический анализатор, нис- и восходящий разбор, полный перебор правил подстановки. Классификация грамматик по Хомскому. Определение языков с помощью автоматов. Форма Бекуса-Наура описания синтаксиса формальных языков.
лекция [270,1 K], добавлен 19.10.2014Роль информационных технологий в быту. Теоретические аспекты формальных грамматик и их преобразование, алфавит нетерминалов. Распознаватель для преобразованной грамматики и реализация его в виде программы для проверки текстовых файлов и вводимых цепочек.
курсовая работа [129,4 K], добавлен 15.06.2009Назначение и специфика программного обеспечения "NordVision". Оценка его качества, надежности, работоспособности и устойчивости. Разработка структуры программы, пользовательского интерфейса и основных алгоритмов. Организация контекстно-зависимой помощи.
дипломная работа [2,5 M], добавлен 24.02.2015Реализация алгоритма поиска, его составляющие. Считывание матрицы лабиринта из файла, нахождение в нем свободных мест. Иерархия классов для работы в графическом режиме и вывода необходимого на экран. Дополнительные типы данных, используемые в программе.
курсовая работа [260,3 K], добавлен 17.01.2009Разработка автоматизированной системы "Кадровое агентство" с целью оформления и принятия заявок от работников, желающих найти свободные вакансии, регистрации свободных вакансий. Автоматический поиск соответствий свободных вакансий и безработных граждан.
курсовая работа [1,5 M], добавлен 05.07.2014Анализ возможностей платформы. Классификация грамматик по Хомскому. Способы задания языков. Разработка алгоритмов выполнения файловых операций на основе спроектированных интерфейсов. Криптосистема с открытым ключом. Свойства электронной цифровой подписи.
дипломная работа [3,6 M], добавлен 24.07.2014Особенности и суть языков программирования, способы их задания, цепочки символов и операции над ними. Классификация языков и грамматик, форма Бэкуса-Наура. Определение и свойства регулярных выражений, конечные автоматы и грамматики, описание программы.
курсовая работа [231,5 K], добавлен 23.06.2011Начальное представление систем нечеткого вывода: логический вывод, база знаний. Алгоритм Мамдани в системах нечеткого вывода: принцип работы, формирование базы правил и входных переменных, агрегирование подусловий, активизация подзаключений и заключений.
курсовая работа [757,3 K], добавлен 24.06.2011Разработка формальной грамматики для выражений, содержащих: логические и арифметические операции, константы, идентификаторы, знаки отношений и т.д., ее отладка в соответствии с требованиями метода параллельного предшествования. Разработка сканера.
контрольная работа [45,8 K], добавлен 24.09.2010Математична модель формальної граматики та виведення ланцюжків. Розробка програми, що одержує на вході контекстно-вільну граматику, яка визначена правилами підстановки, та друкує в результаті роботи одне або більше виведення термінального ланцюжка.
лабораторная работа [162,3 K], добавлен 15.05.2011Использование программой функции ввода-вывода данных для реализации дружественного интерфейса с пользователем. Функции консоли и особенности их применения для обеспечения аккуратного ввода информации и упорядоченного вывода. Обзор стандартных функций.
лабораторная работа [40,4 K], добавлен 06.07.2009Решение задачи аппроксимации поверхности при помощи системы нечёткого вывода. Определение входных и выходных переменных, их термы; алгоритм Сугено. Подбор функций принадлежности, построение базы правил, необходимых для связи входных и выходных переменных.
курсовая работа [1,8 M], добавлен 31.05.2014Использование стандартных библиотек Windows. Установка и настройка дополнительных устройств ввода/вывода. Использование камеры, динамиков, сканера, дисков и портов ввода/вывода. Драйверы внешних устройств. Безопасность данных в операционных системах.
контрольная работа [1,8 M], добавлен 13.10.2022Структурная схема процесса функционирования вычислительного центра. Моделирование процесса обслуживания ста пользователей. Оценка числа пользователей в очереди, коэффициента загрузки ЭВМ, вероятности отказа по причине отсутствия свободных мест в очереди.
курсовая работа [54,9 K], добавлен 25.06.2011Основные этапы систем нечеткого вывода. Правила нечетких продукций, используемые в них. Нечеткие лингвистические высказывания. Определение алгоритмов Цукамото, Ларсена, Сугено. Реализации нечеткого вывода Мамдани на примере работы уличного светофора.
курсовая работа [479,6 K], добавлен 14.07.2012Основы модального анализа и алгоритм его проведения. Свойства материалов. Отличия в контактах при анализе свободных вибраций. Добавление результатов. Свободная вибрация с предварительным натяжением. Связывание структурного и модального анализов в схеме.
презентация [943,9 K], добавлен 07.03.2013Характеристика, разновидности, архитектура процессоров. Понятие интерфейса, описание видов шин, внешних запоминающих устройств, особенности конструкции. Специфика файловой системы устройства подсистемы ввода/вывода, достоинства, недостатки, база данных.
курс лекций [747,0 K], добавлен 24.06.2009