天天看點

DFA最小化執行個體

原始DFA如下圖所示

DFA最小化執行個體

最小化的定義:

1.沒有多餘的狀态(死狀态);

2.沒有兩個狀态是互相等價的;

兩個狀态等價的含義:

1.相容性(一緻性)——同是終态或同是非終态;

2.傳播性(蔓延性)——從s出發讀入某個a和從t出發經過某個a并且經過某個b到達的狀态等價。

令M為DFA中所有狀态的集合。

1.開始做粗略劃分,将狀态集M的狀态劃分為,

k1 = {C, D, E, F}

k2 =

{S, A, B}

2.考察k1是否可分,由下面的轉換關系k2可以分為{S, B}和{A}。

A -> a -> k1

S

-> a -> k2

B -> a -> k2

3.對于{S,

B}有下面的轉換關系,可以劃分為{S}和{B}

B -> b -> k1

S -> b ->

k2

4.考察k1,對于經由a和b,到達的狀态都是屬于k1,是以不可再分。

對于是否可以再分,有一個形式化的定義,

  任意的c屬于字元集合Σ,si經由c到達sx,以及sj經由c到達sy,那麼sx和sy均屬于的狀态集合pt。如果有任何狀态sk屬于pt,dk經由c到達dz,dz不屬于pt,那麼dk不能再繼續留在pt中。

5.狀态集k1采用狀态C來替代,當然可以使用k1中其他狀态來替代,得到如下的最小DFA,

DFA最小化執行個體

參考:

http://leaver.me/archives/369.html