【发布时间】:2018-09-26 00:03:58
【问题描述】:
感觉这应该比现在更容易,但我遇到了问题。问题如下:
为以下语言 L = {ab,ba}* 构造一个 NFA。所以,我知道我可以在字符串中包含 ab 或 ba 的任意组合,但是如果说我连续得到两个 a,我是否需要一个死状态,或者它只是重新开始?这是我有的两个图表:
这些都是正确的吗?而且由于它们是 NFA 与 DFA,我是否需要在这里某处使用 lambda 边缘?
【问题讨论】:
-
您的所有示例都是 DFA(当然 NFA 也是如此)。您的第一个示例不正确,因为它接受语言之外的字符串(例如
aab)。你的第二个和第三个例子几乎是正确的,但不是最小的。 DFA 都不接受该语言中的空字符串。具有 3 个状态(或 4 个具有显式死状态)的最小 DFA 是可能的。状态{q1, q2, q3}、q1是开始和接受状态。转场:q1,a,q2, q1,b,q3, q2,b,q1, q3,a,q1.
标签: finite-automata non-deterministic