2017-01-11 6 views
0

状態間のすべての可能なトランジションを横断する状態マシンを設計しようとしています。しかし、状態機械は、所与の状態からそれ自体に戻ることはできない。以下の図から、私は状態の数(N)与えられ、遷移の数はN^2に等しいことを打ち出している - N.すべてのトランジション可能な状態マシン

State Transitions for 5 States

これにアプローチする方法上の任意のアイデアしてください?

+0

を与える必要がありますか? –

+0

はい、デバイスに送信したい5ビットパターンがあります。すべての遷移が可能です。 32ステート、992トランジション – Malteaser6900

+0

例:2ビットパターンの場合、4つのステートA、B、C、Dがあります。私はA> B、A> C、A> D、B> A、B> C、B> D、C> A、C> B、C> D、D> C. – Malteaser6900

答えて

1

初めて問題を誤解した後、別の試みがあります。

グラフを一度に横断したいので、同じ遷移を2回使用することはできません。トリックはおそらくトラックを自由に出発状態に戻すことです。

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] 
+0

そのリストから重複を削除する必要があります。私の言うことは、上記のロジックを使って、最初の質問で私の回答に記載したように遷移を作成するということです。 A> B、A> C、A> D、B> A、B> C、B> D、C> A、C> B、C> D、D>しかし、これはA> B> A> C> A> D> B> A> B> C> B> D> C> A> C> B> C> D> D> A> D > B> D> C。これは、このリストの最初のものがB> Aであるトランジションの複製を導入する。 – Malteaser6900

+0

これはもう少し複雑です。私は解決策を更新しました。 –

+0

@ Malteaser6900あなたは新しいソリューションを試してみましたか? –

関連する問題