State machine 双延迟离散时间机器的状态机-状态转移图

State machine 双延迟离散时间机器的状态机-状态转移图,state-machine,State Machine,我正在麻省理工学院开放式课程中学习状态机。我注意到,课程讲师没有为他们讨论的大多数状态机绘制状态转换图 一个问题是设计&用Python编写一个状态机,其状态是过去两个时间间隔的输入。我认为这是一个无限状态机,对于它来说,状态转换图可能有助于获得总体概念,同时只显示少数状态 我想知道是否可以为这种双延迟机器绘制一个状态转换图。到目前为止,所有的例子都有一条从状态泡沫中浮现出来的过渡线,标记有输入和结果输出,然后指向下一个状态。对于双延迟机器,结果输入是在前两个时间段输入的。机器的所有状态内存位于一

我正在麻省理工学院开放式课程中学习状态机。我注意到,课程讲师没有为他们讨论的大多数状态机绘制状态转换图

一个问题是设计&用Python编写一个状态机,其状态是过去两个时间间隔的输入。我认为这是一个无限状态机,对于它来说,状态转换图可能有助于获得总体概念,同时只显示少数状态

我想知道是否可以为这种双延迟机器绘制一个状态转换图。到目前为止,所有的例子都有一条从状态泡沫中浮现出来的过渡线,标记有输入和结果输出,然后指向下一个状态。对于双延迟机器,结果输入是在前两个时间段输入的。机器的所有状态内存位于一个参数中的状态。没有提到输入内存,我认为这是必要的

我的问题是:

  • 是否可以为此状态机绘制状态转换图

  • 输入存储器一定是这种设计的一部分吗


  • 不可能绘制图表,因为所有可能状态的集合包括任何数据类型的任何值,如读数中(单个)延迟状态机的示例所示。因此,无法定义可能的状态数。看

    问题描述中指出:

    任何状态机中的init和getNextValues方法都不能设置或读取除self.startState(甚至不是self.state)之外的任何实例变量,这一点很重要。所有内存(状态)必须位于GetNextValue的状态参数中。请看课程笔记第4.1节中的示例

    所以状态就是你所需要的全部内存。没有理由不使用数组作为状态来保留最后两个输入

    首先,我们将两个值都保存在内存中(状态)

    阅读资料中也给出了超类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])
    
        def getNextValues(self, state, inp):
            return ((state[1], inp), state[0])