关于有限状态机的状态

时间:2015-08-06 22:28:17

标签: fsm

问题是让sigma =(1,2,3,$)。当sum为> _5时,我需要绘制其输出1的图表。如果超过5,金额将结转。

我想知道在这种情况下会是什么状态。我可以让A =我看过1 B =我见过2,C =我看到3和D =接受状态吗?

2 个答案:

答案 0 :(得分:0)

您不需要跟踪当前的金额。您只需要跟踪模5的总和。

这样做的一种方法是让你的状态空间为A0,A1,A2,A3,A4和B0,B1,B2。如果您输入" A"州,你输出0,如果你输入" B"州,你输出1。

您的状态转换取决于您看到的下一个数字。例如:

  • 如果您在A1中,并且您看到的下一个数字是2,则转换为A3,然后输出0.
  • 如果您在A4中,并且您看到的下一个数字是1,则转换为B0,然后输出1.
  • 如果您在B2中,并且您看到的下一个数字是1,则输入A3,然后输出0.
  • 如果您在B2中,并且您看到的下一个数字是3,则输入B0,然后输出1.

通常,假设您处于状态XY,其中X是A或B,Y是0,1,2,3或4.设D是您看到的下一个数字。您将输入的下一个州将是X' Y',其中:

  • X'如果D + Y
  • X'如果D + Y> = 5,则为B.
  • Y'#39;是D + Y模5。

答案 1 :(得分:0)

不,你不能只使用三种状态。到目前为止,您的FSM必须以某种方式继续计算输入值的当前总和。问题是FSM没有内存(这将是另一种自动机),因此它必须是一个状态,用于评估所有可能总和的每个可能的数字组合。

那就是:你需要一个意味着("当前总和为0")的状态。让该状态为状态0.这将是你的初始状态。其他州将是"目前的总和是1" (状态1),"当前总和为2" (状态2),....,"当前的总和是5" (状态5),"当前总和为6" (状态6)等(不,你不会需要无数个状态,例如,从状态5开始,值为1的转换会再次引导你进入状态1.

从状态0开始,1转换会导致您进入状态1.转换为2,转换为状态2并转换为3转换为状态3.简单,不是吗?

例如,从状态3开始,1转换会导致转换4,转换为2转换为状态5,这是一个接受状态,转换为3转换为状态6,这也是一个接受状态。

再举一个例子:从状态6开始,1转换会导致你......状态2.右边:状态6意味着当前总和为6,超过5比1.所以这就像转换1一样,但它是一个被接受的状态,所以从状态6的转换到了与状态1的转换相同的位置。这将有助于您构建FSM。

实际上,较大的状态数由最大值确定,您可以将1,2和3与第一次溢出5相加。那将是1 + 1 + 1 + 1 + 3 = 7.所以你需要从状态0定义到状态7,当然,还需要在检测到$时定义最终状态。