2011-09-20 105 views
3

我有一個程序,只是需要所有狀態爲一組狀態作爲輸入。 然後就是採取的下一個輸入是所述一組狀態中的初始狀態,然後設置最終的狀態。DFA字符串驗證

接下來是一組過渡的,我走在狀態之中。

例如:q0,1,q1

這意味着上輸入的一個有從Q0到Q1的過渡。

每個國家都進入了過渡。

但在這裏我所面對的是refrences可以以隨機方式 是過渡可以是不重複的字符轉換的n個,因此這個原因我想保持一個HashMap對象jumpled起來每個狀態動態。

我該如何做到這一點?

回答

1

由於這是一個DFA,可以更容易和更有效,以保持從(狀態,輸入)對一個單一的散列映射到結果狀態。 DFA屬性保證可以以這種方式將轉換關係視爲一種功能。

所以,保持HashMap<StateInput, State> transtrans.put(StateInput(q0, 1), q1)你給的例子,其中

class StateInput { 
    public State state; 
    public int input; 
} 
0

這樣的事情,也許?

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

    // ... 

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

    // ... 
} 
+0

現在StateInput類中Class對象的引用在上面的例子中獲得了值q0。我不清楚StateInput類的構造函數中發生了什麼。還有關於State類的構造函數。 addTransition被賦予在國家方面的關鍵,價值和焦炭分別鍵和值。但如果價值成爲關鍵,它會更好嗎? –