Решение уравнений в регулярных выражениях — различия между версиями
Genyaz (обсуждение | вклад) м (→Решение уравнений в регулярных выражениях) |
Genyaz (обсуждение | вклад) (Добавлены примечания) |
||
Строка 1: | Строка 1: | ||
== Уравнения в регулярных выражениях == | == Уравнения в регулярных выражениях == | ||
− | Поскольку алгебра [[Регулярные языки: два определения и их эквивалентность | регулярных выражений]] является частным случаем алгебры Клини, то и соответствующие уравнения можно рассматривать как уравнения алгебры Клини. Сама эта алгебра классически используется в [[Теория формальных языков | теории формальных языков]], но также была применена к алгоритмам поиска пути в графах, нахождения выпуклой оболочки. В компиляторах она может быть использована для доказательства корректности методик оптимизации циклов. | + | Поскольку алгебра [[Регулярные языки: два определения и их эквивалентность | регулярных выражений]] является частным случаем алгебры Клини, то и соответствующие уравнения можно рассматривать как уравнения алгебры Клини. Сама эта алгебра классически используется в [[Теория формальных языков | теории формальных языков]], но также была применена к алгоритмам поиска пути в графах <ref>R.C. Backhouse, B.A. Carre: ''Regular algebra applied to path-finding problems''. J. Institute of Mathematics and its applicateions '''15''', 161-186 (1975)</ref>, нахождения выпуклой оболочки<ref>K. Clenaghan: ''Calculational graph algorithmics: reconciling two approaches with dynamic algebra''. CWI Amsterdam, Report CS-R9518, 1995</ref>. В компиляторах она может быть использована для доказательства корректности методик оптимизации циклов<ref>M.C. Patron, D. Kozen: ''Certification of compiler optimizations using Kleene algebra with tests'', Report 99-1779, Computer Science Department, Cornell University, Dec. 1999.</ref>. |
==Решение уравнений в регулярных выражениях== | ==Решение уравнений в регулярных выражениях== | ||
Строка 23: | Строка 23: | ||
==Решение системы уравнений в регулярных выражениях== | ==Решение системы уравнений в регулярных выражениях== | ||
− | Пусть система уравнений имеет вид | + | Пусть система уравнений имеет вид: |
Строка 45: | Строка 45: | ||
Далее подставляя в полученные в ходе итераций уравнения найденный <tex> X_i </tex>, обратной прогонкой найдем <tex>X_1 \dots X_{n-1} </tex>. | Далее подставляя в полученные в ходе итераций уравнения найденный <tex> X_i </tex>, обратной прогонкой найдем <tex>X_1 \dots X_{n-1} </tex>. | ||
+ | |||
+ | == Примечания == | ||
+ | <references/> | ||
== См. также == | == См. также == | ||
− | [[Альтернативное доказательство теоремы Клини (через систему уравнений в регулярных выражениях)] | + | * [[Альтернативное доказательство теоремы Клини (через систему уравнений в регулярных выражениях)]] |
− | |||
− | |||
− | |||
− | |||
− | |||
− | [http://www-sst.informatik.tu-cottbus.de/~wwwti/Studium/04PSAutomaten/Zusamenfassungen/03DuSuikang.pdf Kleene Algebra and Regular Expressions] | + | == Источники информации == |
+ | * [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] | ||
[[Категория: Теория формальных языков]] | [[Категория: Теория формальных языков]] | ||
[[Категория: Автоматы и регулярные языки]] | [[Категория: Автоматы и регулярные языки]] | ||
+ | [[Категория: В разработке]] |
Версия 23:47, 9 января 2015
Содержание
Уравнения в регулярных выражениях
Поскольку алгебра регулярных выражений является частным случаем алгебры Клини, то и соответствующие уравнения можно рассматривать как уравнения алгебры Клини. Сама эта алгебра классически используется в теории формальных языков, но также была применена к алгоритмам поиска пути в графах [1], нахождения выпуклой оболочки[2]. В компиляторах она может быть использована для доказательства корректности методик оптимизации циклов[3].
Решение уравнений в регулярных выражениях
Пусть язык, для которого выполняется равенство , где — некие регулярные выражения над неким алфавитом .
— некийУтверждение: |
Пусть уравнение имеет вид
если , тогда — единственное решение если , тогда — решение для |
Пусть . Тогда выражение , следовательно . Докажем это индукцией по : при из начального равенства , и если , то . Пусть существует такой, что — самое короткое; тогда где .Тогда короче , противоречие, тогда не существует самого короткого , значит не существует никакого.
|
Решение системы уравнений в регулярных выражениях
Пусть система уравнений имеет вид:
Метод решения
Выразим
из первого уравнения и подставим во второе уравнение: .Пусть
, , тогда уравнение примет вид . Его решением будет . Подставим в следующее уравнение выраженный .Далее выполняя схожие итерации получим уравнение
, где , тогда .Далее подставляя в полученные в ходе итераций уравнения найденный
, обратной прогонкой найдем .Примечания
- ↑ R.C. Backhouse, B.A. Carre: Regular algebra applied to path-finding problems. J. Institute of Mathematics and its applicateions 15, 161-186 (1975)
- ↑ K. Clenaghan: Calculational graph algorithmics: reconciling two approaches with dynamic algebra. CWI Amsterdam, Report CS-R9518, 1995
- ↑ M.C. Patron, D. Kozen: Certification of compiler optimizations using Kleene algebra with tests, Report 99-1779, Computer Science Department, Cornell University, Dec. 1999.