如何编写一个通过这个非确定性有限自动机识别单词的函数?我不明白如何将图片上的伪代码应用于非确定性有限自动机的方案。必须在程序中输入一个单词。在事件开始()是通过这个NFA识别单词来确定的。
var states = {
q0:{
name: 'q0',
isFinish: false,
next: {
'a': 'q3',
'a': 'q6',
'a': 'q5'
}
},
q1: {
name: 'q1',
isFinish: false,
next: {
'a': 'q5',
'a': 'q6'
}
},
q3: {
name: 'q3',
isFinish: true,
next: {
'b':'q4'
}
},
q4: {
name: 'q4',
isFinish: true,
next: {
'b': 'q4'
}
},
q5: {
name: 'q5',
isFinish: false,
next: {
'b': 'q1'
}
}
};
var current = states.q0;
function input(symbol) {
if(!current.next[symbol]) throw Error('invalid input');
current = states[current.next[symbol]];
console.log(current);
}
function start() {
current = states.q0;
input('a');
input('b');
input('a');
if(current.isFinish){
console.log('recognized');
}
}
<input type="button" value="Start NFA" onclick="start()">