我正在以我的方式完成麻省理工学院的开放式课程,电气工程与计算机科学导论,其中使用状态机。我已经注意到,课程讲师没有为他们讨论的大多数状态机绘制状态转换图。
一个问题是设计一个状态机& Python代码,它的状态是过去两个时间间隔的输入。我认为这是一个无限状态机,状态转换图可能有助于得到一般的想法,同时只显示其中的几个状态。
我想知道是否可以为这种双延迟机器绘制状态转换图。到目前为止,所有的例子都有一条从状态泡中出现的过渡线,这个状态泡标记有一个输入和结果输出,然后指向下一个状态。对于双延时机器,结果的输入是在前两个时间段输入的。问题指令状态:机器的所有状态内存都在一个参数中。没有提到输入内存,我认为这是必要的。
我的问题:
发布于 2017-07-13 15:37:33
绘制图表是不可能的,因为所有可能的状态集都包含任何数据类型的值,在读取中为(单个)延迟状态机提供的示例中给出了这种值。因此,无法定义可能的状态数。见第4章:状态机。
在问题描述中,它指出:
在任何状态机中,、init、和getNextValues方法必须不设置或读取除self.startState (甚至self.state)以外的任何实例变量。所有内存(状态)必须位于getNextValues的状态参数中。请看课程说明中的例子,第4.1节。
所以状态就是你所需要的全部记忆。没有理由不使用数组作为状态来保留最后两个输入。
首先,我们将两个值保存在内存(状态)中。
class Delay2Machine(StateMachine):
def __init__(self, val0, val1):
self.startState = (val0, val1)
以下是在阅读中给出的超类SM步骤函数实现:
def step(self, inp):
(s, o) = self.getNextValues(self.state, inp)
self.state = s
return o
输出将是保存在内存中的第一个值,状态将被更新以包含新的输入。
def getNextValues(self, state, inp):
return ((state[1], inp), state[0])
https://stackoverflow.com/questions/42701873
复制