Jump to content

Контролируемая грамматика

Контролируемые грамматики [1] — это класс грамматик , которые обычно расширяют контекстно-свободные грамматики дополнительными средствами управления выводом предложения на языке. Существует множество различных типов контролируемых грамматик, четырьмя основными разделами которых являются индексированные грамматики , грамматики с предписанными последовательностями вывода, грамматики с контекстными условиями применения правил и грамматики с параллелизмом в применении правил. Поскольку индексированные грамматики настолько хорошо зарекомендовали себя в этой области, в этой статье будут рассмотрены только последние три вида контролируемых грамматик.

Управление по заданным последовательностям

[ редактировать ]

Грамматики с предписанными последовательностями — это грамматики, в которых последовательность применения правил каким-либо образом ограничена. Существует четыре различных версии грамматик предписанных последовательностей: грамматики, управляемые языком (часто называемые просто управляемыми грамматиками), матричные грамматики , векторные грамматики и программированные грамматики.

В стандартном формализме контекстно-свободной грамматики сама грамматика рассматривается как четырехкортеж . , где N — набор нетерминальных/фразовых символов , T — непересекающийся набор символов терминала/слова, S — специально назначенный начальный символ, выбранный из N , а P — набор правил продукции, таких как , где X — некоторый член N , и какой-то член .

Продукция такой грамматики представляет собой последовательность правил в P , которые при применении в порядке последовательности приводят к терминальной строке. То есть можно рассматривать множество мыслимых дифференцирований в G как множество и язык G как набор терминальных строк . Управляющие грамматики серьезно относятся к этому определению языка, порожденному грамматикой, конкретизируя набор производных как аспект грамматики. Таким образом, заданная грамматика с контролируемой последовательностью представляет собой, по крайней мере, приблизительно пятикортежную грамматику. где все, кроме R, такое же, как и в CFG, а R представляет собой бесконечный набор допустимых последовательностей вывода. .

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

Грамматики, контролируемые языком

[ редактировать ]

Грамматики, управляемые языком, — это грамматики, в которых производственные последовательности составляют четко определенный язык произвольной природы, обычно, хотя и не обязательно регулярный, на основе набора (опять же обычно, хотя и не обязательно) контекстно-свободных производственных правил. Они также часто имеют шестой набор в грамматическом кортеже, что делает его , где F — множество продукций, которые разрешено применять безосновательно. Отныне эта версия грамматик, управляемых языком, с так называемой «проверкой внешнего вида».

Теоретико-доказательное описание

[ редактировать ]

Мы позволяем регулярно контролируемой контекстно-свободной грамматике с проверкой внешнего вида быть шестикортежной где N , T , S и P определены как в CFG, R — подмножество P*, регулярный язык над P , а F — некоторое подмножество P. составляющее Затем мы определяем отношение немедленного вывода следующее:

Учитывая некоторые строки x и y , обе в и некоторое правило ,

имеет место, если либо

и , или
и

Интуитивно это означает, что правило может применяться к строке, если левая часть правила присутствует в этой строке, или если правило входит в набор «бесприменимых» правил, которые могут «применяться» к строке без меняя что-либо. Это требование, согласно которому должны применяться непусто применимые правила, представляет собой аспект проверки внешнего вида такой грамматики. Языком такого типа грамматики является просто набор терминальных строк. .

Рассмотрим простую (хотя и не самую простую) контекстно-свободную грамматику, генерирующую язык :

Позволять , где

В управляемой языком форме эта грамматика просто (где — регулярное выражение, обозначающее набор всех последовательностей продукционных правил). Простая модификация этой грамматики: изменение набора управляющих последовательностей R на набор и изменив свой бессмысленный набор правил F на , дает грамматику, которая генерирует язык, отличный от CF. . Чтобы увидеть, как это сделать, рассмотрим общий случай некоторой строки с n экземплярами S в ней, т.е. (особый случай тривиально выводит строку a, которая , неинтересный факт).

Если мы выбрали некоторую произвольную производственную последовательность , мы можем рассмотреть три возможности: , , и Когда мы переписываем все n экземпляров S как AA , применяя правило f к строке u раз, и переходим к применению g , которое применяется бессмысленно (в силу того, что оно находится в F ). Когда , мы переписываем все n экземпляров S как AA , а затем пытаемся выполнить перезапись n+1 , используя правило f , но это терпит неудачу, потому что больше нет S для перезаписи, а f не находится в F и поэтому не может применяться бессмысленно, таким образом, когда , вывод не удался. Наконец, тогда , мы переписываем u экземпляров S один экземпляр S для перезаписи при последующем применении g , переписывая S как X. , оставляя по крайней мере Учитывая, что ни одно правило этой грамматики никогда не переписывает X , такой вывод никогда не приведет к созданию терминальной строки. Таким образом, только выводы с когда-нибудь успешно перезапишет строку . Аналогичные рассуждения справедливы и для числа A s и v . В общем, тогда мы можем сказать, что единственные действительные выводы имеют структуру создаст терминальные строки грамматики. Правила X в сочетании со структурой управления по существу вынуждают все S перезаписывать как AA до того, как любые A будут перезаписаны как S , что опять же вынуждено произойти перед всеми еще более поздними итерациями над S. цикл до-АА . Наконец, S перезаписываются как s . Таким образом, количество S удваивается для каждого экземпляра который появляется в последовательности, производной от терминала.

Выбрав две случайные нетерминальные производные последовательности и одну терминальную, мы можем увидеть это в работе:

Позволять , то мы получим неудавшийся вывод:

Позволять , то мы получим неудавшийся вывод:

Позволять , то мы получим успешный вывод:

Подобные выводы со вторым циклом производить только SSSS . Показан только (продолжающийся) успешный вывод:

Матричные грамматики

[ редактировать ]

Матричные грамматики (расширенные в отдельной статье ) представляют собой частный случай регулярных управляемых контекстно-свободных грамматик, в которых язык производственных последовательностей имеет форму , где каждая «матрица» представляет собой единую последовательность. Для удобства такая грамматика представляется не грамматикой над P , а просто набором матриц вместо языка и правил продукции. Таким образом, матричная грамматика представляет собой пятикортеж , где N , T , S и F определяются по существу так же, как это было сделано ранее ( на этот раз F является подмножеством M ), а M представляет собой набор матриц где каждый это контекстно-свободное производственное правило.

Таким образом, отношение производных в матричной грамматике определяется просто как:

Учитывая некоторые строки x и y , обе в и некоторая матрица ,

имеет место, если либо

, , и , или
и

Неформально, матричная грамматика — это просто грамматика, в которой во время каждого цикла перезаписи должна выполняться определенная последовательность операций перезаписи, а не просто одна операция перезаписи, т. е. одно правило «запускает» каскад других правил. Подобные явления могут быть реализованы в стандартной контекстно-зависимой идиоме, как это делалось в фонологии, основанной на правилах, и в более ранней Трансформационной грамматике , с помощью так называемых «подпитывающих» правил, которые изменяют вывод таким образом, чтобы обеспечить среду для нефакультативное правило, которое следует сразу за ним.

Векторные грамматики

[ редактировать ]

Векторные грамматики тесно связаны с матричными грамматиками и фактически могут рассматриваться как особый класс матричных грамматик, в котором если , то таковы и все его перестановки . Однако для удобства мы определим векторные грамматики следующим образом: векторная грамматика представляет собой 5-кортеж , где N , T и F определены ранее ( F снова является подмножеством M ), и где M представляет собой набор векторов , каждый вектор представляет собой набор контекстно-свободных правил.

Тогда отношение производных в векторной грамматике будет следующим:

Учитывая некоторые строки x и y , обе в и некоторая матрица ,

имеет место, если либо

, , и , где , или
и

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

Программированные грамматики

[ редактировать ]

Программированные грамматики представляют собой относительно простые расширения контекстно-свободных грамматик с постепенным контролем вывода. Программированная грамматика представляет собой четырехкортеж , где N , T и S такие же, как в контекстно-свободной грамматике, а P — набор кортежей , где p — контекстно-свободное производственное правило, является подмножеством P (называемым полем успеха), и является подмножеством P (называемым полем отказа). Если поле сбоя каждого правила в P пусто, в грамматике отсутствует проверка внешнего вида, а если хотя бы одно поле сбоя не пусто, грамматика имеет проверку внешнего вида. Отношение вывода в программной грамматике определяется следующим образом:

Даны две строки и некоторое правило ,

и , или
и А не появляется в x.

Язык программируемой грамматики G определяется путем ограничения правила вывода, как , где для каждого , или или .

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

Как и многие другие контролируемые грамматики, запрограммированные грамматики могут генерировать язык :

Позволять , где

Вывод строки aaaa следующий:

Как видно из вывода и правил, каждый раз и преуспевают, они возвращают информацию самим себе, что заставляет каждое правило продолжать перезаписывать строку снова и снова, пока оно больше не сможет это делать. В случае неудачи деривация может переключиться на другое правило. В случае , это означает перезапись всех S как AA , а затем переключение на . В случае , это означает перезапись всех A как S , а затем переключение либо на , что приведет к удвоению количества произведенных S или к который преобразует S в a s, а затем останавливает вывод. Каждый цикл через затем поэтому либо удваивает исходное количество S , либо преобразует S в a . Тривиальный случай генерации a , если его трудно увидеть, просто включает в себя бессмысленное применение , таким образом перепрыгивая прямо к что также бессмысленно применимо, а затем перепрыгиваем к производит . который

Управление по условиям контекста

[ редактировать ]

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

Условные грамматики

[ редактировать ]

Условные грамматики — это простейшая версия грамматик, управляемых контекстными условиями. Структура условной грамматики очень похожа на структуру обычной переписанной грамматики: , где N , T и S определены в контекстно-свободной грамматике, а P представляет собой набор пар формы где p — производственное правило (обычно контекстно-свободное), а R — язык (обычно регулярный) над . Когда R является регулярным, R можно просто выразить как регулярное выражение.

Теоретико-доказательное определение

[ редактировать ]

Используя это определение условной грамматики, мы можем определить отношение производных следующим образом:

Даны две строки , и некоторое производственное правило ,

тогда и только тогда, когда , , и

Тогда неформально правило продукции для некоторой пары в P может применяться только к строкам, которые находятся на языке ее контекста. Так, например, если бы у нас была какая-то пара , мы можем применить это только к строкам, состоящим из любого количества букв , за которыми следует ровно только S, за которым следует любое количество букв b , то есть к предложениям в , например, строки S , aSb , aaaS , aSbbbbbb и т. д. Это не может применяться к таким строкам, как xSy , aaaSxbbb и т. д.

Условные грамматики могут генерировать контекстно-зависимый язык. .

Позволять , где

Затем мы можем сгенерировать предложение aaaa со следующим выводом:

Полуусловные грамматики

[ редактировать ]

Полуусловная грамматика очень похожа на условную грамматику, и технически класс полуусловных грамматик является подмножеством условных грамматик. Вместо указания того, как должна выглядеть вся строка, чтобы правило применялось, полуусловные грамматики указывают, что для применения правила строка должна иметь в качестве подстрок все строки из некоторого набора строк и ни одной из другого набора. . Тогда формально полуусловная грамматика представляет собой кортеж , где N , T и S определены как в CFG, а P представляет собой набор правил, таких как где p — производственное правило (обычно контекстно-свободное), а R и Q — конечные наборы строк. Тогда отношение производных можно определить следующим образом.

Для двух струн и некоторое правило ,

тогда и только тогда, когда каждая строка в R является подстрокой , и ни одна строка в Q не является подстрокой

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

Ниже приведен пример полуусловной грамматики, также как пример грамматик случайного контекста.

Случайные контекстные грамматики

[ редактировать ]

Грамматика случайного контекста — это полуусловная грамматика, в которой R и Q являются подмножествами N. множества Поскольку подмножества N являются конечными множествами над , ясно, что грамматики случайного контекста действительно являются разновидностью полуусловных грамматик.

Подобно условным грамматикам, грамматики случайного контекста (и, следовательно, полуусловные грамматики) могут генерировать язык . Одна грамматика, которая может это сделать:

Позволять , где

Рассмотрим теперь постановку aaaa :

Поведение множеств R здесь тривиально: любую строку можно переписать в соответствии с ними, поскольку они не требуют наличия каких-либо подстрок. Однако поведение множеств Q более интересно. В вынуждает нас , набор Q перезаписать S , тем самым начиная процесс S -удвоения, только тогда, когда нет Y или A в строке , что означает только тогда, когда предыдущий процесс S -удвоения был полностью инициирован, исключая возможность удвоения только некоторых S . В , который переводит процесс S -удвоения на второй этап, мы не можем начать этот процесс до тех пор, пока первый этап не будет завершен и не останется больше S , которые можно попытаться удвоить, потому что набор Q препятствует применению правила, если есть S символ все еще находится в строке. В , мы завершаем этап удвоения, возвращая S обратно только тогда, когда больше не осталось X , которые нужно перезаписывать, то есть когда второй этап завершен. Мы можем проходить через эти этапы столько раз, сколько захотим, переписывая все S в XX , затем переписывая каждый X в Y, а затем каждый Y в S , и, наконец, заканчивая заменой каждого S на A , а затем на a. . Поскольку правило замены S на A запрещает применение к строке с X в ней, мы не можем применить его в середине первого этапа процесса S -удвоения, что снова не позволяет нам удвоить только некоторые S .

Упорядоченные грамматики

[ редактировать ]

Упорядоченные грамматики, возможно, являются одним из самых простых расширений грамматик в контролируемую грамматическую область. Упорядоченная грамматика — это просто кортеж где N , T и S идентичны правилам в CFG, а P — набор контекстно-свободных правил перезаписи с частичным упорядочением. . Частичный порядок затем используется для определения того, какое правило применить к строке, если применимо несколько правил. Тогда отношение производных будет следующим:

Учитывая некоторые строки и некоторые правила ,

тогда и только тогда, когда нет правила такой, что .

Как и многие другие грамматики, управляемые контекстом, упорядоченные грамматики могут обеспечивать применение правил в определенном порядке. Поскольку это важнейшее свойство предыдущих грамматик, которые могли породить язык , неудивительно, что грамматика, которая явно использует порядок правил, а не кодирует его через строковые контексты, также должна иметь возможность захватывать этот язык. И как оказалось, существует именно такая упорядоченная грамматика:

Позволять , где P — частично упорядоченное множество, описываемое диаграммой Хассе

Вывод строки aaaa прост:

На каждом шаге вывода происходит циклическая перезапись. Обратите внимание: если на пятом шаге SY у нас было четыре варианта: , первые два из которых останавливают вывод, поскольку Z невозможно переписать. В примере мы использовали чтобы вывести SS , но подумайте, выбрали ли мы вместо. Мы бы создали строку AS , варианты которой: и , оба из которых останавливают вывод. Таким образом, со строкой SY и наоборот с YS мы должны переписать Y , чтобы получить SS . То же самое справедливо и для других комбинаций, так что в целом упорядочивание приводит к остановке вывода или продолжению переписывания всех S в XX , затем всех X в Y , затем всех Y в S и так далее. , затем, наконец, все S в A , затем все A в as . Таким образом, строка можно переписать только как который производит s или как . Начиная с n = 0 , должно быть ясно, что эта грамматика генерирует только язык .

Грамматики с параллелизмом

[ редактировать ]

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

Индийские параллельные грамматики

[ редактировать ]

Индийская параллельная грамматика — это просто CFG, в которой для использования правила перезаписи все экземпляры нетерминального символа правил должны быть переписаны одновременно. Так, например, дана строка aXbYcXd с двумя экземплярами X и некоторым правилом , единственный способ переписать эту строку с помощью этого правила — переписать ее как awbYcwd ; ни awbYcXd , ни aXbYcwd не являются допустимыми перезаписями в индийской параллельной грамматике, поскольку они не переписывают все экземпляры X .

Индийские параллельные грамматики могут легко создать язык :

Позволять , где

Генерировать aabaab довольно просто:

Язык еще проще:

Позволять , где P состоит из

Уже из первого правила и требования, чтобы все экземпляры нетерминала переписывались одновременно по одному и тому же правилу, должно быть очевидно, что число S удваивается на каждом шаге перезаписи с использованием первого правила, что дает шаги вывода . Окончательное применение второго правила заменяет все S на s , показывая тем самым, как этот простой язык может создать язык .

К-грамматики

[ редактировать ]

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

3-грамматика может создать язык , как можно видеть ниже:

Позволять , где P состоит из:

Со следующим выводом для aaabbbccc :

На каждом шаге вывода, кроме первого и последнего, мы использовали саморекурсивные правила. . Если бы мы не использовали рекурсивные правила, а использовали бы, скажем, , если одно из правил не является саморекурсивным, количество нетерминалов уменьшится до 2, что сделает невозможным дальнейшее выведение строки, поскольку в ней будет слишком мало нетерминалов для перезаписи.

Русские параллельные грамматики

[ редактировать ]

Русские параллельные грамматики [2] находятся где-то между индийскими параллельными грамматиками и k-грамматиками, определяемыми как , где N , T и S такие же, как в контекстно-свободной грамматике, а P — набор пар , где является контекстно-свободным продукционным правилом, а k равно 1 или 2. Применение правила включает переписывание k вхождений A в w одновременно.

Разбросанные контекстные грамматики

[ редактировать ]

Грамматика с рассеянным контекстом представляет собой четырехкортеж. где N , T и S определены как в контекстно-свободной грамматике, а P — это набор кортежей, называемых матрицами. , где может варьироваться в зависимости от матрицы. Отношение производных для такой грамматики имеет вид

тогда и только тогда, когда
, и
, для

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

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

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

Позволять , где

Вывод aaabbbccc тогда тривиален:

  1. ^ Дассов, Дж., Пуун, Г. и Саломаа, А. Грамматики с контролируемыми выводами. В Г. Розенберге и А. Саломаа (ред.) Справочник по формальным языкам , Vol. 2, гл. 3.
  2. ^ Дассов, Дж. 1984. О некоторых расширениях русских параллельных контекстно-свободных грамматик . Acta Cybernetica 6, стр. 355–360.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: c61a50964a60c51e980911265b38ad02__1678815540
URL1:https://arc.ask3.ru/arc/aa/c6/02/c61a50964a60c51e980911265b38ad02.html
Заголовок, (Title) документа по адресу, URL1:
Controlled grammar - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)