Обычный язык

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

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

В качестве альтернативы, обычный язык можно определить как язык, распознаваемый конечным автоматом. Эквивалентность регулярных выражений и конечных автоматов известна как теорема Клини (в честь американского математика Стивена Коула Клини ). В иерархии Хомского регулярные языки определены как языки, которые генерируются грамматиками типа 3 (регулярные грамматики ).

Обычные языки особенно полезны при анализе ввода и языке программирования.

Содержание
  • 1 Формальное определение
  • 2 Примеры
  • 3 Эквивалентные формализмы
  • 4 Свойства замыкания
  • 5 Свойства разрешимости
  • 6 Результаты сложности
  • 7 Местоположение в иерархии Хомского
  • 8 Количество слов в обычном языке
  • 9 Обобщения
  • 10 Индукция
  • 11 Примечания
  • 12 Ссылки
  • 13 Дополнительная литература
  • 14 Внешние ссылки
Формальное определение

Набор регулярных языков в алфавите Σ определяется рекурсивно следующим образом:

  • Пустой язык Ø и язык пустой строки {ε} являются обычными языками.
  • Для каждого a ∈ Σ (a принадлежит Σ) одноэлементный язык {a} является регулярным языком.
  • Если A и B - регулярные языки, то A ∪ B (объединение), A • B (конкатенация) и A * (звезда Клини ) являются регулярными языками.
  • Никакие другие языки, кроме Σ, не являются регулярными.

См. регулярное выражение за его синтаксис и семантику. Обратите внимание, что приведенные выше случаи являются определяющими правилами регулярного выражения.

Примеры

Все конечные языки регулярны; в частности, пустая строка язык {ε} = Ø * является регулярным. Другие типичные примеры включают язык, состоящий из всех строк в алфавите {a, b}, которые содержат четное число as, или язык, состоящий из всех строк формы: несколько, за которыми следуют несколько b.

Простым примером нерегулярного языка является набор строк {ab | n ≥ 0}. Интуитивно это невозможно распознать с помощью конечного автомата, поскольку конечный автомат имеет конечную память и не может запомнить точное количество а. Методы для точного доказательства этого факта приведены ниже.

Эквивалентные формализмы

Регулярный язык удовлетворяет следующим эквивалентным свойствам:

  1. это язык регулярных выражений (по определению выше)
  2. это язык, принятый недетерминированным конечным автоматом (NFA)
  3. это язык, принятый детерминированным конечным автоматом (DFA)
  4. он может быть сгенерирован регулярной грамматикой
  5. это язык, принимаемый чередующимся конечным автоматом
  6. это язык, принимаемый двусторонним конечным автоматом
  7. он может быть сгенерирован с помощью префиксной грамматики
  8. он может быть принят только для чтения машиной Тьюринга
  9. он может быть определен в монадической секунде -порядок ()
  10. это распознается некоторым конечным синтаксическим моноидом M, то есть это прообраз {w ∈ Σ | f (w) ∈ S} подмножества S конечного моноида M при гомоморфизме моноида f: Σ → M из свободного моноида на его алфавите
  11. число классов эквивалентности его синтаксической конгруэнции конечно. (Это число равно количеству состояний минимального детерминированного конечного автомата, принимающего L.)

Свойства 10. и 11. представляют собой чисто алгебраические подходы к определению регулярных языков; аналогичный набор утверждений можно сформулировать для моноида M ⊆ Σ. В этом случае эквивалентность над M приводит к понятию узнаваемого языка.

Некоторые авторы используют одно из вышеперечисленных свойств, отличное от «1». как альтернативное определение обычных языков.

Некоторые из приведенных выше эквивалентностей, особенно те, что относятся к первым четырем формализмам, в учебниках называют теоремой Клини. Какой именно из них (или какое подмножество) назвать таковыми, зависит от авторов. В одном учебнике эквивалентность регулярных выражений и NFA («1» и «2» выше) называется «теоремой Клини». Другой учебник называет эквивалентность регулярных выражений и DFA («1» и «3» выше) «теоремой Клини». Два других учебника сначала доказывают выразительную эквивалентность NFA и DFA («2» и «3»), а затем заявляют «теорему Клини» как эквивалентность между регулярными выражениями и конечными автоматами (последний, как говорят, описывает «узнаваемые языки»). Лингвистически ориентированный текст сначала приравнивает обычные грамматики («4.» выше) к DFA и NFA, называет языки, генерируемые (любым из) этими «регулярными», после чего вводит регулярные выражения, которые он называет «рациональными языками», и, наконец, утверждает «теорему Клини» как совпадение регулярных и рациональных языков. Другие авторы просто определяют «рациональное выражение» и «регулярные выражения» как синонимы и делают то же самое с «рациональными языками» и «регулярными языками».

Свойства замыкания

Обычные языки: закрыто при различных операциях, то есть, если языки K и L регулярны, то это результат следующих операций:

  • теоретико-множественные булевы операции: union K ∪ L, пересечение K ∩ L, и дополняют L, следовательно, также относительное дополнение K - L.
  • регулярные операции: K ∪ L, конкатенация K ∘ L и звезда Клини L.
  • трио операции: гомоморфизм строк, обратный гомоморфизм строк и пересечение с регулярными языками. Как следствие, они закрываются относительно произвольных преобразований с конечным числом состояний, например, частного K / L с обычным языком. Более того, регулярные языки замкнуты относительно факторов с произвольными языками: если L регулярен, то L / K регулярен для любого K.
  • обратное (или зеркальное отображение) L.Дан недетерминированный конечный автомат, распознающий L, автомат для L может быть получен путем обращения всех переходов и смены начального и конечного состояний. Это может привести к нескольким стартовым состояниям; Для их соединения могут использоваться ε-переходы.
Свойства разрешимости

Для двух детерминированных конечных автоматов A и B разрешимо, принимают ли они один и тот же язык. Как следствие, используя вышеупомянутые свойства замыкания, следующие проблемы также разрешимы для произвольно заданных детерминированных конечных автоматов A и B с принятыми языками L A и L B, соответственно:

  • Сдерживание: это L A ⊆ L B?
  • Непересекаемость: равно L A ∩ L B = {}?
  • Пустота: есть L A = {}?
  • Универсальность: есть L A = Σ?
  • Членство: при заданном a ∈ Σ, является a ∈ L B?

Для регулярных выражений проблема универсальности NP-полная уже для одноэлементного алфавита. Для более крупных алфавитов эта проблема - PSPACE-complete. Если регулярные выражения расширены, чтобы разрешить также оператор возведения в квадрат, где «A» обозначает то же самое, что и «AA», по-прежнему могут быть описаны только регулярные языки, но проблема универсальности имеет экспоненциальную нижнюю границу пространства и фактически является полной для экспоненциальной пространство относительно полиномиального сокращения.

Результаты сложности

В теории вычислительной сложности иногда упоминается класс сложности всех обычных языков как REGULAR или REG и равно DSPACE (O (1)), проблемы решения, которые могут быть решены в постоянном пространстве ( используемое пространство не зависит от размера ввода). ОБЫЧНЫЙ ≠ AC, поскольку он (тривиально) содержит проблему четности для определения того, является ли количество 1 битов на входе четным или нечетным, и этой проблемы нет в AC . С другой стороны, REGULAR не содержит AC, потому что нерегулярный язык палиндромов или нестандартный язык {0 n 1 n: n ∈ N} {\ displaystyle \ {0 ^ {n} 1 ^ {n}: n \ in \ mathbb {N} \}}\ {0 ^ n 1 ^ n: n \ in \ mathbb N \} оба могут быть распознаны в AC.

, если язык не является регулярным, для распознавания требуется машина с размером не менее Ω (log log n) (где n - размер ввода). Другими словами, DSPACE (o (log log n)) соответствует классу обычных языков. На практике большинство нерегулярных задач решаются машинами, занимающими не менее логарифмического пространства.

Расположение в иерархии Хомского
Обычный язык в классах иерархии Хомского.

Для размещения обычных языков в Иерархия Хомского, можно заметить, что каждый регулярный язык контекстно-свободный. Обратное неверно: например, язык, состоящий из всех строк, имеющих такое же количество букв a, что и b, является контекстно-независимым, но не регулярным. Чтобы доказать, что язык не является регулярным, часто используют теорему Майхилла – Нероде и лемму о накачке. Другие подходы включают использование закрывающих свойств обычных языков или количественное определение колмогоровской сложности.

Важные подклассы регулярных языков включают

Количество слов в обычном языке

Пусть s L (n) {\ displaystyle s_ {L} (n)}s_L (n) обозначает количество слов длина n {\ displaystyle n}n в L {\ displaystyle L}L . Обычная производящая функция для L - это формальный степенной ряд

S L (z) = ∑ n ≥ 0 s L (n) z n. {\ displaystyle S_ {L} (z) = \ sum _ {n \ geq 0} s_ {L} (n) z ^ {n} \.}S_L (z) = \ sum_ {n \ ge 0} s_L (n) z ^ n \.

Производящая функция языка L - это рациональная функция, если L регулярна. Следовательно, для каждого обычного языка L {\ displaystyle L}L последовательность s L (n) n ≥ 0 {\ displaystyle s_ {L} (n) _ {n \ geq 0} }{\ displaystyle s_ {L} (n) _ {n \ geq 0}} - константно-рекурсивный ; то есть существует целочисленная константа n 0 {\ displaystyle n_ {0}}n_ {0} , комплексные константы λ 1,…, λ k {\ displaystyle \ lambda _ {1}, \, \ ldots, \, \ lambda _ {k}}\ lambda_1, \, \ ldots, \, \ lambda_k и комплексные многочлены p 1 (x),…, pk (x) {\ displaystyle p_ {1} (x), \, \ ldots, \, p_ {k} (x)}p_1 (x), \, \ ldots, \, p_k (x) такой, что для каждого n ≥ n 0 {\ displaystyle n \ geq n_ {0}}n \ geq n_0 число s L (n) {\ displaystyle s_ {L} (n)}s_L (n) слов длины n {\ displaystyle n}n в L { \ displaystyle L}L равно s L (n) = p 1 (n) λ 1 n + ⋯ + pk (n) λ kn {\ displaystyle s_ {L} (n) = p_ { 1} (n) \ lambda _ {1} ^ {n} + \ dotsb + p_ {k} (n) \ lambda _ {k} ^ {n}}s_L (n) = p_1 (n) \ lambda_1 ^ n + \ dotsb + p_k (n) \ lambda_k ^ n .

Таким образом, нерегулярность некоторых языков L ′ {\ displaystyle L '}L'может быть доказано путем подсчета слов заданной длины в L ′ {\ displaystyle L'}L'. Рассмотрим, например, язык Дика строк сбалансированных круглых скобок. Количество слов длины 2 n {\ displaystyle 2n}2nв языке Дайка равно каталонскому числу C n ∼ 4 nn 3/2 π {\ displaystyle C_ {n} \ sim {\ frac {4 ^ {n}} {n ^ {3/2} {\ sqrt {\ pi}}}}}C_n \ sim \ frac {4 ^ n} {n ^ {3/2} \ sqrt {\ pi}} , что не из форма p (n) λ n {\ displaystyle p (n) \ lambda ^ {n}}p(n)\lambda^n, что свидетельствует о нерегулярности языка Дайка. Следует проявлять осторожность, так как некоторые из собственных значений λ i {\ displaystyle \ lambda _ {i}}\ lambda _ {i} могут иметь одинаковую величину. Например, количество слов длины n {\ displaystyle n}n на языке всех четных двоичных слов не имеет формы p (n) λ n {\ displaystyle p (n) \ lambda ^ {n}}p(n)\lambda^n, но количество слов четной или нечетной длины имеет эту форму; соответствующие собственные значения: 2, - 2 {\ displaystyle 2, -2}2, -2 . В общем, для каждого обычного языка существует константа d {\ displaystyle d}dтакая, что для всех a {\ displaystyle a}a количество слов длины dm + a {\ displaystyle dm + a}dm + a асимптотически C ampa λ am {\ displaystyle C_ {a} m ^ {p_ {a}} \ lambda _ {a } ^ {m}}C_a m ^ {p_a} \ lambda_a ^ m .

Дзета-функция языка L равна

ζ L (z) = exp ⁡ (∑ n ≥ 0 s L (n) znn). {\ displaystyle \ zeta _ {L} (z) = \ exp \ left ({\ sum _ {n \ geq 0} s_ {L} (n) {\ frac {z ^ {n}} {n}}}) \ right) \.}\ zeta_L (z) = \ exp \ left ({\ sum_ {n \ ge 0} s_L (n) \ frac {z ^ n} {n}} \ right) \.

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

Обобщения

Понятие регулярного языка было обобщено на бесконечные слова (см. ω-автоматы ) и деревья (см. древовидный автомат ).

Рациональный набор обобщает понятие (регулярного / рационального языка) на моноиды, которые не обязательно свободны. Точно так же понятие распознаваемого языка (с помощью конечного автомата) имеет тезку как распознаваемое множество над моноидом, который не обязательно является свободным. Говард Штраубинг отмечает в связи с этими фактами: «Термин« обычный язык »несколько неудачен. В статьях, на которые повлияла монография Эйленберга, часто используется термин «узнаваемый язык», который относится к поведению автоматов, или «рациональный язык», который относится к важным аналогиям между регулярными выражениями и рациональными степенными рядами. (Фактически, Эйленберг определяет рациональные и узнаваемые подмножества произвольных моноидов; эти два понятия, в общем, не совпадают.) Эта терминология, хотя и лучше мотивированная, никогда не прижилась, а «обычный язык» используется почти повсеместно ».

Рациональный ряд - еще одно обобщение, на этот раз в контексте формального степенного ряда над полукольцом. Этот подход порождает и взвешенные автоматы. В этом алгебраическом контексте регулярные языки (соответствующие логическим взвешенным рациональным выражениям) обычно называются рациональными языками. Также в этом контексте теорема Клини находит обобщение, называемое.

Индукция
Примечания
Ссылки
Дополнительная литература
  • Kleene, S.C. : Представление событий в нервных сетях и конечных автоматах. В: Shannon, C.E., McCarthy, J. (eds.) Automata Studies, pp. 3–41. Издательство Принстонского университета, Принстон (1956); это слегка измененная версия его отчета 1951 RAND Corporation с тем же названием, RM704.
  • Sakarovitch, J (1987). "Повторное обращение к теореме Клини". Конспект лекций по информатике. 1987 : 39–50. doi : 10.1007 / 3540185356_29. ISBN 978-3-540-18535-2. Для цитирования журнала требуется | journal =()
Внешние ссылки
Последняя правка сделана 2021-06-03 11:57:31
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте