因此,我可以采用具有单一起始状态的给定 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/