Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Хватков М.Формальные языки и грамматики реферат...docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
70 Кб
Скачать
☆

Преобразование видов грамматики и ее построение

Интересным представляет вопрос о преобразовании видов грамматики друг в друга. Можно ли, имея порождающую грамматику, построить, скажем, перечисляющую? Ответ — да, можно. Для этого достаточно генерировать цепочки, упорядочив их, скажем по длине и порядку символов. Но превратить перечисляющую грамматику в распознающую в общем случае нельзя. Можно использовать следующий метод. Получив на вход цепочку, запустить процесс перечисления цепочек и ждать, напечатает ли перечисляющая грамматика эту цепочку или нет. Если такая цепочка напечатана, то заканчиваем процесс перечисления и печатаем «Да». Если цепочка принадлежит языку, то она обязательно будет напечатана и, таким образом, распознана. Но, если цепочка не принадлежит языку, то процесс распознавания будет продолжаться бесконечно. Программа распознающей грамматики зациклится. В этом смысле мощность распознающих грамматик меньше мощности порождающих и перечисляющих. Это следует иметь ввиду, когда сравнивают порождающие грамматики Хомского и распознающие машины Тьюринга

грамматика, это способ задания формального языка. Рассмотрим пример грамматики L = {anbn}, где n – натуральное число. Она задаёт язык L, состоящий из цепочек ab, aabb, aaabbb и т.д. Количество таких цепочек бесконечно, но грамматика задана при помощи всего лишь 8 символов, т.е. конечна. Если бы грамматика была бесконечна, то человек был бы не в силах её понять.

Для построения грамматики, необходимо выявить синтаксические закономерности, т.е. принципы, по которому построены цепочки этого языка. Таким образом, формальная грамматика является конечным способом описания синтаксических закономерностей языка.

Если мы имеем бесконечное множество цепочек набранных случайным образом (т.е. мы не можем выявить синтаксические закономерности, описывающие внутреннее строение этих цепочек), то грамматику для такого множества построить нельзя, и, в целях простоты, языком это множество считать тоже не будем.

Если для языка всё же можно выявить синтаксические закономерности и построить формальную грамматику, то для дальнейшей работы с этой грамматикой её необходимо описать в рамках единого формализма, называемого синтаксической теорией. Синтаксическая теория представляет из себя некий метаязык, используемый для описания грамматики. Наиболее известным, из таких метаязыков, являются порождающие грамматики Хомского. Используя формальную запись грамматики, её можно обработать на компьютере, что бы как-либо преобразовывать цепочки языка.

Состав формальной грамматики. Примеры

Формальная грамматика G состоит из совокупностей: T = {t1, t2, ... , tk} – множество терминальных символов языка или множество основных понятий языка ; N = {n1, n2, ..., nm} – множество нетерминальных символов языка или вспомогательных понятий, обозначений конкретных классов слов, например, глаголов или предлогов, причем во множестве N содержится n0 – начальный символ из N ; P = {p1, p2, ..., pq} – система подстановок (продукции) слов вида в слова или замен всех слов s1(x) в рассматриваемой системе соотношений на слова вида s2(x) .

Язык (множество слов S(X) ) задается грамматикой G(S) – структурой правил, которые позволяют порождать все слова и только их.

Грамматический анализ – процесс редукции к нетерминальному символу или слову.

Множество – словарь грамматики G. Правила вывода – это непустое множество правил вида , где , а " " – отношение вида "левое (можно) заменить на правое".

Слово выводимо из слова с помощью правила , если , . Последовательность называется выводом g из f, если fi+1 выводимо из fi для всех . Признаком завершения процесса (последовательности) вывода является отсутствие слова, выводимого из g.

Пример. Опишем элементы естественного, например, русского языка в терминах формальных грамматик. Алфавит языка X = {А, а, Б, б, ... , Я, я, ., ,, :, ;, ., !, ?, ", ", (, )}, T={<корни>, <приставки> и т.д.}, N = {предложение, подлежащее, сказуемое, глагол, местоимение и т.д.}, n0 = "предложение" . Например, пусть

Т = {арбуз, банан, красный, греет, загорает, бок},

N = {сказуемое, подлежащее, определение, дополнение, группа подлежащего, группа сказуемого},

n0 = {предложение} ,

P = {p1: предложение (группа подлежащего), (группа сказуемого ),

p2: группа подлежащего (определение)(подлежащее) ,

p3: группа сказуемого (сказуемое) (дополнение) ,

p4: определение "красный" ,

p5: подлежащее "арбуз" ,

p6: подлежащее "банан" ,

p7: сказуемое "греет" ,

p8: дополнение "банан" ,

p9: дополнение "бок"} .

Тогда справедливы следующие выводы:

предложение (группа подлежащего)(группа сказуемого)

(определение) (подлежащее) (группа сказуемого)

(определение) (подлежащее) (сказуемое) (дополнение)

"красный" (подлежащее) (сказуемое )(дополнение)

"красный арбуз" (сказуемое) (дополнение)

"красный арбуз греет" (дополнение)

"красный арбуз греет бок".

Таким образом, мы по формальным правилам построили предложение естественного языка.

Различают четыре основных типа формальных грамматик.

Грамматика типа 0 (G–0) – грамматика, в которой нет ограничений на правила вывода (то есть в правиле вывода , f и g – любые).

Грамматика типа 1 (G–1) – грамматика, в которой содержатся правила вида , где n – нетерминальный символ , f1 , f2 , w – цепочки из словаря W.

Грамматика типа 2 (G–2) – грамматика, в которой допустимы лишь правила вида .

Грамматика типа 3 (G–3) имеет правила вида , либо , где .

Грамматики типа G–0 называются свободными, типа G–1 – контекстно-зависимыми, типа G–2 – контекстно-свободными, типа G–3 – регулярными или автоматными.

Коротко говоря, формальный язык — это математическая модель реального языка. Под реальным языком здесь понимается некий способ коммуникации (общения) субъектов друг с другом. Для общения субъекты используют конечный набор знаков (символов), которые проговариваются (выписываются) в строгом временном порядке, т.е. образуют линейные последовательности. Такие последовательности обычно называют словами или предложениями. Таким образом, здесь рассматривается только т.н. коммуникативная функция языка, которая изучается с использованием математических методов. Другие функции языка здесь не изучаются и, потому, не рассматриваются.