Альтернативное доказательство теоремы Клини (через систему уравнений в регулярных выражениях) — различия между версиями
Zernov (обсуждение | вклад) (→Пример) |
Zernov (обсуждение | вклад) (→Пример) |
||
| Строка 20: | Строка 20: | ||
== Пример == | == Пример == | ||
| + | === Система уравнений === | ||
[[Файл:at_least_one_zero.png|right]] | [[Файл:at_least_one_zero.png|right]] | ||
Найдем регулярное выражение для языка двоичных представлений чисел, в которых есть хотя бы один ноль | Найдем регулярное выражение для языка двоичных представлений чисел, в которых есть хотя бы один ноль | ||
| Строка 41: | Строка 42: | ||
Откуда <tex>L_2 = 01^* (0 + 1)^*</tex>. | Откуда <tex>L_2 = 01^* (0 + 1)^*</tex>. | ||
| + | |||
| + | === Обычный вариант === | ||
Теперь найдем регулярное выражение для этого же автомата с помощью теоремы Клини (обычный вариант). | Теперь найдем регулярное выражение для этого же автомата с помощью теоремы Клини (обычный вариант). | ||
Версия 21:40, 3 января 2017
Содержание
Альтернативное доказательство
| Теорема: |
Класс автоматных языков является подмножеством регулярных. |
| Доказательство: |
|
Рассмотрим автоматный язык и ДКА для него. Для доказательства теоремы достаточно построить регулярное выражение, порождающее язык . Пусть наш автомат состоит из состояний, и состояние — стартовое. Также пусть — язык, состоящий из слов, которые приводят из состояния в терминальное. Заметим, что для всех и таких, что . Действительно, если по слову из состояния мы можем попасть в терминальное состояние, а между состояниями и есть переход по символу , то слово принадлежит языку . Также, если , то есть если состояние является терминальным, то добавим в объединение для . Мы получили систему из регулярных выражений с неизвестными, причем ( — коэффициент перед -й переменной в -м уравнении) для всех и , так как в автомате нет -переходов, а следовательно, система имеет единственное решение. Также заметим, что содержит все слова, по которым из стартового состояния можно дойти до терминального, но тогда . В итоге мы построили систему уравнений в регулярных выражениях, решив которую, мы получим регулярное выражение, порождающее язык . |
Отметим, что длина построенного таким образом регулярного выражения обычно заметно короче, чем если бы мы строили его по теореме Клини.
Пример
Система уравнений
Найдем регулярное выражение для языка двоичных представлений чисел, в которых есть хотя бы один ноль
Найдем :
.
Так как , то .
Выразим через :
Откуда .
Обычный вариант
Теперь найдем регулярное выражение для этого же автомата с помощью теоремы Клини (обычный вариант). Для начала построим таблицу, согласно теореме по шагам:
| Выражение | Значения |
|---|---|
Например, в выражении присутствует член , потому что и начальным, и конечным является состояние . Это выражение включает также , поскольку существует путь из состояния в состояние по входу . Выражение равно , потому что есть дуга с меткой , ведущая из состояния в состояние . Здесь нет члена , поскольку начальное и конечное состояния различаются. И, наконец, , так как нет путей, ведущих из состояния в состояние . Теперь применим индукцию для построения более сложных выражений.
Правило для вычисления выражения представляет собой пример общего правила из части теоремы Клини:
| Выражение | Прямая подстановка | Упрощенное выражение |
|---|---|---|
И, наконец, последний шаг индукции
| Выражение | Упрощенное выражение (после подстановки) |
|---|---|
Окончательное регулярное выражение, эквивалентное автомату, строится путем объединения всех тех выражений, для которых первое состояние является начальным, а второе — заключительным. В нашем примере — начальное состояние, а — заключительное, поэтому нам нужно лишь выражение , равное
См. также
Источники информации
- Mathhelpplanet — Теорема Клини
- Deepak D’Souza — Regular Expressions
- Хопкрофт Д., Мотвани Р., Ульман Д. Введение в теорию автоматов, языков и вычислений, 2-е изд. : Пер. с англ. — М.: Издательский дом «Вильямс», 2008. — С. 112 — ISBN 978-5-8459-1347-0
