3

すべての状態を一連の状態として入力として受け取るプログラムがあります。次に取得される入力は、一連の状態の最初の状態であり、次に一連の最終状態です。

次は、状態間で私がとる遷移のセットです。

例えば:q0,1,q1

これは、入力 1 で q0 から q1 への遷移があることを意味します。

状態ごとに遷移が入力されます。

しかし、ここで私が直面しているのは、参照がランダムな方法でジャンプアップできることです。つまり、トランジションは、重複しない文字のトランジションの数になる可能性があるため、この原因は、各状態のハッシュマップオブジェクトを動的に維持したいということです。

どうすればこれを達成できますか?

4

2 に答える 2

1

これはDFAであるため、(状態、入力)ペアから結果の状態への単一のハッシュマップを維持する方が簡単で効率的です。DFA プロパティは、遷移関係がこの方法で関数として表示できることを保証します。

したがって、あなたが与えた例のためにaHashMap<StateInput, State> transと doを維持します。trans.put(StateInput(q0, 1), q1)

class StateInput {
    public State state;
    public int input;
}
于 2011-09-20T09:59:14.580 に答える
0

このようなもの、多分?

class State {
  private Map<State, Character> transitions;

  // ...

  public void addTransition(State nextState, Character input) {
     transistions.put(nextState, input);
  }

  // ...
}
于 2011-09-20T10:00:46.467 に答える