Язык Дика — различия между версиями
Senya (обсуждение | вклад) (→Правила вывода в языке Дика) (Метки: правка с мобильного устройства, правка из мобильной версии) |
Senya (обсуждение | вклад) (→Правила вывода в языке Дика) (Метки: правка с мобильного устройства, правка из мобильной версии) |
||
| Строка 53: | Строка 53: | ||
При этом такое представление единственно. | При этом такое представление единственно. | ||
}} | }} | ||
| + | |||
| + | Чтобы перейти от некоммутативного производящего ряда к обычному, сделаем подстановку <tex>a = s, b = s, \lambda = s^0 = 1</tex>. Уравнение <tex>D(a, b) = \lambda + aD(a, b)bD(a, b)</tex> примет вид <tex>D(s, s) = 1 + s^2D(s, s)</tex>. | ||
| + | |||
| + | Отсюда, обозначив <tex>D(s, s)</tex> через <tex>d(s),</tex> получим <tex>d(s) = 1 + s^2d(s)^2</tex> | ||
| + | |||
| + | Решение <tex>d(s) = \dfrac{1 - \sqrt{1 - 4s^2}}{2s^2}</tex> | ||
| + | этого уравнения совпадает с производящей функцией для [[Числа Каталана#Вычисление производящей функции чисел Каталана | чисел Каталана]]. Необходимость подстановки <tex>s^2</tex> вместо <tex>s</tex> объясняется тем, что в языке Дика длина слова, составленного из <tex>n</tex> пар скобок, равна <tex>2n</tex>: мы перечисляем слова по числу скобок, а не ''пар'' скобок. | ||
Версия 13:29, 14 мая 2018
| Определение: |
| Пусть — произвольный конечный набор различных букв. Словом в алфавите называется произвольная конечная последовательность буквa где . Число называется длиной слова. Языком над алфавитом называется произвольное (конечное или бесконечное) множество слов в алфавите . |
Пустое слово имеет длину и может входить или не входить в язык.
| Определение: |
| Язык Дика (англ. Dyck language) — множество правильных скобочных структур вместе с пустой структурой, образующее язык над алфавитом . |
| Определение: |
| Производящей функцией (англ. generating function) языка называется производящая функция где есть число слов длины в языке . |
Содержание
Правила вывода в языке Дика
Рассмотрим два правила вывода в языке Дика:
- 1)
- 2)
где — буква, не входящая в алфавит ,
стрелка заменяет фразу: если в слове есть буква , то эту букву можно заменить на слово, стоящее справа от стрелки.
Правила вывода можно понимать следующим образом:
Всякое слово в языке Дика есть либо
- 1) пустое слово,
- 2) слово, в котором внутри самой левой пары соответственных скобок стоит некоторое слово языка Дика и после этой пары стоит слово языка Дика.
Ясно, что для каждого слова такое представление единственно.
Вычислим с помощью правил вывода производящую функцию для языка Дика. Для этой цели выпишем некоммутативный производящий ряд, перечисляющий слова языка. Этот ряд представляет собой формальную сумму всех слов языка, выписанных в порядке возрастания длины:
| Теорема: |
Ряд удовлетворяет уравнению . |
| Доказательство: |
|
Действительно, в левой части равенства записана сумма всех слов языка Дика. Равенство означает справедливость утверждения: Всякое слово в языке Дика есть либо
|
Чтобы перейти от некоммутативного производящего ряда к обычному, сделаем подстановку . Уравнение примет вид .
Отсюда, обозначив через получим
Решение этого уравнения совпадает с производящей функцией для чисел Каталана. Необходимость подстановки вместо объясняется тем, что в языке Дика длина слова, составленного из пар скобок, равна : мы перечисляем слова по числу скобок, а не пар скобок.