Язык Дика

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Языком Дика (англ. Dyck language) над 2n буквами называется контекстно-свободный язык над алфавитом

{a1,b1,a2,b2,…an,bn}, порождаемый грамматикой S → е, S → a1 S b1 S, . . . , S → anSbnS.

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

Ограниченный язык Дика[править | править вики-текст]

Ограниченный язык Дика над алфавитом B=U\cupU` есть множество тех слов (цепочек) в алфавите B, которые переводятся в E последовательным вычеркиванием пар аа`,bb`,… Но не пар a`a, b`b.

Пример порождения языка Дика может быть представлен следующей грамматикой:

S→SS

S→aSa`,bSb`,…

S→aa`,bb`,…

Вывод для цепочки abbaa`b`cc`bb`b`a`

Таблица1.png

так же возможны и другие выводы данной цепочки

Простые цепочки по Дику[править | править вики-текст]

(Д-простые цепочки)

Цепочка d\inD* называется Простой цепочкой по Дику если никакое непустое начало цепочки d отличное от самой d, не принадлежит D*. Заменяя слово «начало» на слово «конец», получаем эквивалентное определение.

g=xf1…fm\overline {x},

где fi\inDxi, xi\ne\overline {x}, i=1,…,m.

Пример

Д-простая цепочка: a`baa`bb`b`a

Рассмотрим данную цепочку с первого элемента цепочки — a`. Парой для него будет последний элемент цепочки — a. Критерием для пары является отсутствие идентичности элементов между собой. Эти элементы являются спаренными и обозначается: a\ne\overline {a}`

Dx это множество всех Д-простых цепочек, которые начинаются элементом x и оканчиваются элементом \overline {x}.

Построение однозначной КС-грамматики, порождающей язык Дика[править | править вики-текст]

Заданный алфавит

{a, a`,b, b`}

Нетерминальные символы

{Da, Da`, Db, Db`, A} \in Некоторму языку, который состоит из конкатенаций любых цепочек \in Da\cup Da`\cup Db\cup Db`

E — пустая цепочка.

Da содержит, помимо цепочки aa`, все цепочки, имеющие вид

af1…fma`

где fi\inDxi, xi\ne\overline {a}

(1) Da,=aAa`=aa`

(2) A=(Da`+Db+ Db`)(A+E)

Языку Дика D соответствует уравнение:

(3) D*=(Da+Da`+Db+ Db`)

Уравнения типов (1) и (2) вместе с уравнением (3)Задают некоторую однозначную грамматику.

Примечание:

Эта грамматика однозначна, так как она порождает слева направо Д-простые сомножители цепочки \in D*.

Однозначная грамматика, порождающая ограниченный язык Дика[править | править вики-текст]

Для посторения данной грамматики мы исключаем множества Da`, Db` и т. д.

Цепочки начинающиеся штрихованными элементами, не рассматриваются.

Da=aUa`+aa`

Db=bUb`+bb`

U=(Da+Db)(U+E)

D*r=(Da+Db)D*r+E

Литература[править | править вики-текст]

  • Пентус А. Е., Пентус М. Р. Теория формальных языков: Учебное пособие. — М.: Изд-во ЦПИ при механико-математическом ф-те МГУ, 2004. — 80 с.
  • Гросс М., Лантен А. Теория формальных грамматик. — М.: Мир, 1971. — С. 232-239. — 294 с.