谁能详细给我解释一下如何绘制计算机科学理论中的转换图(DFA/NFA)?

Can anybody explain it to me in detail how to draw transition diagram (DFA/NFA) in theory of computer science?

好的,所以这个主题有点混乱。我可以很好地理解转换 table 但是当涉及到图表时,我很难找出图表是在什么基础上创建的。谁能详细解释一下,我们是根据什么来构造Dfa和Nfa的转换图的

图表是图表的另一种表示形式。该图包含作为节点的每个状态和作为边缘的每个状态转换。假设您有两个状态 A 和 B 以及一个转换 (A, x, B)。相应的图有两个节点 A 和 B 以及一条从 A 到 B 的边,边上的标签为 x。开始和结束状态在图中有特殊符号以便能够识别它们。

您只需执行 if-elseif 类型条件即可从 table 绘制 DFA。

DFA: 即确定性有限自动机,其中任何输入的决策都应该是确定性的,即应该确认特定输入的输出。因此它只有一种状态作为特定输入的输出。

NFA:即非确定性有限自动机,其中任何输入的决定可能不是确定性的,即可能无法确认特定输入的输出。所以它可以有一个或多个状态作为特定输入的输出。

  • 举个构造DFA图的例子:

假设您有转换 table 给定:

→表示开始状态:这里是q0

*表示最终状态(这里只有一个最终状态q1)

此 table 的 DFA 图为:

说明:

  • 从table,很明显,从起始状态即A,当你得到符号0作为输入时,你必须进入状态C,当你得到符号1时输入然后你必须去状态B.

    所以在图中,我们根据符号在两个状态之间显示箭头。

  • 像这样,我们移动到 B,并且 table 显示在符号 0 作为输入时,转到状态 C,在符号 1 作为输入时,转到状态 B。所以你按照这个画两个箭头。

  • 从C开始,符号0作为输入进入状态C,符号1作为输入进入状态D,即最终状态。所以你为此画了两个箭头。

  • 再次对 D 执行相同的过程。

注意:为了将状态显示为初始状态,您在表示第一个状态的圆圈后面添加一个箭头,为了表示该状态为最终状态,您可以画一个圆圈里面other如图。

  • 再举一个构造NFA图的例子:

假设您有转换 table 给定:

table 的 NFA 图可以构造为:

你可以很容易地理解这个概念,因为这里的概念与DFA图构造相同。这里的区别在于,在单个输入上,可以有多个输出状态;所以你必须为每个输出状态绘制箭头。

以 0 开头并以 1 结尾的字符串的 DFA:

建筑:

  1. 画一个初始状态圆1.

  2. 由于字符串应以 0 开头,因此,在获得 0 作为输入时,转换应继续进行下一个状态 2,因为我们的第一个情况在这里得到满足。所以制作一个新的状态圈 2 并在两个状态之间的箭头上显示 0 作为输入。

    但问题是,当你得到输入 1 时,你的两种情况(0 应该是第一个输入,1 应该是最后一个)现在永远无法满足。因此,它为输入 1 创建另一个状态 3 圆圈,并显示指向该状态的箭头,该箭头在输入 1 和 0 上进入相同的状态 3。由于您的条件现在永远无法满足,因此您通过显示将状态 3 留在这里一个循环。

  3. 现在让我们前进到状态 2。当您输入 0 时,您必须将循环显示到状态 2 本身,因为您的最终条件,即“1 应该在最后of the string" 不能满足输入 0 --> 所以你不能为此进入最终状态。

    但是,当您在状态 2 上获得输入 1 时,您将获得满足的两个条件(0 应该是第一个输入,1 应该是最后一个)。因此,您将箭头指向状态 2 上输入 1 的最终状态 4。

  4. 现在处于最终状态,即状态 4,您仍然可以获得输入,因为没有给定字符串的任何长度。所以你仍然可以获得输入 1 和 0。

    • 当你在最终状态输入 1 时,你的字符串现在类似于 011 所以你的两个条件现在都满足,所以你循环到输入 1 的最终状态.

    • 但是当你在最终状态输入 0 时,即 state-4 那么你的字符串将类似于 010 然后你的一个条件即“1 应该是字符串的最后一个元素”不是满足然后你从状态 4 到状态 3 的转换,因为这是唯一可以解决在字符串末尾获取 1 的问题的状态。

希望您现在理解这个概念并对您有所帮助!