具有多个开始状态的 NFA 到 DFA 转换

fle*_*254 2 regex dfa nfa

因此,我可以采用具有单个起始状态的给定 NFA 并将其转换为等效的 DFA 很容易,但是当涉及具有多个起始状态的 NFA 时,我感到很困惑。

由于 DFA 只能有一个起始状态(如果我是正确的),我怎么知道 NFA 中的两个起始状态中的哪一个成为 DFA 中的唯一起始状态。

作为参考,这是我要转换的 NFA:

   N|   a   |   b   |   c   |
____________________________
 ->0| {0,2} | {0,3} |  ---  |
*->0|  {0}  |  {0}  |  {3}  |
   0|  {2}  |  ---  | {2,3} |
 * 0|  {2}  |  ---  |  {3}  |
Run Code Online (Sandbox Code Playgroud)

其中: -> = 初始状态,* = 接受状态,--- = 空集,

Ber*_*rgi 6

具有多个起始状态的 NFA 等效于具有附加状态(成为新的单个起始状态)和从该状态到“实际”起始状态的?-edges的 NFA :

   N|   a   |   b   |   c   |   ?   |
----+-------+-------+-------+-------+
   0| {0,2} | {0,3} |   {}  |   {}  |
*  1|  {0}  |  {0}  |  {3}  |   {}  |
   2|  {2}  |   {}  | {2,3} |   {}  |
*  3|  {2}  |   {}  |  {3}  |   {}  |
 ->4|   {}  |   {}  |   {}  | {0,1} |
Run Code Online (Sandbox Code Playgroud)