问题是让sigma =(1,2,3,$)。当sum为> _5时,我需要绘制其输出1的图表。如果超过5,金额将结转。
我想知道在这种情况下会是什么状态。我可以让A =我看过1 B =我见过2,C =我看到3和D =接受状态吗?
答案 0 :(得分:0)
您不需要跟踪当前的金额。您只需要跟踪模5的总和。
这样做的一种方法是让你的状态空间为A0,A1,A2,A3,A4和B0,B1,B2。如果您输入" A"州,你输出0,如果你输入" B"州,你输出1。
您的状态转换取决于您看到的下一个数字。例如:
通常,假设您处于状态XY,其中X是A或B,Y是0,1,2,3或4.设D是您看到的下一个数字。您将输入的下一个州将是X' Y',其中:
答案 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,当然,还需要在检测到$时定义最终状态。