stringtranslate.com

язык Дик

В теории формальных языков информатики , математики и лингвистики слово Дика — это сбалансированная строка скобок. Набор слов Дика образует язык Дика . Самый простой, Дика-1, использует всего две парные скобки, например ( и ) .

Слова и язык Дайка названы в честь математика Вальтера фон Дайка . Они применяются в синтаксическом анализе выражений, которые должны иметь правильно вложенную последовательность скобок, таких как арифметические или алгебраические выражения.

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

Пусть будет алфавитом, состоящим из символов [ и ]. Пусть обозначает его замыкание Клини . Язык Дика определяется как:

Контекстно-свободная грамматика

В некоторых ситуациях может быть полезно определить язык Dyck через контекстно-свободную грамматику . Язык Dyck генерируется контекстно-свободной грамматикой с одним нетерминалом S и продукцией:

Сε | "[" С "]" С

То есть S — это либо пустая строка ( ε ), либо «[», элемент языка Dyck, соответствующий «]», и элемент языка Dyck.

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

С → ("[" С "]") *

То есть S представляет собой ноль или более вхождений комбинации «[», элемента языка Дика, и соответствующего «]», где несколько элементов языка Дика в правой части последовательности могут свободно отличаться друг от друга.

Альтернативное определение

В других контекстах может быть полезно определить язык Дика, разбив его на классы эквивалентности следующим образом. Для любого элемента длины мы определяем частичные функции и с помощью

с " " вставленным в th позицию
с удаленным " " из th позиции

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

Отношение эквивалентности разбивает язык на классы эквивалентности. Если взять для обозначения пустой строки, то язык, соответствующий классу эквивалентности, называется языком Дика .

Обобщения

Типизированный язык Дайка

Существуют варианты языка Dyck с несколькими разделителями, например, Dyck-2 на алфавите "(", ")", "[" и "]". Слова такого языка - это те, которые хорошо заключены в скобки для всех разделителей, т. е. можно прочитать слово слева направо, вставить каждый открывающий разделитель в стек, и всякий раз, когда мы достигаем закрывающего разделителя, мы должны иметь возможность вытолкнуть соответствующий открывающий разделитель с вершины стека. (Приведенный выше алгоритм подсчета не обобщается).

Например, следующее предложение является допустимым в Dyck-3:

( [ [ ] { } ] ( ) { ( ) } ) [ ]

Конечная глубина

Предложение языка Dyck можно представить как спуск и подъем по уровням вложенных скобок. При чтении предложения Dyck каждая открывающаяся скобка увеличивает глубину вложенности на 1, а каждая закрывающаяся скобка уменьшает на 1. Глубина предложения — это максимальная глубина, достигнутая в пределах предложения.

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

0 ( 1 [ 2 [ 3 ] 2 { 3 } 2 ] 1 ( 2 ) 1 { 2 ( 3 ) 2 } 1 ) 0 [ 1 ] 0

и все предложение имеет глубину 3.

Мы определяем Dyck-(k, m) как язык с k типами скобок и максимальной глубиной m. Это имеет приложения в формальной теории рекуррентных нейронных сетей . [1]

Характеристики

Примеры

Решетка из 14 слов Дика длиной 8 - [ и ] интерпретируются как вверх и вниз

Мы можем определить отношение эквивалентности на языке Дика . Для нас имеет место тогда и только тогда, когда , т.е. и имеют одинаковую длину. Это отношение разбивает язык Дика: . Мы имеем , где . Обратите внимание, что пусто для нечетного .

Введя слова Дика длины , мы можем ввести отношение на них. Для каждого мы определяем отношение на ; для нас есть тогда и только тогда, когда можно достичь из с помощью серии правильных замен . Правильная замена в слове меняет вхождение '][' на '[]'. Для каждого отношение превращается в частично упорядоченный набор . Отношение рефлексивно , потому что пустая последовательность правильных замен занимает до . Транзитивность следует, потому что мы можем расширить последовательность правильных замен, которая занимает до , объединив ее с последовательностью правильных замен, которая занимает до , образовав последовательность, которая занимает до . Чтобы увидеть, что это также антисимметрично , мы вводим вспомогательную функцию, определенную как сумма по всем префиксам :

Следующая таблица иллюстрирует, что она строго монотонна относительно правильных обменов.

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

Частично упорядоченный набор показан на иллюстрации, сопровождающей введение, если мы интерпретируем [ как движение вверх, а ] как движение вниз.

Смотрите также

Примечания

  1. ^ Хьюитт, Джон; Хан, Майкл; Гангули, Сурья; Лян, Перси; Мэннинг, Кристофер Д. (15.10.2020). «RNN могут генерировать ограниченные иерархические языки с оптимальной памятью». arXiv : 2010.07515 [cs.CL].
  2. ^ Камбитс, Сообщения в алгебре Том 37 Выпуск 1 (2009) 193-208
  3. ^ Баррингтон и Корбетт, Information Processing Letters 32 (1989) 251-256

Ссылки