如何实现NFA?

时间:2018-04-21 17:51:28

标签: javascript nfa

如何编写一个通过这个非确定性有限自动机识别单词的函数?我不明白如何将图片上的伪代码应用于非确定性有限自动机的方案。必须在程序中输入一个单词。在事件开始()是通过这个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()">

enter image description here enter image description here

0 个答案:

没有答案