所有过渡的状态机

时间:2017-01-11 14:28:23

标签: state-machine

我正在尝试设计一个状态机,它将遍历状态之间的所有可能的转换。但是,状态机无法从给定状态移回自身。从下图中,我得出了在给定状态数(N)的情况下,转换次数等于N ^ 2 - N.

State Transitions for 5 States

有关如何处理此事的任何想法吗?

1 个答案:

答案 0 :(得分:1)

在第一次误解了这个问题之后,这是另一次尝试。

所以我们想一次性横向图,我们不允许两次使用相同的过渡。诀窍可能是让赛道自由回到起跑状态。

states = 4  # Select number of states

path = [0]  # Start in state 0 (must be zero)

def walk(path):
   home_state = path[-1]
   for i in range(home_state + 2, states):
       # We leave a state out that we go to next
       path.append(i)
       path.append(home_state)
   if home_state + 1 < states:
       path.append(home_state + 1)
       walk(path)
       path.append(home_state)

walk(path)
print path

应该给出

[0, 2, 0, 3, 0, 1, 3, 1, 2, 3, 2, 1, 0]