- Регулярные языки и конечные автоматы
- Регулярные выражения и языки
- Регулярные языки и конечные автоматы
- Регулярные выражения и языки
- dm_learning
- Mon, May. 1st, 2006, 09:29 am Шестой семинар
- Языки
- Регулярные языки и выражения
- Конечные автоматы
- Теорема Клини
- Конечные автоматы и регулярные языки
- Лемма о разрастании для регулярных языков
- Примеры доказательств нерегулярности языка
- Видео
Регулярные языки и конечные автоматы
Регулярные выражения и языки
Тогда , т.е. конкатенация языков состоит из конкатенаций всех слов первого языка со всеми словами второго языка. В частности, если
, то
, а если
, то
.
Введем обозначения для «степеней» языка L :
Итерацию (L) * языка L образуют все слова которые можно разбить на несколько подряд идущих слов из L :
Ее можно представить с помощью степеней:
Отметим также, что если рассматривать алфавит как конечный язык, состоящий из однобуквенных слов, то введенное ранее обозначение
для множества всех слов, включая и пустое, в алфавите
соответствует определению итерации
этого языка.
В следующей таблице приведено формальное индуктивное определение регулярных выражений над алфавитом и представляемых ими языков.
Нетрудно проверить, например, такие свойства регулярных операций:
Рассмотрим несколько примеров регулярных выражений и представляемых ими языков.
Пример 5.2. Регулярное выражение (0 +1) * представляет множество всех слов в алфавите <0, 1>.
Пример 5.3. Регулярное выражение 11(0 +1) * 001 представляет язык, состоящий из всех слов в алфавите <0, 1>, которые начинаются на ’11’, а заканчиваются на ‘001’.
Пример 5.4. Регулярное выражение представляет язык, состоящий из всех слов в алфавите <0, 1>, которые не содержат подслово ‘000’ ( см. задачу 5.3).
Регулярные языки и конечные автоматы
Регулярные выражения и языки
Тогда , т.е. конкатенация языков состоит из конкатенаций всех слов первого языка со всеми словами второго языка. В частности, если
, то
, а если
, то
.
Введем обозначения для «степеней» языка L :
Итерацию (L) * языка L образуют все слова которые можно разбить на несколько подряд идущих слов из L :
Ее можно представить с помощью степеней:
Отметим также, что если рассматривать алфавит как конечный язык, состоящий из однобуквенных слов, то введенное ранее обозначение
для множества всех слов, включая и пустое, в алфавите
соответствует определению итерации
этого языка.
В следующей таблице приведено формальное индуктивное определение регулярных выражений над алфавитом и представляемых ими языков.
Нетрудно проверить, например, такие свойства регулярных операций:
Рассмотрим несколько примеров регулярных выражений и представляемых ими языков.
Пример 5.2. Регулярное выражение (0 +1) * представляет множество всех слов в алфавите <0, 1>.
Пример 5.3. Регулярное выражение 11(0 +1) * 001 представляет язык, состоящий из всех слов в алфавите <0, 1>, которые начинаются на ’11’, а заканчиваются на ‘001’.
Пример 5.4. Регулярное выражение представляет язык, состоящий из всех слов в алфавите <0, 1>, которые не содержат подслово ‘000’ ( см. задачу 5.3).
dm_learning
Mon, May. 1st, 2006, 09:29 am
Шестой семинар
Тема: Регулярные языки и конечные автоматы.
Языки
Возьмём на множестве всех слов бинарную операцию конкатенации (склеивания) строк:
Операция конкатенации может быть расширена и на два языка:
Например, для двух языков в алфавите конкатенация будет равна:
Также к языкам можно применять и стандартные теоретико-множественные операции, например, объединение. Можно заметить, что множество всех языков в алфавите с операциями объединения и конкатенации образуют идемпотентное полукольцо:
Не трудно убедиться, что все аксиомы идемпотентного полукольца при этом выполняются.
Например, для языка в алфавите итерация будет равна языку:
Также введем понятие позитивной итерации:
Регулярные языки и выражения
Регулярным языком в алфавите называется замыкание элементарных языков по операциям объединения, конкатенации и итерации.
Рассмотрим примеры на связь между регулярными языками и регулярными выражениями:
На практике регулярные выражения часто используются для поиска известных последовательностей символов в тексте и разбиении строк регулярного языка на составные части. См. команду grep в UNIX или regular expressions в современных библиотеках и языках программирования.
Конечные автоматы
Конечный автомат представляет собой абстрактное устройство (см. рисунок 1), состоящее из:
Считывающее устройство может двигаться вдоль ленты в одном направлении, тем самым проходя всю цепочку символов на ленте. Работа автомата состоит из дискретных шагов, на каждом шаге устройство управления находится в определённом состоянии. При переходе на следующий шаг считывающее устройство может продвинуться на один символ, а также может измениться состояние блока управления (или, другими словами, состояние самого автомата). Блок управления содержит список правил переходов, согласно которому его состояние изменяется с учётом входных символов.
Таким образом, автомат меняет своё состояние от начального к одному из конечных, последовательно читая символы на ленте. Говорят, что цепочка входных символов допускается конечным автоматом, если в результате работы автомата она прочитывается целиком, а автомат после этого находится в одном из конечных состояний. В противном случае, говорят, что цепочка не допускается данным автоматом.
Эта цепочка не допускается данным конечным автоматом. Теорема КлиниНа самом деле, между регулярными языками и конечными автоматами существует непосредственная связь. В теореме Клини доказывается, что язык допускается некоторым конечным автоматом тогда и только тогда, когда он регулярный. Таким образом, мы можем для каждого регулярного языка построить конечный автомат, который будет проверять принадлежность цепочек данному языку, и, обратно, для любого конечного автомата можно получить язык допускаемых слов, и этот язык будет регулярным.
|