Java 查看NFA是否接受字符串

Java 查看NFA是否接受字符串,java,hashmap,nlp,nfa,Java,Hashmap,Nlp,Nfa,我已经实现了一个方法,可以扫描以特定格式编写的NFAs。它使用HashMap>,其中第一个状态是当前状态,映射中的字符串是导致转换的符号,第二个映射中的状态是它所处的状态。我可以把NFA加载到这里面 我的问题是找到匹配它的字符串。程序的下一部分扫描一系列符号,例如bc,并需要判断当前加载的NFA是否接受它们。目前我有: public static boolean search(State state, int track){ String s = inputS[track];

我已经实现了一个方法,可以扫描以特定格式编写的NFAs。它使用HashMap>,其中第一个状态是当前状态,映射中的字符串是导致转换的符号,第二个映射中的状态是它所处的状态。我可以把NFA加载到这里面

我的问题是找到匹配它的字符串。程序的下一部分扫描一系列符号,例如bc,并需要判断当前加载的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;   
}
输入数组是我判断的字符串中的符号数组。我在解释以下情况时遇到了问题:行读入NFA,但未以接受状态结束,我知道我需要以某种方式回溯以继续搜索…提前感谢您的帮助