Теорема Клини (совпадение классов автоматных и регулярных языков) — различия между версиями
Gromak (обсуждение | вклад) м |
(Исправил неправильное доказательство. Кто-нибудь проверьте меня.) |
||
Строка 35: | Строка 35: | ||
Построим эти регулярные выражения: | Построим эти регулярные выражения: | ||
− | *<tex>\xi_{ii0} = | + | *<tex>\xi_{ii0} = (c_1 \mid \dots \mid c_l)^*</tex> , где <tex>c_1, c_2, \dots c_l</tex> символы, по которым есть переход из состояния <tex>i</tex> в него же самого. |
*<tex>\xi_{ij0} = c_1 \mid \dots \mid c_l</tex>, где <tex>c_1, c_2, \dots c_l</tex> символы, по которым есть переход из состояния <tex>i</tex> в состояние <tex>j</tex>. | *<tex>\xi_{ij0} = c_1 \mid \dots \mid c_l</tex>, где <tex>c_1, c_2, \dots c_l</tex> символы, по которым есть переход из состояния <tex>i</tex> в состояние <tex>j</tex>. | ||
− | *<tex>\xi_{ijk} = \xi_{ij{k-1}} \mid \xi_{ik{k-1}} (\xi_{kk{k-1}})^* \xi_{kj{k-1}}</tex>. | + | *<tex>\xi_{iik} = (\xi_{ii{k-1}} \mid \xi_{ik{k-1}} (\xi_{kk{k-1}})^* \xi_{ki{k-1}} )^*</tex>. |
+ | *<tex>\xi_{ijk} = \xi_{ij{k-1}} \mid \xi_{ik{k-1}} (\xi_{kk{k-1}})^* \xi_{kj{k-1}}</tex>. | ||
Теперь нетрудно задать регулярное выражение для всего языка: | Теперь нетрудно задать регулярное выражение для всего языка: |
Версия 20:53, 3 октября 2015
Теорема (Клини): |
Классы автоматных и регулярных языков совпадают. |
Доказательство: |
1. .Для доказательства будем строить автоматы, допускающие регулярные языки (см. картинки справа). При этом будем использовать индукцию по номеру поколения регулярного языка. База. . Для этого достаточно построить автоматы для трех языков:
Индукционный переход. Умеем строить автоматы для языков -ого поколения. Будем строить для . Для этого достаточно научиться строить автоматы для следующих языков ( ):
Заметим, что по предположению индукции автоматы для могут быть построены.Итого, мы можем по регулярному выражению построить автомат, допускающий тот же язык. 2. .Для доказательства будем строить регулярное выражение, допускающее язык, заданный каким-то автоматом. Пусть задан автомат с набором состояний .Определим регулярные выражения, задающие следующие множества слов: , причем в качестве промежуточных вершин выступают только такие, у которых номер не более . Построим эти регулярные выражения:
Теперь нетрудно задать регулярное выражение для всего языка: Таким образом, мы построили по автомату регулярное выражение, допускающее тот же самый язык. , где — стартовое состояние, а — терминальные состояния исходного автомата. |