Чтобы учесть эпсилон-переходы, вы можете выполнить любое количество эпсилон-переходов до и после прочтения следующего символа. Таким образом, вы не только учитываете, куда можно пойти, когда читаете символ 0
(в качестве примера), но и учитываете, куда можно пойти, когда выполняете эпсилон-переходы до и после, например ε* 0 ε*
.
* 1004. * Это означает, что когда вы начинаете с состояния
{A}
и читаете символ
0
, вы можете перейти в следующие состояния:
A --0--> B
A --0--> B --ε--> C
A --0--> C
A --ε--> B --ε--> C --0--> C
А для чтения символа 1
вы можете перейти кследующие состояния:
A --1--> A
A --1--> A --ε--> B
A --1--> A --ε--> B --ε--> C
A --ε--> B --1--> B
A --ε--> B --1--> B --ε--> C
A --ε--> B --ε--> C --1--> C
Таким образом, в полученном DFA переход будет выглядеть следующим образом:
+-------+---------+---------+
| state | 0 | 1 |
+-------+---------+---------+
| {A} | {B,C} | {A,B,C} |
+-------+---------+---------+