Решение уравнений в регулярных выражениях — различия между версиями
Genyaz (обсуждение | вклад) м (→Решение уравнений в регулярных выражениях) |
Genyaz (обсуждение | вклад) (Добавлено введение об алгебре Клини) |
||
Строка 1: | Строка 1: | ||
+ | == Уравнения в регулярных выражениях == | ||
+ | Поскольку алгебра [[Регулярные языки: два определения и их эквивалентность | регулярных выражений]] является частным случаем алгебры Клини, то и соответствующие уравнения можно рассматривать как уравнения алгебры Клини. Сама эта алгебра классически используется в [[Теория формальных языков | теории формальных языков]], но также была применена к алгоритмам поиска пути в графах, нахождения выпуклой оболочки. В компиляторах она может быть использована для доказательства корректности методик оптимизации циклов. | ||
+ | |||
==Решение уравнений в регулярных выражениях== | ==Решение уравнений в регулярных выражениях== | ||
− | Пусть <tex>X</tex> — некий [[Основные_определения:_алфавит,_слово,_язык,_конкатенация,_свободный_моноид_слов;_операции_над_языками | язык]], для которого выполняется равенство <tex>X = \alpha X + \beta </tex>, где <tex>\alpha,\,\beta</tex> — некие | + | Пусть <tex>X</tex> — некий [[Основные_определения:_алфавит,_слово,_язык,_конкатенация,_свободный_моноид_слов;_операции_над_языками | язык]], для которого выполняется равенство <tex>X = \alpha X + \beta </tex>, где <tex>\alpha,\,\beta</tex> — некие регулярные выражения над неким алфавитом <tex>A</tex>. |
{{Утверждение | {{Утверждение | ||
Строка 48: | Строка 51: | ||
== Ссылки == | == Ссылки == | ||
[https://ru.wikipedia.org/wiki/Алгебра_Клини Википедия {{---}} Алгебра Клини] | [https://ru.wikipedia.org/wiki/Алгебра_Клини Википедия {{---}} Алгебра Клини] | ||
+ | |||
+ | [https://www.informatik.uni-augsburg.de/lehrstuehle/dbis/pmi/staff/moeller/talks/pdf/dagstuhl.pdf Applications of Kleene Algebra] | ||
+ | |||
+ | [http://www-sst.informatik.tu-cottbus.de/~wwwti/Studium/04PSAutomaten/Zusamenfassungen/03DuSuikang.pdf Kleene Algebra and Regular Expressions] | ||
[[Категория: Теория формальных языков]] | [[Категория: Теория формальных языков]] | ||
[[Категория: Автоматы и регулярные языки]] | [[Категория: Автоматы и регулярные языки]] |
Версия 22:38, 9 января 2015
Содержание
Уравнения в регулярных выражениях
Поскольку алгебра регулярных выражений является частным случаем алгебры Клини, то и соответствующие уравнения можно рассматривать как уравнения алгебры Клини. Сама эта алгебра классически используется в теории формальных языков, но также была применена к алгоритмам поиска пути в графах, нахождения выпуклой оболочки. В компиляторах она может быть использована для доказательства корректности методик оптимизации циклов.
Решение уравнений в регулярных выражениях
Пусть язык, для которого выполняется равенство , где — некие регулярные выражения над неким алфавитом .
— некийУтверждение: |
Пусть уравнение имеет вид
если , тогда — единственное решение если , тогда — решение для |
Пусть . Тогда выражение , следовательно . Докажем это индукцией по : при из начального равенства , и если , то . Пусть существует такой, что — самое короткое; тогда где .Тогда короче , противоречие, тогда не существует самого короткого , значит не существует никакого.
|
Решение системы уравнений в регулярных выражениях
Пусть система уравнений имеет вид
Метод решения
Выразим
из первого уравнения и подставим во второе уравнение: .Пусть
, , тогда уравнение примет вид . Его решением будет . Подставим в следующее уравнение выраженный .Далее выполняя схожие итерации получим уравнение
, где , тогда .Далее подставляя в полученные в ходе итераций уравнения найденный
, обратной прогонкой найдем .См. также
Альтернативное доказательство теоремы Клини (через систему уравнений в регулярных выражениях)