Контексты и синтаксические моноиды — различия между версиями
(→Свойства) |
(→Примеры) |
||
Строка 159: | Строка 159: | ||
'''1'''. Рассмотрим язык <tex>L = \{\omega \mid |\omega| \bmod 2 = 0 \}</tex>. | '''1'''. Рассмотрим язык <tex>L = \{\omega \mid |\omega| \bmod 2 = 0 \}</tex>. | ||
− | <tex>\{\langle u, v \rangle \mid uxv \in L\}</tex> {{---}} это множество всех пар <tex>\langle u,v \rangle</tex>, таких что <tex>|u| + |v| = |x|</tex> <tex>(mod</tex> <tex>2)</tex>. Значит, <tex>M(L)</tex> состоит из двух элементов: множества слов чётной длины и множества слов нечётной длины. Нейтральным элементом в данном моноиде является множество слов чётной длины. Оба элемента являются обратными самим себе, значит <tex>M(L)</tex> является группой, следовательно <tex>L</tex> {{---}} групповой язык. | + | <tex>\{\langle u, v \rangle \mid uxv \in L\}</tex> {{---}} это множество всех пар <tex>\langle u,v \rangle</tex>, таких что <tex>|u| + |v| = |x|</tex> <tex>(mod</tex> <tex>2)</tex>. |
+ | |||
+ | Значит, <tex>M(L)</tex> состоит из двух элементов: множества слов чётной длины и множества слов нечётной длины. Нейтральным элементом в данном моноиде является множество слов чётной длины. | ||
+ | |||
+ | Оба элемента являются обратными самим себе, значит <tex>M(L)</tex> является группой, следовательно <tex>L</tex> {{---}} групповой язык. | ||
'''2'''. Язык <tex>L</tex> над алфавитом <tex>\Sigma = \{0,1\}</tex> задан регулярным выражением <tex>1(0|1)^*</tex>. Его синтаксический моноид <tex>M(L)</tex> содержит три элемента: | '''2'''. Язык <tex>L</tex> над алфавитом <tex>\Sigma = \{0,1\}</tex> задан регулярным выражением <tex>1(0|1)^*</tex>. Его синтаксический моноид <tex>M(L)</tex> содержит три элемента: | ||
− | <tex>[[\varepsilon]]</tex> {{---}} нейтральный элемент. Включает в себя только пустую строку. | + | a) <tex>[[\varepsilon]]</tex> {{---}} нейтральный элемент. Включает в себя только пустую строку. |
− | <tex>[[0]]</tex> содержит все строки, распознаваемые регулярным выражением <tex>0(0|1)^*</tex>. <tex>\forall x \in [[0]]: C_L(x) = \{\langle u, v \rangle \mid u \in L, v \in \Sigma^* \}</tex>. | + | b) <tex>[[0]]</tex> содержит все строки, распознаваемые регулярным выражением <tex>0(0|1)^*</tex>. <tex>\forall x \in [[0]]: C_L(x) = \{\langle u, v \rangle \mid u \in L, v \in \Sigma^* \}</tex>. |
− | <tex>[[1]]</tex> содержит все строки, принадлежащие языку, то есть, распознаваемые регулярным выражением <tex>1(0|1)^*</tex>. <tex>\forall x \in [[1]]: C_L(x) = C_L(\varepsilon) \cup \{\langle \varepsilon, v \rangle \mid v \in \Sigma^* \}</tex>. | + | c) <tex>[[1]]</tex> содержит все строки, принадлежащие языку, то есть, распознаваемые регулярным выражением <tex>1(0|1)^*</tex>. <tex>\forall x \in [[1]]: C_L(x) = C_L(\varepsilon) \cup \{\langle \varepsilon, v \rangle \mid v \in \Sigma^* \}</tex>. |
Заметим, что <tex>[[0]]</tex> и <tex>[[1]]</tex> не имеют обратных элементов в данном моноиде, так как нейтральный элемент содержит только пустую строку, а её невозможно получить из непустой с помощью конкатенации. Следовательно <tex>L</tex> не является групповым языком. | Заметим, что <tex>[[0]]</tex> и <tex>[[1]]</tex> не имеют обратных элементов в данном моноиде, так как нейтральный элемент содержит только пустую строку, а её невозможно получить из непустой с помощью конкатенации. Следовательно <tex>L</tex> не является групповым языком. | ||
− | '''3'''. Язык <tex>L = 0^n1^n</tex> задан над алфавитом <tex>\Sigma = \{0,1\}</tex>. Балансом слова <tex>|\omega|_b</tex> назовём число, равное разности между количеством нулей и единиц, встречающихся в данном слове. Если слово <tex>\omega = uxv</tex> принадлежит языку <tex>L</tex>, то <tex>|x|_b = -(|u|_b + |v|_b)</tex>. Но <tex>|x|_b</tex> может принимать любое целое значение, при том, что <tex>x</tex> имеет непустой двухсторонний контекст. Значит, синтаксический моноид <tex>M(L)</tex> имеет бесконечное количество элементов, что значит, что данный язык не является регулярным. | + | '''3'''. Язык <tex>L = 0^n1^n</tex> задан над алфавитом <tex>\Sigma = \{0,1\}</tex>. |
+ | |||
+ | Балансом слова <tex>|\omega|_b</tex> назовём число, равное разности между количеством нулей и единиц, встречающихся в данном слове. Если слово <tex>\omega = uxv</tex> принадлежит языку <tex>L</tex>, то <tex>|x|_b = -(|u|_b + |v|_b)</tex>. Но <tex>|x|_b</tex> может принимать любое целое значение, при том, что <tex>x</tex> имеет непустой двухсторонний контекст. | ||
+ | |||
+ | Значит, синтаксический моноид <tex>M(L)</tex> имеет бесконечное количество элементов, что значит, что данный язык не является регулярным. | ||
== Источники информации == | == Источники информации == |
Версия 12:18, 10 октября 2016
Содержание
Контексты
Правый контекст
Определение: |
Правым контекстом (англ. right context) | слова в языке называется множество .
Лемма: |
Язык — регулярный множество его правых контекстов конечно. |
Доказательство: |
Покажем что полученный автомат допускает в точности указанный язык. Выпишем свойства, которые мы стремились удовлетворить при построении:
Из 1 следует
Положив и учтя 2, получимТеперь зафиксируем за состоянием контекст . Тогда левая часть 3 равносильна , а правая, с учётом , означает, что автомат допускает .
|
Примеры
Здесь будем понимать под
не стандартное отображение множества в множество, а . Рассмотрим правые контексты следующих языков:-
- Возникающие контексты:
-
- Начальное состояние — 1 . Допускающие состояния: 4, 7, 9 (в них дьявольское. Всего 8 состояний (именно столько имеется различных контекстов). ). Состояние 10 —
- Возникающие контексты:
-
- Возможные контексты (аргументы упорядочены в лексикографическом порядке):
-
- Итого 4 состояния; начальное состояние 1, допускающее 4, состояние 3&5 — дьявольское.
- Возможные контексты (аргументы упорядочены в лексикографическом порядке):
Левый контекст
Определение: |
Левым контекстом (англ. left context) | слова в языке называется множество .
Лемма: |
Язык — регулярный множество его левых контекстов конечно. |
Доказательство: |
Поскольку множество регулярных языков замкнуто относительно операции разворота, то из того, что | и аналогичного утверждения о правых контекстах получаем требуемое.
Двухсторонний контекст
Определение: |
Двухсторонним контекстом (англ. two-sided context) | слова в языке называется множество .
Любопытное замечание:
состоит из всех пар строк, которые при конкатенации дают слово из языка.
Для доказательства последующих утверждений будем использовать бинарное отображение со свойством .
Лемма: |
Язык — регулярный множество его двухсторонних контекстов конечно. |
Доказательство: |
|
Синтаксический моноид
Определения
Определение: |
Синтаксическим моноидом (англ. syntactic monoid) | языка называется множество, состоящее из его классов эквивалентности , с введённым на нём операцией конкатенации , где . Нейтральным элементом в нём является .
Определение: |
Групповой язык (англ. group language) — это язык, синтаксический моноид которого является группой. |
Свойства
Синтаксический моноид
определён для любого , однако некоторые свойства языка можно определить по структуре его синтаксического моноида. Размер синтаксического моноида является мерой структурной сложности языка.Теорема: |
Язык — регулярный его синтаксический моноид конечен. |
Доказательство: |
Размер синтаксического моноида Язык языка равен количеству его различных двухсторонних контекстов . Применяя лемму, доказанную ранее, получаем: — регулярный множество его двухсторонних контекстов конечно его синтаксический моноид конечен. |
Лемма: |
Пусть язык ДКА . Тогда размер его синтаксического моноида не превосходит . распознается |
Доказательство: |
Введём следующее отношение эквивалентности на строках:
Остаётся показать, что существует взаимно-однозначное соответствие между нашими классами эквивалентности и синтаксическими моноидами. Смотрим:
|
Пусть ДКА. Каждое слово порождает отображение , определённое следующим образом: .
—Определение: |
Моноидом переходов (англ. transition monoid) | называется множество отображений с операцией композиции. . Нейтральным элементом в данном моноиде является отображение .
Теорема: |
Пусть ДКА, задающий язык . Тогда и изоморфны. — минимальный |
Доказательство: |
Покажем, что .
|
Примеры
1. Рассмотрим язык
.— это множество всех пар , таких что .
Значит,
состоит из двух элементов: множества слов чётной длины и множества слов нечётной длины. Нейтральным элементом в данном моноиде является множество слов чётной длины.Оба элемента являются обратными самим себе, значит
является группой, следовательно — групповой язык.
2. Язык над алфавитом задан регулярным выражением . Его синтаксический моноид содержит три элемента:
a)
— нейтральный элемент. Включает в себя только пустую строку.b)
содержит все строки, распознаваемые регулярным выражением . .c)
содержит все строки, принадлежащие языку, то есть, распознаваемые регулярным выражением . .Заметим, что
и не имеют обратных элементов в данном моноиде, так как нейтральный элемент содержит только пустую строку, а её невозможно получить из непустой с помощью конкатенации. Следовательно не является групповым языком.
3. Язык задан над алфавитом .
Балансом слова
назовём число, равное разности между количеством нулей и единиц, встречающихся в данном слове. Если слово принадлежит языку , то . Но может принимать любое целое значение, при том, что имеет непустой двухсторонний контекст.Значит, синтаксический моноид
имеет бесконечное количество элементов, что значит, что данный язык не является регулярным.Источники информации
- Howard Straubing Finite automata, formal logic, and circuit complexity, 1994. ISBN 3-7643-3719-2. — C. 53.
- James A. Anderson Automata theory with modern applications, 2006. ISBN 0-521-61324-8. — С. 72.
- Wikipedia — Syntactic monoid