Язык Дика
Материал из Википедии — свободной энциклопедии
Для улучшения статьи желательно:
|
Языком Дика (англ. Dyck language) над 2n буквами называется контекстно-свободный язык над алфавитом
{a1,b1,a2,b2,…an,bn}, порождаемый грамматикой S —> е, S —" a1 S b1 S, . . . , S —> anSbnS.
При любом положительном целом n грамматика является однозначной. Словами этого языка являются последовательности правильно вложенных скобок n типов.
Содержание |
[править] Ограниченный язык Дика
Ограниченный язык Дика над алфавитом B=UU` есть множество тех слов (цепочек) в алфавите B, которые переводятся в E последовательным вычеркиванием пар аа`,bb`,… Но не пар a`a, b`b.
Пример порождения языка Дика может быть представлен следующей гарамматикой:
S—>SS
S—>aSa`,bSb`,…
S—>aa`,bb`,…
Вывод для цепочки abbaa`b`cc`bb`b`a`
так кже возможны и другие выводы данной цепочки
[править] Простые цепочки по Дику
(Д-простые цепочки)
Цепочка dD* называется Простой цепочкой по Дику если никакое непустое начало цепочки d отличное от самой d, не принадлежит D*. Заменяя слово «начало» на слово «конец», получаем эквивалентное определение.
g=xf1…fm,
где fiDxi, xi, i=1,…,m.
Пример
Д-простая цепочка: a`baa`bb`b`a
Рассмотрим данную цепочку с первого элемента цепочки — a`. Парой для него будет последний элемент цепочки — a. Критерием для пары является отсутствие идентичности элементов между собой. Эти элементы являются спаренными и обозначается: a`
Dx это множество всех Д-простых цепочек, которые начинаются элементом x и оканчиваются элементом .
[править] Построение однозначной КС-грамматики, порождающей язык Дика
Заданный алфавит
{a, a`,b, b`}
Нетерминальные символы
{Da, Da`, Db, Db`, A} Некоторму языку, который состоит из конкатенаций любых цепочек DaDa`Db Db`
E — пустая цепочка.
Da содержит, помимо цепочки aa`, все цепочки, имеющие вид
af1…fma`
где fiDxi, xi
(1) Da,=aAa`=aa`
(2) A=(Da`+Db+ Db`)(A+E)
Языку Дика D соответствует уравнение:
(3) D*=(Da+Da`+Db+ Db`)
Уравнения типов (1) и (2) вместе с уравнением (3)Задают некоторую однозначную гарамматику.
Примечание:
Эта грамматика одназначна, тк она пораждает слева направо Д-простые сомножетели цепочки D*.
[править] Однозначная грамматика, порождающая ограниченный язык Дика
Для посторения данной грамматики мы исключаем множества Da`, Db` и т. д.
Цепочки начинающиеся штрихованными элементами, не рассматриваются.
Da=aUa`+aa`
Db=bUb`+bb`
U=(Da+Db)(U+E)
D*r=(Da+Db)D*r+E
[править] Литература
- Пентус А. Е., Пентус М. Р. Теория формальных языков: Учебное пособие. — М.: Изд-во ЦПИ при механико-математическом ф-те МГУ, 2004. — 80 с.