2017-03-09 5 views
0

상태 머신이 사용되는 MIT OCW 코스 Introduction to Electrical Engineering and Computer Science I을 통해 진행 중입니다. 코스 강사가 토론하는 대부분의 주 기계에 대한 상태 전이 다이어그램을 그리지 않는다는 것을 알았습니다.이중 지연 이산 시간 기계의 상태 머신 상태 전이 다이어그램

한 가지 문제는 & 파이썬 코드를 과거의 두 시간 간격에서 입력 된 상태 기계로 디자인하는 것입니다. 이것은 상태 전환 다이어그램이 단지 몇 가지 상태만을 보여 주면서 일반적인 아이디어를 얻는 데 유용 할 수있는 무한한 상태 머신이라고 생각합니다.

상태 전환 다이어그램을 이중 지연 기계에 그릴 수 있는지 궁금합니다. 지금까지 모든 예제는 입력으로 표시된 상태 거품과 출력 결과에서 다음 상태를 가리키는 전환 선을 나타냅니다. 이중 지연 기계의 경우 결과 입력은 이전의 두 시간 기간으로 입력됩니다. 기계의 상태 메모리가 하나의 인수가되도록 problem instructions 상태. 입력 메모리에 관해서는 언급하지 않았습니다.

내 질문 :

  1. 은 상태 천이도이 상태 머신에 대한 인출 할 수 있습니까?

  2. 입력 메모리가이 디자인의 일부일 수 있습니까?

답변

0

모든 가능한 상태들의 세트가 (단일)에 대한 실시 예에서 주어진 데이터 유형의 값의 측정에서 상태 머신 지연을 포함하기 때문에 도면을 그릴 수 없다. 따라서 가능한 상태의 수를 정의 할 수 없습니다. Chapter 4: State Machines을 참조하십시오.

가 self.startState (심지어 self.state 제외한 모든 인스턴스 변수들을 설정하거나 읽을 수있는 상태 머신의 및 getNextValues ​​메소드 init를 필수적이다 : 문제 설명에

그것은한다고). 모든 메모리 (state)는 getNextValues의 state 인수에 있어야합니다. 코스 노트, 섹션 4.1의 예제를보십시오.

그래서 상태는 필요한 모든 메모리입니다. 마지막 두 입력을 유지하기 위해 배열을 상태로 사용하지 않을 이유가 없습니다.

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])