Язык Дайка - Dyck language
В теории формальные языки из Информатика, математика, и лингвистика, а Дайк слово сбалансированный нить квадратных скобок [и]. Набор слов Дика образует Язык Дайка.
Слова и язык Дика названы в честь математика Вальтер фон Дейк. У них есть приложения в разбор выражений, которые должны иметь правильно вложенную последовательность скобок, например арифметические или алгебраические выражения.
Формальное определение
Позволять - алфавит, состоящий из символов [и]. Позволять обозначить его Клини закрытие. Язык Дайка определяется как:
Бесконтекстная грамматика
Может быть полезно определить язык Дейка через контекстно-свободная грамматика в некоторых ситуациях язык Дика генерируется контекстно-свободной грамматикой с одним нетерминальным S, и производство:
- S → ε | "[" S "]" S
То есть, S либо пустой строкой (ε) или является «[», элементом языка Дейка, соответствием «]» и элементом языка Дейка.
Альтернативная контекстно-свободная грамматика для языка Дайка дается производством:
- S → ("[" S "]")*
То есть, S является ноль или более случаев комбинации «[», элемента языка Дейка и соответствующего «]», где несколько элементов языка Дайка в правой части продукции могут отличаться друг от друга.
Альтернативное определение
В других контекстах вместо этого может быть полезно определить язык Дайка путем разделения в классы эквивалентности следующим образом: для любого элемента длины , мы определяем частичные функции и к
- является с ""вставлен в -я позиция
- является с ""удалено из -я позиция
с пониманием того, что не определено для и не определено, если . Мы определяем отношение эквивалентности на следующим образом: для элементов у нас есть тогда и только тогда, когда существует последовательность из нуля или более приложений и функции, начинающиеся с и заканчивая . То, что разрешена последовательность нулевых операций, объясняет рефлексивность из . Симметрия следует из наблюдение, что любая конечная последовательность приложений к строке можно отменить с помощью конечной последовательности приложений . Транзитивность ясно из определения.
Отношение эквивалентности разделяет язык в классы эквивалентности. Если мы возьмем для обозначения пустой строки, то язык, соответствующий классу эквивалентности называется Язык Дайка.
Характеристики
- Язык Дейка закрыт под действием конкатенация.
- Лечением как алгебраический моноид при конкатенации мы видим, что структура моноида переходит на частное , в результате чего синтаксический моноид языка Дайка. Класс будет обозначаться .
- Синтаксический моноид языка Дейка не является коммутативный: если и тогда .
- С указанными выше обозначениями но ни то, ни другое ни обратимы в .
- Синтаксический моноид языка Дейка изоморфен бициклическая полугруппа в силу свойств и описано выше.
- Посредством Теорема Хомского – Шютценбергера о представлении, любой контекстно-свободный язык является гомоморфным образом пересечения некоторых обычный язык с языком Дейка на одном или нескольких типах пар скобок.[1]
- Язык Дейка с двумя различными типами скобок можно распознать в класс сложности .[2]
- Количество различных слов Дика с ровно п пары скобок и k самые внутренние пары (то есть подстрока ) это Число Нараяны .
- Количество различных слов Дика с ровно п пары скобок - это п-й Каталонский номер . Обратите внимание, что язык слов Дейка с п пары скобок равны объединению по всем возможным k, языков слов Дика п пары скобок с k самые сокровенные пары, как определено в предыдущем пункте. С k может варьироваться от 0 до п, получаем следующее равенство, которое действительно имеет место:
Примеры
Мы можем определить отношение эквивалентности на языке Дайка . За у нас есть если и только если , т.е. и иметь одинаковую длину. Это отношение разделяет язык Дейка. куда . Обратите внимание, что пусто для нечетных .
Введя слова Дика длины , мы можем ввести отношения на них. Для каждого мы определяем отношение на ; за у нас есть если и только если можно добраться из серией правильные свопы. Правильный обмен одним словом заменяет вхождение '] [' на '[]'. Для каждого Соотношение делает в частично заказанный набор. Соотношение является рефлексивный потому что пустая последовательность правильных свопов занимает к . Транзитивность следует, потому что мы можем расширить последовательность правильных свопов, которая требует к объединив его с последовательностью правильных свопов, которая требует к формирование последовательности, которая занимает в . Чтобы увидеть это это также антисимметричный введем вспомогательную функцию определяется как сумма по всем префиксам из :
Следующая таблица показывает, что является строго монотонный в отношении правильных свопов.
частичные суммы | ||||
---|---|---|---|---|
] | [ | |||
[ | ] | |||
частичные суммы | ||||
Разница частичных сумм | 0 | 2 | 0 | 0 |
Следовательно так когда есть надлежащий своп, который требует в . Теперь, если мы предположим, что оба и , то существуют непустые последовательности собственных свопов, такие принимается в наоборот. Но потом что бессмысленно. Следовательно, когда оба и находятся в , у нас есть , следовательно антисимметричен.
Частично упорядоченный набор показано на иллюстрации, сопровождающей введение, если мы интерпретируем [как подъем и] как опускание.
Обобщения
Существуют варианты языка Дейка с несколькими разделителями, например, в алфавите "(", ")", "[" и "]". Слова такого языка - это те слова, которые хорошо заключены в круглые скобки для всех разделителей, то есть можно читать слово слева направо, вставлять каждый открывающий разделитель в стек, и всякий раз, когда мы достигаем закрывающего разделителя, мы должны иметь возможность чтобы извлечь соответствующий открывающий ограничитель из верхней части стека.