【问题标题】:NFA to DFA where a state only has an epsilon transitionNFA 到 DFA,其中状态仅具有 epsilon 转换
【发布时间】:2019-03-21 13:21:04
【问题描述】:
如果在将 NFA 表转换为 DFA 表时,存在仅作为 epsilon 转换的状态,它是如何转换为 DFA 表的。
例如,如果状态 1 在 ε 列中只接受 2,它在 DFA 转换中会是什么样子?
转换表:
a b c ε
1 {} {} {} {2}
2 {3} {} {} {}
3 {4} {3,4} {} {}
4 {4} {} {} {}
【问题讨论】:
标签:
dfa
state-machine
deterministic
nfa
non-deterministic
【解决方案1】:
我认为最好先消除 epsilon 转换以获得 NFA(没有 epsilon 转换)。从 NFA 应该更容易获得等效的 DFA。
如何消除ε转换?
首先,我们有一个状态的术语ECLOSE。 ECLOSE(q) 定义为所有状态的集合(包括状态 q 本身),可以通过以下 epsilon 转换到达。
在你的情况下:
ECLOSE(1) = {1,2}
要消除 epsilon 转换,请执行以下步骤:
- 如果
ECLOSE(1) 包含最终状态,则将state 1 设置为最终状态
状态
- 添加从
state 1 到state q 的转换(带有相应标签)当且仅当从ECLOSE(1) 中的某些状态转换到state q
- 现在您可以删除所有 epsilon 转换。
经过上述步骤(您没有指定哪些状态是开始和/或最终状态),您应该得到:
a b c
1 {3} {} {}
2 {3} {} {}
3 {4} {3,4} {}
4 {4} {} {}