導航:首頁 > 源碼編譯 > dfa最小化怎麼劃分演算法

dfa最小化怎麼劃分演算法

發布時間:2024-12-13 08:36:01

㈠ dfa的最小化如何化簡的步驟

下面具體介紹DFA的化簡演算法
(1) 首先將DFA M的狀態劃分出終止狀態集K1和非終止狀態集K2。
K=K1∪K2
由上述定義知,K1和K2是不等價的。
(2) 對各狀態集每次按下面的方法進一步劃分,直到不再產生新的劃分。
設第i次劃分已將狀態集劃分為k組,即:
K=K1(i)∪K2(i)∪…∪Kk(i)
對於狀態集Kj(i)(j=1,2,…,k)中的各個狀態逐個檢查,設有兩個狀態Kj』、 Kj』』∈Kj(i),且對於輸入符號a,有:
F(Kj',a)=Km
F(Kj'',a)=Kn
如果Km和Kn屬於同一個狀態集合,則將Kj』和Kj』』放到同一集合中,否則將Kj』和Kj』』分為兩個集合。
(3) 重復第(2)步,直到每一個集合不能再劃分為止,此時每個狀態集合中的狀態均是等價的。
(4) 合並等價狀態,即在等價狀態集中取任意一個狀態作為代表,刪去其他一切等價狀態。
(5) 若有無關狀態,則將其刪去。
根據以上方法就將確定有限自動機進行了簡化,而且簡化後的自動機是原自動機的狀態最少的自動機。

㈡ DFA的最小化演算法

首先劃分終態集和非終態集,之後不斷進行劃分,直到不再發生變化。
每輪劃分對所有子集進行。對一個子集的劃分中,若每個輸入符號都能把狀態轉換到等價的狀態,則兩個狀態等價。

劃分完成後,從每個子集選出一個代表,若DFA中存在兩個子集內狀態之間的轉換,則MFA中兩個子集的代表之間也存在對應的轉換。簡便方法:對每個子集刪去除代表以外的狀態,並把指向它們的箭弧改為指向代表。
MFA的初態是含有DFA初態的子集的代表。MFA的終態集是DFA終態集劃分出來子集的代表。
最後,從MFA中刪除從初態無法到達的狀態和死狀態(只有入射弧或指向自身的出射弧的非終止狀態)。

去除不可達狀態。建表,行列為不同狀態,未標記的格子行列狀態等價。首先標記行列一個非終止狀態一個終止狀態的格子。對未標記的格子(q,q'),若存在一個輸入符號a,使q經a到達狀態和q'經a到達狀態不等價,則標記(q,q')。重復直到表格不再變化。

對於所有未標記的(q,q'),把與q'有關的轉換都改到q上,刪除q'。

編譯原理中,在DFA的最小化問題。

是要分到兩個不同集合里的

但是我建議 在極小化時先引入「死狀態」
如果一個DFA的轉換函數不是全函數,則要引入一個「死狀態」sd,sd對所有輸入符號都轉換到sd本身。
這樣你做的時候就會看的很明白

閱讀全文

與dfa最小化怎麼劃分演算法相關的資料

熱點內容
php登陸次數 瀏覽:742
python字元轉成數字 瀏覽:822
海川用的是什麼伺服器 瀏覽:374
口才是練出來的pdf 瀏覽:458
雲伺服器哪個公司性價比高 瀏覽:515
源碼論壇打包 瀏覽:556
php怎麼做成word 瀏覽:690
python批量生成密鑰 瀏覽:490
程序員要不要考社區人員 瀏覽:150
app的錢怎麼充q幣 瀏覽:813
android銀行卡識別 瀏覽:751
怎麼在app投放廣告 瀏覽:11
手機文件管理怎麼看app名稱 瀏覽:192
程序員學數學哪本書最全 瀏覽:784
macd實戰選股公式源碼 瀏覽:644
加密晶元的計算方法 瀏覽:191
手機存儲為什麼找不到微信文件夾 瀏覽:697
msf埠遷移命令 瀏覽:880
工商app積分怎麼查詢 瀏覽:146
鐵路app怎麼買火車票 瀏覽:311