編譯原理-NFA轉化成DFA


1.假定NFA    M=<S,∑,f,S0,F>    對M的狀態轉換圖進行以下改造:

①引進新的初態結點X和終態結點Y,    X,Y∈S,    從X到S0中的任意結點連一條ε箭弧,從F中任意結點到Y連一條ε箭弧。(解決初態的唯一性)

②引入新狀態對M的狀態轉換圖進行進一步的替換(簡化弧上的標記)

2.NFA確定化:子集法(解決弧和轉換問題)

設I是S的一個子集

①J為I中的某個狀態經過一條a弧而到達的集合

②ε-closure(I):I∪{s'|從s∈I出發經過任意條ε弧能到達s'}

③Ia=ε-closure(J)

例:

I=ε-closure({1})={1,2}

J={5,4,3}

Ia=ε-closure({5,4,3})={5,4,3,6,2,7,8}

3.狀態集轉換表:

設只含兩個字符a,b

①置第一行第一列為ε-closure({X}),求出Ia,Ib

②檢查Ia,Ib看其是否已出現在表中的第一列,把未曾出現的填入后面空行的第一列,再求出Ia,Ib

③重復上述過程,直到所有2,3列子集全部出現在第一列為止

例:

化簡和確定化的狀態轉換圖:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM