chapter3:finite-state automation. 原书中第三版中的这一章还没写完,所以是看的图书馆借来的第二版,并结合宗成庆老师的统计自然语言处理来看的。
有限状态自动机 finite-state automation, FSA
前面一章节中的正则表达式只是一种用于文本搜索的方便的元语言,它是描述有限状态机的一种方法。
任何正则表达式又可以用有限状态机来实现(除了使用存储特性的那些正则表达式)。比如上一章中用于描述羊的语言的正则表达式: /baa+!/ 就可以表示为这样的有限自动机:
FSA可以用来识别(或接受)符号串。接受方式如下:把输入想象成一个长长的带子(tape),带子上的一个单元格(cell)可以写一个符号:
怎么理解这个输入带子和自动机呢?就是当输入带上的字母和自动机中离开当前状态的弧相匹配时,就穿过这个弧,进入到自动机中的下一个状态和带子上的下一个符号。比如上图中初始状态 q0 q 0 只有遇到b时才会匹配成功而进入下一个状态和输入符号,所以上图中的自动机不能接受输入。对图2.10中 q3 q 3 状态,他可以匹配 a或!.
我们可以用状态转移表(state-transition table)来表示自动机。状态转移表可以表示初始状态、接收状态和符号在状态之间的转移情况。
一个有限自动机可以用下面5个参数来定义:
其中Q表示N种状态的集合, Σ