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

时间:2014-06-02 16:31:31

标签: 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}  |

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

1 个答案:

答案 0 :(得分:4)

具有多个开始状态的NFA相当于具有附加状态的NFA(成为新的单一开始状态)和ϵ-edges从那个到“实际”开始状态:

   N|   a   |   b   |   c   |   ϵ   |
----+-------+-------+-------+-------+
   0| {0,2} | {0,3} |   {}  |   {}  |
*  1|  {0}  |  {0}  |  {3}  |   {}  |
   2|  {2}  |   {}  | {2,3} |   {}  |
*  3|  {2}  |   {}  |  {3}  |   {}  |
 ->4|   {}  |   {}  |   {}  | {0,1} |