Матричная грамматика

Материал из testwiki
Перейти к навигации Перейти к поиску

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

Формальное определение

Матричная грамматика — это упорядоченная четвёрка

G=(VN,VT,X0,M).

где

  • VN — конечное множество нетерминальных символов
  • VT — конечное множество терминальных символов
  • X0VN — начальный символ
  • M — конечное множество непустых последовательностей упорядоченных пар
(P,Q),PW(V)VNW(V),QW(V),V=VNVT.

Пары называются правилами вывода, и записываются как PQ. Последовательности называются матрицами, и записываются как

m=[P1Q1,,PrQr].

Пусть F — множество всех правил вывода в матрицах m матричной грамматики G. Тогда грамматика G является грамматикой типа i,i=0,1,2,3, неукорачивающей, линейной, λ-свободной, контектсно-свободной или контекстно-зависимой тогда и только тогда, когда грамматика G1=(VN,VT,X0,F) обладает этим свойством.

Для матричной грамматики G определяется двоичное отношение G, также обозначаемое . Для любых P,QW(V), PQ выполнено тогда и только тогда, когда существует целое число r1 такое, что существуют слова

α1,,,αr+1,P1,,Pr,R1,,Rr,,R1,,Rr

над множеством V и

  • αi=P и αr+1=Q
  • mG
  • αi=RiPiRi и αi+1=RiQiRi.

Если указанные условия выполнены, также говорят, что PQ выполнено со спецификацией (m,R1).

Пусть * — рефлексивное транзитивное замыкание отношения . Тогда, язык, порождаемый матричной грамматикой G опредеяется следующим образом:

L(G)={PW(VT)|X0*P}.

Пример

Рассмотрим матричную грамматику

G=({S,A,B},{a,b,c},S,M)

где M — совокупность следующих матриц:

[SXY],[XaXb,YcY],[Xab,Yc]

Эти матрицы, содержащие лишь контекстно-свободные правила, порождают контекстно-зависимый язык

L={anbncn|n1}.

Этот пример можно найти на страницах 8 и 9 Шаблон:Ref.

Примечания