【问题标题】:NFA to DFA conversion with multiple start states具有多个起始状态的 NFA 到 DFA 转换
【发布时间】:2014-06-02 16:31:30
【问题描述】:

所以我可以很容易地将给定的具有单个起始状态的 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}  |

在哪里: -> = 初始状态, * = 接受状态, --- = 空集,

【问题讨论】:

    标签: regex dfa nfa


    【解决方案1】:

    具有多个启动状态的 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} |
    

    【讨论】:

      猜你喜欢
      • 2019-03-21
      • 2020-02-28
      • 2011-04-29
      • 2019-10-18
      • 2014-10-23
      • 2011-08-16
      • 2013-01-28
      • 2011-05-25
      相关资源
      最近更新 更多