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

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

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

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

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

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

где

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

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

m=[P1→Q1,…,Pr→Qr].

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

Для матричной грамматики G определяется двоичное отношение ⇒G, также обозначаемое ⇒. Для любых P,Q∈W(V), P⇒Q выполнено тогда и только тогда, когда существует целое число r≥1 такое, что существуют слова

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

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

  • αi=P и αr+1=Q
  • m∈G
  • αi=RiPiRi и αi+1=RiQiRi.

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

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

L(G)={P∈W(VT)|X0⇒∗P}.

Пример

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

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

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

[S→XY],[X→aXb,Y→cY],[X→ab,Y→c]

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

L={anbncn|n≥1}.

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

Примечания