当前位置: 首页 > 知识库问答 >
问题:

确定性有限自动机状态图

华项明
2023-03-14

如果我必须用一个状态图来画一个确定性有限自动机,以接受一种语言,例如{λε{a,b}*:λ这个词包含a的偶数和b的奇数,我怎么知道我有多少个状态?

共有1个答案

益银龙
2023-03-14

4个状态就足够了。你有两个条件同时满足:a的偶数和b的奇数。不管彼此如何,每个条件都可以是真或假。

如果我们用1表示true,用0表示false,我们会得到4种不同的可能性:两者都是false,其中一个(但不是另一个)是true,或者两者都是true。因此,我们得到了一个真值表:

even a | odd b
---------------
   0       0
   0       1
   1       0
   1       1

让我们用q[0,0]表示第一行,第二行用q[0,1]表示,依此类推。现在我们必须为每个状态指定转换,以及确定初始状态。

不管我们处于什么状态,都有两个可能的输入:a或b。因此,对于每个状态,我们必须指定两个转换。

现在,我们的初始状态是在使用任何输入之前的状态。由于0是偶数,我们得到的初始状态是q[1,0]。我们的接受状态是当两个条件都满足时,即q[1,1]

最后,我们有了状态转换,

q[0,1]是我们的初始状态

q[1, 0] reads b ->  q[1, 1]
q[1, 0] reads a ->  q[0, 0]

q[1,1]是我们的接受状态

q[1, 1] reads b ->  q[1, 0] 
q[1, 1] reads a ->  q[0, 1]

q[0,1]只有在至少读取了一个a之后,才会达到此状态

q[0, 1] reads b ->  q[0, 0]
q[0, 1] reads a ->  q[1, 1]  

q[0,0]只有在我们至少读过一个a的时候,才会达到这个状态

q[0, 0] reads b ->  q[0, 1]
q[0, 0] reads a ->  q[1, 0]
 类似资料:
  • 这里的“自动机”指的是”确定有限状态自动机”。而自动机是信息学奥林匹克竞赛、计算机科学中被广泛使用的一个数学模型,其思想在许多字符串算法中都有涉及,学习自动机有助于理解上述算法,但是学习自动机前一定要先了解基础图论的相关知识,这样才更好理解自动机。 自动机(确定有限状态自动机)是由一个非空有限状态的集合Q、一个输入字母表 Σ(非空有限字符的集合)、一个转移函数(单值映射)、一个开始状态、一个接受状

  • 如何编写Java代码来确定给定的自动机是否具有确定性。我有一个代表自动机的类,它有以下五个变量: Δ表示如下所示,例如,在实际自动机中,程序中的q1,1,q2看起来像。我知道在一个非确定性自动机中,可能有多个可能的状态,但我不知道如何计算。

  • 如果我们有一个没有最终/接受状态的有限自动机。所以F是空的。你如何最小化它?我得到了一个测试,在这个测试中,我被要求最小化一个自动机,但是它有空的F,我不知道如何解决这个问题,因为自动机没有接受状态。一个包含所有转换的初始状态是正确最小化的自动机吗?我想如果两个自动机A和B对于任何可能的输入,A返回与B完全相同的输出,它们必须是等价的。因此,如果一个自动机没有最终状态,那么它不接受任何输入或者任何

  • 概述 Javascript Finite State Machine函数库 参考链接 概述 有限状态机(Finite-state machine)是一个非常有用的模型,可以模拟世界上大部分事物。 简单说,它有三个特征: 状态总数(state)是有限的。 任一时刻,只处在一种状态之中。 某种条件下,会从一种状态转变(transition)到另一种状态。 它对JavaScript的意义在于,很多对象可

  • 概述 FSM (有限状态机) 可以mixin到akka Actor中,其概念在Erlang 设计原则中有最好的描述。 一个 FSM 可以描述成一组具有如下形式的关系 : State(S) x Event(E) -> Actions (A), State(S') 这些关系的意思可以这样理解: 如果我们当前处于状态S,发生了E事件,则我们应执行操作A,然后将状态转换为S’。 一个简单的例子 为了演示F

  • 我的问题是,我如何开始在圆圈中“绘制”状态,添加边,在两个状态之间插入输入,我如何使用java编写GUI部分?请帮我一把..