regex - 具有多个起始状态的 NFA 到 DFA 的转换

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

地点: -> = 初始状态, * = 接受状态, --- = 空集,

最佳答案

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

关于regex - 具有多个起始状态的 NFA 到 DFA 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23999233/

相关文章:

android 正则表达式问题

regex - 文本消息与数千个正则表达式的高效匹配

c - 从正则表达式到 NFA 再到 DFA

regex - 非确定性有限自动机 (NFA) 校正

jquery - 正则表达式过滤器不执行精确匹配

php - 带两个小数点的单个数字的正则表达式模式

javascript - 如何允许包含禁用词的词?

dfa - NFA转DFA的伪代码

java - 通过此数据对有限确定性自动机进行建模

nfa - 我们怎么知道 NFA 有最少的状态?