查看NFA是否接受字符串

时间:2014-10-10 03:52:22

标签: java hashmap nlp nfa

我已经实现了一种扫描以特定格式编写的NFA的方法。它使用HashMap>在第一个State是当前状态的情况下,map中的字符串是导致转换的符号,第二个映射中的状态是它转到的状态。我可以加载NFA就好了。

我的问题是找到与之匹配的字符串。程序的下一部分扫描一系列符号,例如“a”“b”“c”,并需要判断当前加载的NFA是否接受它们。目前我有这个:

    public static boolean search(State state, int track){
    String s = inputS[track];
    state.visited = true;
    System.out.println("state: " + state.label);
    System.out.println("input" + s);
    HashMap<String, ArrayList<State>> p = FSA.get(state);
    if(p.containsKey(s)){
        track++;
        if(track == inputS.length-1 && state == finalState){
            return true;
        }
        for(State st : p.get(s)){
            if(st.visited == false){
                return search(st, track);
            }
        }
    } 

return false;   
}

inputS数组是我正在判断的字符串中的符号数组。我无法解释线路读入NFA但未以接受状态结束的情况,我知道我需要以某种方式回溯以继续搜索...提前感谢您的帮助。

0 个答案:

没有答案