Нормализация контекстно-свободных грамматик для целей грамматического вывода

Ограничения правил контекстно-свободных грамматик. Восстановление контекстно-свободных грамматик, использование свойства факторизуемости правых частей правил вывода. Специфика процесса устранения нетерминалов, допускающих неукорачивающую факторизацию.

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.