Итак, на рисунке два DFA, поэтому я покажу, как получить RE для каждого из них по очереди.Для первого мы запишем некоторые уравнения:
(q1) = (q1)a + (q2)b + e
(q2) = (q1)b + (q2)a
Теперь мы можем использовать правило (q) = (q)x + y <=> (q) = yx*
для каждого:
(q1) = ((q2)b + e)a*
(q2) = (q1)ba*
Теперь мы можем заменить, и так как мы заботимся о(q2) мы могли бы также получить это непосредственно:
(q2) = ((q2)b + e)a*ba*
= (q2)ba*ba* + a*ba*
= a*ba*(ba*ba*)*
Мы получаем регулярное выражение a*ba*(ba*ba*)*
, которое, на первый взгляд, кажется правильным.Как мы получили уравнения?Для каждого штата мы записали способы «добраться до» штата и объединили их с + (или, union).Мы включаем пустую строку e в уравнение (q1), так как (q1) является начальным состоянием и ничего не нужно использовать, чтобы попасть туда (изначально).
Для второго уравнения выглядят так:
(q1) = (q3)a + e
(q2) = (q1)(a + b) + (q2)a + (q3)b
(q3) = (q2)b
Мы можем использовать наше правило, чтобы исключить самоссылку для (q2):
(q1) = (q3)a + e
(q2) = ((q1)(a + b) + (q3)b)a*
(q3) = (q2)b
Теперь мы подставим и снова используем правило:
(q1) = (q3)a + e
(q2) = ((q1)(a + b) + (q3)b)a*
(q3) = ((q1)(a + b) + (q3)b)a*b
= (q1)(a + b)a*b + (q3)ba*b
= (q1)(a + b)a*b(ba*b)*
Теперь мы снова подставляем и снова используем правило:
(q1) = (q1)(a + b)a*b(ba*b)*a + e
= e((a + b)a*b(ba*b)*a)*
= ((a + b)a*b(ba*b)*a)*
(q2) = ((q1)(a + b) + (q3)b)a*
(q3) = (q1)(a + b)a*b(ba*b)*
Теперь мы можем подставить обратно, чтобы получить выражение для (q3):
(q1) = ((a + b)a*b(ba*b)*a)*
(q2) = ((q1)(a + b) + (q3)b)a*
(q3) = ((a + b)a*b(ba*b)*a)*(a + b)a*b(ba*b)*
Регулярное выражение будетобъединение выражений для (q1) и (q3), поскольку они являются принимающими состояниями:
r = ((a + b)a*b(ba*b)*a)* + ((a + b)a*b(ba*b)*a)*(a + b)a*b(ba*b)*
= ((a + b)a*b(ba*b)*a)*(e + (a + b)a*b(ba*b)*)
Первая часть этого возвращает вас из состояния q1 обратно в состояние q1 всеми возможными способами;вторая часть говорит, что вы можете остаться в q1 или заняться другим делом, что в противном случае приведет к q3.