一個正規式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的工做過程