Решение уравнений в регулярных выражениях — различия между версиями
| 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
Содержание
Уравнения в регулярных выражениях
Поскольку алгебра регулярных выражений является частным случаем алгебры Клини, то и соответствующие уравнения можно рассматривать как уравнения алгебры Клини. Сама эта алгебра классически используется в теории формальных языков, но также была применена к алгоритмам поиска пути в графах, нахождения выпуклой оболочки. В компиляторах она может быть использована для доказательства корректности методик оптимизации циклов.
Решение уравнений в регулярных выражениях
Пусть — некий язык, для которого выполняется равенство , где — некие регулярные выражения над неким алфавитом .
| Утверждение: | 
| Пусть уравнение имеет вид  
если , тогда  — единственное решение  если , тогда  — решение для  | 
| Пусть . Тогда выражение , следовательно . Докажем это индукцией по : при из начального равенства , и если , то . Пусть существует такой, что — самое короткое; тогда где . Тогда короче , противоречие, тогда не существует самого короткого , значит не существует никакого. 
 | 
Решение системы уравнений в регулярных выражениях
Пусть система уравнений имеет вид
Метод решения
Выразим из первого уравнения и подставим во второе уравнение: .
Пусть , , тогда уравнение примет вид . Его решением будет . Подставим в следующее уравнение выраженный .
Далее выполняя схожие итерации получим уравнение , где , тогда .
Далее подставляя в полученные в ходе итераций уравнения найденный , обратной прогонкой найдем .
См. также
Альтернативное доказательство теоремы Клини (через систему уравнений в регулярных выражениях)
