正则表达式和有限自动机密切相关,正则表达式相当于理论说明,有限自动机相当于具体实现.
-
有限自动机
什么是有限自动机
即输入表,有限状态集合,初始状态,一组可接受的状态,一系列转换。
有限自动机的图示表示法
两个圆表示可接受状态
单向箭头表示状态转换
需要了解的概念:自循环,epsilon-moves,如果到了终结状态还有非自循环字符输入,则判定为rejected。
-
NFA,DFA介绍
DFA:确定的输入对应确定的一个转换,没有epsilon-moves
NFA:一个输入可以对应多个转换,可以有epsilon-moves,所以每一个正确的输入都对应一个状态集。
图:NFA示例
3.正则表达式到NFA
Thompson构造法
4.NFA到DFA
NFA转DFA的算法
先获取起始节点,然后计算它的空闭包,因此把它和它的空闭包作为一个DFA节点,对于每一个输入,先计算它的空闭包,再查看空闭包对应的DFA节点是否已经存在,存在就转换到对应的节点,否则构造新节点。一直计算直到没有新节点需要计算转移集合。