freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

編譯原理課程設(shè)計(jì)--nfa轉(zhuǎn)化為dfa的轉(zhuǎn)換算法及實(shí)現(xiàn)-其他專業(yè)(編輯修改稿)

2025-02-24 02:55 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 以寫作: Ia= ε closure(J), J=move(I,a),其中, J是從 I 中任一狀態(tài)出發(fā)經(jīng)過一條 a 弧到達(dá)的狀態(tài)集合,記為 move(I,a)。 第 6 頁,共 22 頁 s 表示 NFA 的狀態(tài), T 表示 NFA 的狀態(tài)集合, a表 示一個(gè) input symbol ε transition(ε轉(zhuǎn)換 )就是說 input symbol 為ε時(shí)的 transition(轉(zhuǎn)換 ) 操作(operation) 描述 (description) εclosure(s) 從 NFA 的狀態(tài) s出發(fā),只通過ε transition 到達(dá)的 NFA 的狀態(tài)集合 εclosure(T) NFA的集合 T中的狀態(tài) p,只通過ε transition 到達(dá)的 NFA的狀態(tài)集合,再求這些集合的交集。用數(shù)學(xué)表達(dá)就是 {p|p 屬于 εclosure(t) , t屬于 T} move(T,a) NFA的集合,這個(gè)集合在 input symbol 為 a,狀態(tài)為 T中任意狀態(tài)情況下,通過一個(gè)轉(zhuǎn)換得到的集合 例如: 對(duì)于以下狀態(tài)圖中: ε closure({0})={0,1,2,4,7} 在這里設(shè) I={0,1,2,4,7},則 因?yàn)橛?move(I,a)={3,8}=J,所以 Ia= ε closure(J)= ε closure({3,8})={1,2,3,4,6,7,8} 0 1 2 3 5 7 6 8 9 4 9 100 ε ε 第 7 頁,共 22 頁 子集構(gòu)造法 確定化每個(gè) 多重轉(zhuǎn)移,即拆分多值函數(shù)為單位函數(shù) ,具體轉(zhuǎn)換,采用子集構(gòu)造法。 以下面的基于字母表 Σ ={a,b}上的具有ε 轉(zhuǎn)移的非確定有限自動(dòng)機(jī) M為例。 步驟 1: 以 I, Ia、 Ib 等為列做表,其中 I列第一行的內(nèi)容是初態(tài)的ε 閉包所得到的狀態(tài)集合。并以此為 I計(jì)算 Ia、 Ib 等,而 且在所計(jì)算出的 Ia、 Ib 等中若有新的狀態(tài)集產(chǎn)生,就重復(fù)以此新的集合為 I 再此計(jì)算 Ia、 Ib 等,直到在所得的 Ia、 Ib等中不再產(chǎn)生新的狀態(tài)集為止。 I Ia Ib {x,5,1} {5,1,3} {5,1,4} {5,1,3} {5,1,3,2,6,y} {5,1,4} {5,1,4} {5,1,3} {5,1,4,2,6,y} {5,1,3,2,6,y} {5,1,3,2,6,y} {5,1,4,6,y} {5,1,4,2,6,y} {5,1,3,6,y} {5,1,4,2,6,y} {5,1,4,6,y} {5,1,3,6,y} {5,1,4,2,6,y} {5,1,3,6,y} {5,1,3,2,6,y} {5,1,4,6,y} X 5 3 4 6 2 1 9 Y a b b a ε ε ε ε a b a b 第 8 頁,共 22 頁 步驟 2: 在上表中將原 NFA初態(tài)的ε 閉包作為轉(zhuǎn)換后的 DFA 的初態(tài),包含原 NFA終態(tài)的狀態(tài)作為轉(zhuǎn)換后的 DFA 的終態(tài),并進(jìn)行重新編號(hào)得到轉(zhuǎn)換后的 DFA的狀態(tài)轉(zhuǎn)移矩陣如下: a b {x,5,1} 1 {5,1,3} 2 {5,1,4} 3 {5,1,3} 2 {5,1,3,2,6,y}4 {5,1,4} 3 {5,1,4} 3 {5,1,3}2 {5,1,4,2,6,y} 5 {5,1,3,2,6,y} 4 {5,1,3,2,6,y}4 {5,1,4, 6,y} 6 {5,1,4,2,6,y} 5 {5,1,3, 6,y} 7 {5,1,4,2,6,y} 5 {5,1,4, 6,y} 6 {5,1,3, 6,y} 7 {5,1,4,2,6,y} 5 {5,1,3, 6,y} 7 {5,1,3,2,6,y} 4 {5,1,4, 6,y} 6 步驟 3: 畫出轉(zhuǎn)換后的 DFA 的狀態(tài)圖: 1 2 3 7 6 5 4 5 a b b a a a b b a b a a b b 0 0 0 1 1 1 1 第 9 頁,共 22 頁 4 程序?qū)崿F(xiàn) 程序框架圖 數(shù)據(jù)流程圖 NFA 轉(zhuǎn)化為DFA NFA圖結(jié)構(gòu) NFA狀態(tài)表 DFA圖結(jié)構(gòu) 初始化狀態(tài)轉(zhuǎn)換矩陣 狀態(tài)轉(zhuǎn)換操作 第 10 頁,共 22 頁 實(shí)現(xiàn)代碼 (見附錄) 運(yùn)行環(huán)境 ( 1)開發(fā)平臺(tái): Microsoft visual C++ ( 2)運(yùn)行平臺(tái): Windows xp/Windows 2021 程序?qū)崿F(xiàn)結(jié)果 實(shí)現(xiàn) NFA 例題為: NFA M=({S,P,Z},{0,1},f,{s,p},{z}) 開始 NFA 消除空轉(zhuǎn)移 子集構(gòu)造法 NFA狀態(tài)矩陣 DFA 狀態(tài)圖 第 11 頁,共 22 頁 其中 f(s,0)={p} f(z,0)={p} f(p,1)={z} f(z,1)={p} f(s,1)={s,z} 根據(jù)例題輸入 NFA 各邊的信息 得出結(jié)果如下圖 : 第 12 頁,共 22 頁 本程序應(yīng)在 Microsoft Visual C++ 下運(yùn)行。 NFA的確定化是編譯過程中一個(gè)重要的部分,由于本程序的輸入很多,而且有多種格式的輸入,所以輸入時(shí)必須非常小心細(xì)致。對(duì)于狀態(tài)轉(zhuǎn)換矩陣的表示,冒號(hào)前的是新狀態(tài)名,冒號(hào)后的是舊狀態(tài)名。對(duì)于轉(zhuǎn)化后的 DFA 表示, 3個(gè)數(shù)據(jù)分別表示為起始狀態(tài)、接受字符和到達(dá)狀態(tài),例如( 0,1,1)表示為新狀態(tài) 0 接受字符 1 到達(dá)新字符狀態(tài) 1。運(yùn)行結(jié)果因?yàn)檗D(zhuǎn)換字符輸入順序的不同,得出的結(jié)果有可能與筆算得出的順序有所不同,但是結(jié)果依然是正確。 : 通過這次課程實(shí)踐設(shè)計(jì),讓我對(duì)課堂上老師所講到的不確定和確定有限自動(dòng)機(jī)有了更深的理解,理解了它們的構(gòu)造和怎樣相互轉(zhuǎn)化。很好的理解了子集法的演算過程。經(jīng)過多次試驗(yàn),在正確輸入相關(guān)數(shù)據(jù)的情況下,程序能正常運(yùn)行,當(dāng)錯(cuò)誤操作或輸入錯(cuò)誤數(shù)據(jù)時(shí),程序?qū)?yīng)錯(cuò)誤自動(dòng)關(guān)閉。經(jīng)過這次課程設(shè)計(jì) ,也讓
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1