![編譯原理實(shí)驗(yàn)六:DFA最小化_第1頁](http://file1.renrendoc.com/fileroot_temp2/2020-10/5/5200476a-bcfe-4903-ae0c-cd70e7a29dd6/5200476a-bcfe-4903-ae0c-cd70e7a29dd61.gif)
![編譯原理實(shí)驗(yàn)六:DFA最小化_第2頁](http://file1.renrendoc.com/fileroot_temp2/2020-10/5/5200476a-bcfe-4903-ae0c-cd70e7a29dd6/5200476a-bcfe-4903-ae0c-cd70e7a29dd62.gif)
![編譯原理實(shí)驗(yàn)六:DFA最小化_第3頁](http://file1.renrendoc.com/fileroot_temp2/2020-10/5/5200476a-bcfe-4903-ae0c-cd70e7a29dd6/5200476a-bcfe-4903-ae0c-cd70e7a29dd63.gif)
![編譯原理實(shí)驗(yàn)六:DFA最小化_第4頁](http://file1.renrendoc.com/fileroot_temp2/2020-10/5/5200476a-bcfe-4903-ae0c-cd70e7a29dd6/5200476a-bcfe-4903-ae0c-cd70e7a29dd64.gif)
![編譯原理實(shí)驗(yàn)六:DFA最小化_第5頁](http://file1.renrendoc.com/fileroot_temp2/2020-10/5/5200476a-bcfe-4903-ae0c-cd70e7a29dd6/5200476a-bcfe-4903-ae0c-cd70e7a29dd65.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)驗(yàn)六:DFA最小化 一:要求輸入: DFA。輸出: 最小化的DFA。二:實(shí)驗(yàn)?zāi)康?. 熟練掌握DFA及NFA的定義及有關(guān)概念。2. 理解并掌握確定的有窮自動(dòng)機(jī)的最小化等算法。三:實(shí)驗(yàn)原理1.化簡DFA關(guān)鍵在于把它的狀態(tài)集分成一些兩兩互不相交的子集,使得任何兩個(gè)不相交的子集間的狀態(tài)都是可區(qū)分的,而同一個(gè)子集中的任何兩個(gè)狀態(tài)都是等價(jià)的,這樣可以以一個(gè)狀態(tài)作為代表而刪去其他等價(jià)的狀態(tài),然后將無關(guān)狀態(tài)刪去,也就獲得了狀態(tài)數(shù)最小的DFA。2.DFA的化簡算法:(1) 首先將DFA M的狀態(tài)劃分出終止?fàn)顟B(tài)集K1和非終止?fàn)顟B(tài)集K2。KK1K2 由上述定義知,K1和K2是不等價(jià)的。(2) 對(duì)各狀態(tài)集每次按下
2、面的方法進(jìn)一步劃分,直到不再產(chǎn)生新的劃分。設(shè)第i次劃分已將狀態(tài)集劃分為k組,即:KK1(i)K2(i)Kk(i)對(duì)于狀態(tài)集Kj(i)(j=1,2,k)中的各個(gè)狀態(tài)逐個(gè)檢查,設(shè)有兩個(gè)狀態(tài)Kj、 KjKj(i),且對(duì)于輸入符號(hào)a,有:F(Kj,a)KmF(Kj,a)Kn如果Km和Kn屬于同一個(gè)狀態(tài)集合,則將Kj和Kj放到同一集合中,否則將Kj和Kj分為兩個(gè)集合。(3) 重復(fù)第(2)步,直到每一個(gè)集合不能再劃分為止,此時(shí)每個(gè)狀態(tài)集合中的狀態(tài)均是等價(jià)的。(4) 合并等價(jià)狀態(tài),即在等價(jià)狀態(tài)集中取任意一個(gè)狀態(tài)作為代表,刪去其他一切等價(jià)狀態(tài)。(5) 若有無關(guān)狀態(tài),則將其刪去。根據(jù)以上方法就將確定有限自動(dòng)機(jī)進(jìn)
3、行了簡化,而且簡化后的自動(dòng)機(jī)是原自動(dòng)機(jī)的狀態(tài)最少的自動(dòng)機(jī)。四:數(shù)據(jù)結(jié)構(gòu)與算法struct edge string first;/邊的初始結(jié)點(diǎn)string condition;/邊上的條件string last;/邊的終點(diǎn);string move(string collection,char ch,edge *b)/狀態(tài)集合I的a弧轉(zhuǎn)換int divide(edge *b,string change)/分割子集法進(jìn)行DFA的最小化五:出錯(cuò)分析1:在數(shù)據(jù)結(jié)構(gòu)的定義之中,字符與字符串的差別,本次實(shí)驗(yàn)室字符串而不是字符六:實(shí)驗(yàn)結(jié)果與分析七:源代碼#include#includeusing namesp
4、ace std;#define max 100struct edge string first;/邊的初始結(jié)點(diǎn)string condition;/邊上的條件string last;/邊的終點(diǎn);int N;/NFA的邊數(shù)string partmax;/分割子集string move(string collection,char ch,edge *b)/狀態(tài)集合I的a弧轉(zhuǎn)換int i,j;string s=;for(i=0;icollection.length();i+) for(j=0;jN;j+)if(bj.first0=collectioni&bj.condition0=ch) s=s+bj
5、.last;if(s=)return &;else return s;bool isexist(string s,string d)/判斷子串是否存在在某一集合if(d!=&0=d.find(s)&d.find(s)=d.length()-1)return 1;else return 0;int divide(edge *b,string change)/分割子集法進(jìn)行DFA的最小化int x,m,flag=2,flag0,i,j;string ss,part0max; flag0=flag;for(x=0;xchange.length();x+)for(m=0;mflag0;m+)for(i
6、=0;ipartm.length();i+)ss=move(partm.substr(i,1),changex,b);for(j=0;jflag;j+)if(isexist(ss,partj)part0j=part0j+partm.substr(i,1); if(ss=&)part0flag=part0flag+partm.substr(i,1);break;for(j=0;j=flag;j+)if(part0j!=&part0j!=partm)partflag+=part0j;part0j=;partm=;else part0j=;flag0=flag;return flag;void ma
7、in() int i,j,flag,x; string Condition;/邊上的條件 string ss; edge *b=new edgemax; cout.編譯原理實(shí)驗(yàn)六:DFA最小化.endl; cout請(qǐng)輸入DFA各邊信息:起點(diǎn) 條件(空用&表示) 終點(diǎn) 并以輸入#結(jié)束。endl; for(i=0;ibi.first; if(bi.first=#)break; else cinbi.conditionbi.last; N=i; cout請(qǐng)輸入該DFA的終態(tài)集合:part1; cout請(qǐng)輸入該DFA的非終態(tài)集合:part0; cout請(qǐng)輸入此DFA狀態(tài)中的邊上的條件:Conditio
8、n; flag=divide(b,Condition); coutDFA最小化劃分的子集如下:endl; for(i=0;iflag;i+) if(parti!=)coutpartiendl; cout用狀態(tài)A,B,C等代替子集:; for(i=0;iflag;i+) if(parti!=)coutparti,; coutendl則DFA最小化后的各邊信息如下:endl; char lettersmax; char letter=A; for(i=0;iflag;i+) if(parti!=) lettersi=letter; +letter; for(i=0;iflag;i+) for(j=0;jCondition.length();j+) ss=move(parti,Conditionj,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Mumeose-K-生命科學(xué)試劑-MCE-2774
- 5-Fluoro-THJ-生命科學(xué)試劑-MCE-6389
- 2025年度環(huán)保型空調(diào)拆卸作業(yè)安全協(xié)議書
- 2025年度文化創(chuàng)意產(chǎn)業(yè)居間代理協(xié)議
- 二零二五年度父母出資購房子女房產(chǎn)份額分配協(xié)議
- 2025年度無房產(chǎn)證房屋買賣風(fēng)險(xiǎn)評(píng)估合同
- 二零二五年度砍樹承包合同及林業(yè)資源管理實(shí)施協(xié)議
- 二零二五年度企業(yè)食堂檔口租賃合同與員工餐飲補(bǔ)貼協(xié)議
- 高標(biāo)準(zhǔn)實(shí)驗(yàn)環(huán)境下的安全防護(hù)措施探討
- 臨時(shí)用電安全合同協(xié)議
- 行政單位閑置資產(chǎn)清查盤活工作總結(jié)
- 設(shè)計(jì)單位-質(zhì)量管理體系
- 2024版《供電營業(yè)規(guī)則》學(xué)習(xí)考試題庫500題(含答案)
- 福建省醫(yī)院大全
- GB/T 16659-2024煤中汞的測(cè)定方法
- 閃蒸罐計(jì)算完整版本
- (高清版)DZT 0073-2016 電阻率剖面法技術(shù)規(guī)程
- 完整2024年開工第一課課件
- 貨運(yùn)車輛駕駛員安全培訓(xùn)內(nèi)容資料完整
- 高一學(xué)期述職報(bào)告
- ICU患者的體位轉(zhuǎn)換與床旁運(yùn)動(dòng)訓(xùn)練
評(píng)論
0/150
提交評(píng)論