2017-03-09 13 views
0

ステートマシンが採用されているMIT OCWコースIntroduction to Electrical Engineering and Computer Science Iを使用しています。私はコースのインストラクターが彼らが議論しているほとんどの州の機械のための状態遷移図を描かないことに気付いた。ダブル遅延離散タイムマシンのステートマシンステート遷移図

& Pythonコードは、過去2つの時間間隔からの入力である状態マシンを設計することが1つの問題です。私はこれが無限の状態マシンであると考えています。状態遷移図は一般的な考え方を得るのに有益であり、状態のほんの一部しか示していないかもしれません。

このようなダブル遅延マシンで状態遷移図を描くことができるかどうかは疑問です。これまでのすべての例では、入力とその結果の出力でマークされた状態バブルから遷移線が現れ、次の状態を指しています。ダブル遅延機械の場合、結果の入力は2つの時間周期前に入力される。 problem instructionsは、の状態のメモリが1つの引数であることを示しています。私は必要と思われる入力メモリについて言及していません。

私の質問は:

  1. 状態遷移図は、この状態マシンのために描くことができますか?

  2. 入力メモリがこの設計の一部であることは間違いありませんか?

答えて

0

すべての可能な状態の集合は、(単一の)読み取り状態機械を遅延するための一例で与えられた、任意のデータ型のいずれかの値を含んでいるので、図を描くことは不可能です。したがって、可能な状態の数を定義することはできません。 Chapter 4: State Machinesを参照してください。問題の説明では

それはと述べている:(いなくてもself.stateどのような状態のマシンでのinitとgetNextValues方法はself.startState以外の任意のインスタンス変数を設定したり、読んでいないことが不可欠である

)。すべてのメモリー(状態)は、getNextValuesの状態引き数になければなりません。コースノート、セクション4.1の例を見てください。

したがって、状態は必要なすべてのメモリです。最後の2つの入力を保持するために状態として配列を使用しない理由はありません。

def step(self, inp): 
    (s, o) = self.getNextValues(self.state, inp) 
    self.state = s 
    return o 

が出力の最初になります。また、測定値に与えられたスーパークラスのSMステップ関数の実装後

まず、我々はメモリ内の両方の値を保存する(状態)

class Delay2Machine(StateMachine): 
    def __init__(self, val0, val1): 
     self.startState = (val0, val1) 

値はメモリに保存され、状態は新しい入力を含むように更新されます

def getNextValues(self, state, inp): 
     return ((state[1], inp), state[0]) 
関連する問題