2011-09-20 72 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被赋予在国家方面的关键,价值和焦炭分别键和值。但如果价值成为关键,它会更好吗? –