Участница:Наталья Юльцова — различия между версиями
(→Преобразование ДКА в регулярное выражение с помощью алгебраического метода Бжозовского.) |
(→пGреобразование регулярного выражения в ДКА.) |
||
Строка 1: | Строка 1: | ||
− | = | + | =Преобразование регулярного выражения в ДКА= |
− | + | ||
− | |||
1) Преобразовать регулярное выражение в ε-НКА. Будем пользоваться следующим правилом: | 1) Преобразовать регулярное выражение в ε-НКА. Будем пользоваться следующим правилом: | ||
1. Для регулярного выражения A|B можем построить следующий КА: | 1. Для регулярного выражения A|B можем построить следующий КА: | ||
Строка 22: | Строка 21: | ||
3) Преобразуем НКА в ДКА и минимизируем ДКА: | 3) Преобразуем НКА в ДКА и минимизируем ДКА: | ||
− | |||
=Преобразование ДКА в регулярное выражение с помощью алгебраического метода Бжозовского.= | =Преобразование ДКА в регулярное выражение с помощью алгебраического метода Бжозовского.= |
Версия 17:09, 31 декабря 2020
Преобразование регулярного выражения в ДКА
1) Преобразовать регулярное выражение в ε-НКА. Будем пользоваться следующим правилом: 1. Для регулярного выражения A|B можем построить следующий КА:
2. Для регулярного выражения AB можем построить следующий КА:
3. Для регулярного выражения A* можем построить следующий КА:
2) Преобразовать ε-НКА в НКА (статья : Автоматы с eps-переходами. Eps-замыкание) 3) Преобразовать НКА в ДКА (статья : Построение по НКА эквивалентного ДКА, алгоритм Томпсона) Пример: преобразовать регулярное выражение (0|1)*1(0|1) в ДКА. 1) Преобразуем регулярное выражение (0|1)*1(0|1) в ε-НКА. Построим сначала автомат для 0|1. Для этого воспользуемся правилом 1.
Далее принимаем (0|1) за А и строим по правилу 3 выражение (0|1)*. После по правилу 2 соединим (0|1)*, 1, и (0|1).
2) Удалим ε-переходы, получим НКА:
3) Преобразуем НКА в ДКА и минимизируем ДКА:
Преобразование ДКА в регулярное выражение с помощью алгебраического метода Бжозовского.
Создадим систему регулярных выражений для каждого состояния в ДКА, а затем решим систему для регулярных выражений
, связанных с терминальным состояниями . Строим уравнения следующим образом: для каждого состояния уравнение является объединением переходов, ведущих в это состояние. Переход a из в обозначим за . Если - терминальное состояние, то добавим в . Это приводит к системе уравнений вида:
где
= ∅ если нет перехода от к . Система может быть решена с помощью простой подстановки, за исключением случаев, когда неизвестное появляется как в правой, так и в левой части уравнения. Для этого воспользуемся теоремой Ардена:Уравнение вида R = Q + RP, где P
, имеет решение R = QP*.Пример
Найти: Регулярное выражение, удовлетворяющее данному ДКА.
Решение:
Рассмотрим первое терминальное состояние:
Воспользуемся теоремой Ардена:
Рассмотрим второе терминальное состояние :
Объединим выражения для терминальных состояний и получим искомое регулярное выражение: