
- •1 Элементы математической лингвистики
- •1.1 Автоматы и формальные языки
- •1.2 Представление формальных языков с помощью грамматик
- •1.3 Класс порождающих формальных грамматик
- •1.4 Классификация порождающих грамматик и языков
- •2 Автоматы – распознаватели языков
- •2.1 Машина Тьюринга
- •2.2 Магазинный автомат
- •2.3 Сети Петри
- •2.4 Регулярные языки и конечные автоматы
- •Задания для контрольной работы
1.4 Классификация порождающих грамматик и языков
В теории формальных грамматик различают четыре типа языков, порождаемых четырьмя типами порождающих грамматик. Типы грамматик выделяются путём наложения последовательно усиливающихся ограничений на систему правил .
Грамматики
типа 0
(ноль) - это грамматики, в которых не
накладывается никаких
ограничений на правила вывода
,
где
и
могут быть любыми цепочками из словаря
.
Грамматики
типа 1
- это грамматики, в которых содержатся
правила
,
удовлетворяющие
условиям
,
,
где
- нетерминальный
символ,
а
,
,
и
- цепочки из словаря
.
Таким
образом, в грамматиках
типа 1 отдельный нетерминальный символ
переходит
в непустую
цепочку
(
можно
заменить на
)
только в контексте
,
.
Цепочки
и
иногда
называют левым и правым контекстами
данной продукции.
Грамматики типа 1 называют контекстными или контекстно-зависимыми (КЗ-грамматика).
Язык , порождённый КЗ-грамматикой, называется контекстно-зависимым языком (КЗ-язык).
Грамматики
типа 2
- это грамматики, в которых допустимы
лишь правила вида
,
где
(нетерминальный
символ), а
- любая непустая цепочка из
(т.е.
в любом контексте). Грамматики типа 2
называются бесконтекстными
или контекстно-свободными
(КС).
Язык , порождённый КС-грамматикой, называется контекстно-свободным языком (КС-язык).
Грамматики
типа 3
имеют правила вида
либо
,
где
;
.
При
этом
являются
одиночными символами (не цепочками)
соответствующих
словарей. Такие грамматики называются
автоматными или регулярными,
а язык, порождённый такой грамматикой,
называется автоматным
или регулярным.
Грамматику типа 3 (регулярную, Р-грамматику) можно определить как праволинейную либо как леволинейную.
Грамматика G = (T, N, P, S) называется праволинейной, если каждое правило из Р имеет вид A tB либо A t, где A N, B N, t T.
Грамматика G = (T, N, P, S) называется леволинейной, если каждое правило из Р имеет вид A Bt либо A t, где A N, B N, t T.
Выбор определения не влияет на множество языков, порождаемых грамматиками этого класса, поскольку доказано, что множество языков, порождаемых праволинейными грамматиками, совпадает с множеством языков, порождаемых леволинейными грамматиками.
Кроме рассмотренной, существуют ещё и другие классификации грамматик. Приведем наиболее важные из них.
Грамматика
непосредственных составляющих
(НС-грамматика)
- эта грамматика
имеет правила вида
или
,
где
;
,
,
-
произвольные цепочки.
Очевидно, что НС-грамматика может быть как контекстно-зависимой (КЗ), так и контекстно-свободной (КС).
Класс грамматик непосредственно составляющих (НС) значительно шире классов контекстно-зависимых (КЗ) и контекстно-свободных (КС) грамматик.
Любая КС-грамматика (КЗ-грамматика) есть НС-грамматика (но не наоборот!).
В НС-грамматике на каждом шаге разрешается заменять только один символ. Поэтому вывод в НС-грамматике удобно представить в виде дерева составляющих (С-маркера).
Язык , порождённый НС-грамматикой, называется языком непосредственно-составляющих (НС-языком).
Множество КЗ-языков и КС-языков являются подмножествами множества НС-языков.
Неукорачивающие
грамматики
-
это грамматики, в которых для любого
правила
справедливо
соотношение
.
Таким образом, в результате использования
правил вывода (продукций) получают
цепочку, длина которой не
меньше длины исходной цепочки.
Пусть грамматика задана следующим набором:
;
;
;
Очевидно, что для любой исходной цепочки применение данных четырех правил не позволит получить цепочку короче исходной. Это значит, что данная грамматика является неукорачивающей.
НС-грамматика и равные им по порождающей силе неукорачивающие грамматики достаточны (хотя и не всегда удобны) для описания фраз естественных языков.
Соотношения между типами грамматик:
(1) любая регулярная грамматика является КС-грамматикой;
(2) любая регулярная грамматика является УКС-грамматикой;
(3) любая КС-грамматика является КЗ-грамматикой;
(4) любая КС-грамматика является неукорачивающей грамматикой;
(5) любая КЗ-грамматика является грамматикой типа 0.
любая неукорачивающая грамматика является грамматикой типа 0.
Как любая порождающая грамматика, НС-грамматика содержит только правила образования, но не преобразования языковых выражений.
Владение же языком предполагает умение не только строить правильные фразы, но и переходить от одной правильно построенной фразы к другой, синонимичной ей, либо отличающейся от нее некоторым определенным образом.
Примерами таких переходов являются преобразования утвердительного предложения в вопросительное, активной формы в пассивную и т.д.
Другими словами, порождающая грамматика оперирует только с синтаксисом языка. Для описания семантики необходимо ввести правила перехода от одних выражений к другим, несущим ту же информацию.
Грамматики, использующие такие правила, называют трансформационными.
Основой трансформационных грамматик является предположение о том, что порождение предложения человеком осуществляется в два этапа.
На первом этапе с помощью некоторой НС-грамматики порождена относительно простая синтаксическая структура, называемая глубинной.
На втором этапе эта структура путем последовательного применения правил преобразования превращается в более сложную структуру, соответствующую конкретному предложению и называемую поверхностной.
Исходная НС-грамматика называется базовой, а правила преобразования - трансформациями.
Формально глубинная структура представляет собой С-маркер, порожденный категориальными правилами, т.е. правилами вывода, не содержащими терминальных символов.
Порождаемые им цепочки состоят только из нетерминальных символов, обозначающих синтаксические категории языка.
Подстановка формальных символов в порождаемые предложения осуществляется с помощью специальных правил включения.