DFA 可以有 epsilon/lambda 转换吗?

Posted

技术标签:

【中文标题】DFA 可以有 epsilon/lambda 转换吗?【英文标题】:Can a DFA have epsilon/lambda transitions? 【发布时间】:2012-11-27 06:59:13 【问题描述】:

找不到任何肯定的东西。具有任何 epsilon 转换的 NFA 是 epsilon-NFA 吗? 谢谢。

【问题讨论】:

lambda 转换是什么意思? 有些书使用 lambda 而不是 epsilon。是一样的。 【参考方案1】:

DFA 没有 epsilon 转换。如果有,它可以在没有任何输入的情况下从当前状态转换到其他状态,即没有任何输入,甚至没有 或 phi。作为定义,我们知道输入必须来自输入集。 希望这可以消除您的疑问...

【讨论】:

如果这个过渡到最终状态会怎样?如本文档第 225 页中的图 3.51 univasf.edu.br/~marcus.ramos/lfa-2008-1/Secao%2003-06.pdf 。 哇..图像现在不言自明了..如您所见,q0 在没有任何输入的情况下过渡到 q3,因此它是 NFA 并且它具有 epsilon 移动,因此它是 epsilon-NFA 而不是DFA.. 感谢您的澄清【参考方案2】:

DFA 必须有一个明确的输入符号才能从一种状态移动到另一种状态。 DFA 中不允许 Epsilon 移动,因为它会将 DFA 更改为 NFA。例如,假设您处于状态 Q1,并且您有一个转移 (Q1, e) = Q2,在这种情况下您可以不应用任何输入直接进入 Q2 或者您可以停留在 Q1 状态,所以您有两个选择机会在状态 Q1。对于 DFA,您不能有任何选择标准。这就是 DFA 没有 epsilon 移动的原因。

【讨论】:

【参考方案3】:

根据 DFA 的定义,“确定性有限自动机是一种在没有任何输入的情况下无法在其他状态下移动的机器”。而且由于 epsilon 没有任何意义。因此 DFA 不能在 epsilon 移动上移动。

而根据 NFA 的定义,“非确定性有限自动机是一种可以在没有任何输入的情况下移动到其他状态的机器”。因此 NFA 可以在 epsilon 移动上移动。

【讨论】:

【参考方案4】:

如果开始状态也是结束状态,则 fa 接受 lamda。此外,如果 fa 使用 lamda 明确显示从一种状态到下一种状态的转换,则 lamda 可以被视为输入。

【讨论】:

以上是关于DFA 可以有 epsilon/lambda 转换吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用无关转换最小化 DFA

NFA 到 DFA 转换的简明描述?

编译原理-NFA构造DFA

将字符集转换为 nfa/dfa 的高效算法

用c++实现,NFA到DFA的转换,请教高手。

编译原理NFA转DFA ,请问DFA的初始状态如何确定?