一个正规式r与一个有限自动机M等价, L(r)=L(M)算法
FA ->正规式,对任何FA M,都存在一个正规式r,使得L(r)=L(M)。3d
正规式 -> FA, 对任何正规式r,都存在一个FA M,使得L(M)=L(r)blog
对转换图概念拓广,令每条弧可用一个正规式做标记,对Σ上任一NFA M,都存在一个Σ上的正规式r,使得L(r)=L(M)程序
假定NFA M=<S, Σ, δ, S 0 , F>,咱们对M的状态转换图进行如下改造:im
在M的转换图上加进两个状态X和Y,从X用ε弧链接到M的全部初态结点,从M的全部终态结点用ε弧链接到Y,从而造成一个新的NFA,记为M’,它只有一个初态X和一个终态Y,显然L(M)=L(M’)。
d3
而后,反复使用下面的三条规则,逐步消去结点,直到只剩下X和Y为止。img
最后,X到Y的弧上标记的正规式即为所构造的正规式rco
显然L(r)=L(M’)=L(M),得证: 对Σ上任一NFA M,都存在一个Σ上的正规式r,使得L(r)=L(M)字符
定理:对任何正规式r,都存在一个FA M,使得L(M)=L(r)工作
定理: 对于Σ上的正规式r,都存在一个NFA M,使L(M)=L(r),而且M只有一个初态和一个终态,并且没有从终态出发的箭弧
对给定正规式r中的运算符数目进行概括:
若r具备零个运算符,则r=ε或r=φ或r=a,其中a∈Σ
针对上述3类正规式r,分别按照下图构造NFAM,M只有一个初态和一个终态,并且没有从终态出发的箭弧,并且使L(M)和对应的L(r)相等。
假设对于运算符数目少于k(k≥1)的正规式成立
当r中含有k个运算符时,r有三种情形:
上述过程实质上是一个将正规表达式转换为有限自动机的算法
构造Σ上的NFA M’ 使得 L(r)=L(M’),首先,把r表示成
按下面的三条规则对r进行分裂
逐步把这个图转变为每条弧只标记为Σ上的一个字符或ε,最后获得一个NFA M’,显然L(M’)=L(r)
LEX的工做过程