999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

DFA最小化算法的探討與改進

2008-12-31 00:00:00熊德蘭田勝利
計算機教育 2008年9期

文章編號:1672-5913(2008)09-0071-02

摘要:很多編譯原理教材介紹的DFA最小化算法是“分割法”,但該算法存在一定的問題,本文結合實例分析該算法的漏洞所在,并提出了改進的算法。

關鍵詞:編譯原理;DFA;分割法

中圖分類號:G642

文獻標識碼:B

引言

“編譯原理”是計算機專業的一門綜合性較強的專業課程,主要介紹如何將高級語言翻譯為低級語言的編譯程序的工作原理和實現技術。該課程建立在高級語言或匯編語言基礎上,綜合運用編譯理論及數據結構、離散數學等前修課程的相關知識,具有很強的理論性和嚴密的邏輯性,可以使學生真正了解計算機的工作過程,對提高學生計算機軟件素質具有很大作用。本文結合教學工作實際,針對詞法分析中確定的有窮自動機(DFA)的最小化算法和具體的做法進行深入的探討,并對現有算法進行了合理的改進。

1DFA及DFA的化簡

編譯程序一般包括詞法分析、語法分析、語義分析、中間代碼生成、目標代碼生成、代碼優化、表格管理和出錯處理等成分。詞法分析是編譯程序要做的首要工作,它接收輸入的源程序符號串,按照構詞規則分割為一個個的單詞符號并輸出。

有窮自動機是一種能進行運算和自我控制的裝置,能準確識別單詞符號。因此,可以通過構造有窮自動機來實現詞法分析程序的自動構造。有窮自動機分為確定的有窮自動機DFA和不確定的有窮自動機NFA兩種。

定義1DFA 一個確定的有窮自動機M是一個五元組,M=( K,Σ, f , S , Z),其中:K是一個有窮集,其元素稱為狀態;Σ是一個有窮字母表,其元素稱為輸入符號;S∈K,稱為初態;ZIgrave; K,是終態集;f是轉換函數,是K×Σ→K上的映射,f(ki,a)=kj,(ki∈K,kj∈K)表示狀態ki,輸入符為a時,轉換為狀態kj。

定義2無用狀態從自動機的開始狀態出發,任何輸入串也不能到達的那個狀態;或者從這個狀態沒有通路到達終態的狀態。

定義3等價狀態如果說兩個狀態s 和t 是等價的, 應滿足如下條件:(a) 一致性條件:s 和t 必須同時為終態或為非終態;(b) 蔓延性條件:對于所有輸入符號,狀態s 和t 必須轉換到等價的狀態里。

一個DFAM可以通過消除無用狀態和合并等價狀態而轉化為一個最小化的與之等價的DFAM’。該過程稱為DFA的化簡。

2“分割法”化簡DFA

對一個DFAM最少化的基本思想是:把M的狀態集劃分為一些不相交的子集,使得任何兩個不同子集中的狀態是(可區別)不等價的,而同一子集的任何兩個狀態是等價的。具體算法過程描述如下:

(1) 把S劃分為終態和非終態兩個子集,形成初始劃分P;

(2) 假定P已含m個子集,記為P= { I1 , I2 , #8943;, Im},則對每一個Ii 和每一個a ∈Σ考察: I i a = f ( I i , a) ,如I i a 中的狀態分別落于P中P 個不同的子集,則子集I i 將被P 個更小的狀態子集I i1 , I i2 , #8943;, I i p 所細分。令細分后所得的狀態集合為Pnew;

(3) 重復步驟(2 )直到直至所含的子集數不再增加為止,Pnew =P;

(4) 對P中的每個子集I i ,若該子集包含原有的初態,則此代表狀態便為最小化后M 的初態;該子集包含原有的終態,則此狀態便為最小化后的終態;

(5) 刪去狀態集中的所有死狀態,即得到化簡后的M’。

下面我們通過一個例子來看一下該算法中存在的問題。

例1假定DFA M 如下圖1所示。

使用上述算法進行化簡M:初始劃分P0={{0},{1,2}},此時P0含有兩個子集I1和I2,I1不可再分,由于I2a=I2b=2∈I2,沒有新集合增加,故可以得到化簡后的M’,如圖2所示。

圖1 DFA M

圖2 DFA M’

化簡后的M’與原來的M是否等價呢?顯然,對于符號串ba,原來的DFAM不能識別,而化簡后的M’能夠識別,這說明二者并不等價。

3DFA最小化算法的改進

通過分析上述化簡過程,我們可以找出算法問題所在。算法步驟2中涉及到集合運算,而忽略了空集對于算法的影響。根據定義3,要判斷兩個狀態是否等價必須對于所有輸入符號檢查一遍,看它們分別轉到等價的狀態中,如上面例1中狀態1不能接受a而狀態2能接受a,顯然二者不等價。而在算法中,把狀態子集{1,2}在接受a后還是轉到它自身,所以就出現錯誤了。

某個狀態下不能接受某個輸入符號即為出錯,故上述算法沒有考慮到出錯情況。因此我們可以對上述算法進行如下改進:

(1) 增加一個出錯狀態error,把S劃分為終態、非終態、出錯三個子集,形成初始劃分P;

(2) 對于P中每個子集Ii ,考察每一個a ∈Σ,I i a = f ( I i , a) 特別地如果Ii中某個狀態Iij不接受a,則另f(Iij,a)=error。如I i a 中的狀態分別落于P中P 個不同的子集,則子集I i 將被P 個更小的狀態子集I i1 , I i2 , #8943;, I i p 所細分。令細分后所得的狀態集合為Pnew;

(5) 刪去狀態集中的所有死狀態和出錯狀態,即得到化簡后的M’。

步驟(3)、(4)與原算法相同。使用改進后的分割算法對例1的DFAM重新進行化簡,顯然化簡得到的M’與原來的M相同,即其本身就是最簡的DFA。

4小結

有窮自動機是詞法分析器的基礎,也是編譯原理課程中講授的重點和難點之一。本文使用簡單的實例分析了目前通用教材中“分割法”進行DFA最小化的問題和漏洞,并提出了一種切實可行的改進算法。本算法在教學和多次實例中證明是可行的,這對于從事該課程教學的教師將是很有裨益的。

參考文獻

[1] 張素琴,呂映芝. 編譯原理(第2版)[M]. 北京:清華大學出版社,2005.

[2] 陳應明,馬俊杰. 編譯原理[M]. 北京:冶金工業出版社,2005.

[3] 何炎祥. 編譯原理[M]. 北京:高等教育出版社,2004.

[4] 胡元義. 編譯原理教程[M]. 西安電子科技大學出版社,2006.

[5] 陳火旺,劉春林. 程序設計語言編譯原理(第3版)[M]. 長沙:國防科技大學出版社,2006.

主站蜘蛛池模板: 欧洲日本亚洲中文字幕| 丁香五月激情图片| 成人自拍视频在线观看| 国产亚洲精品97AA片在线播放| 国产超碰一区二区三区| 亚洲男人在线| 国产乱子伦视频在线播放| 手机在线免费不卡一区二| 欧美午夜在线观看| 久久婷婷六月| 青青久视频| 都市激情亚洲综合久久| 1级黄色毛片| 蜜桃视频一区二区| 国产高清精品在线91| 青青草久久伊人| 老色鬼久久亚洲AV综合| 久久国产精品嫖妓| 91精品国产情侣高潮露脸| 搞黄网站免费观看| 亚洲国产第一区二区香蕉| 国产人免费人成免费视频| 欧美一级一级做性视频| 国产成人精品午夜视频'| 日韩毛片基地| 中文字幕2区| 99久久精品国产精品亚洲| 欧美一区福利| 色综合天天娱乐综合网| 国产爽妇精品| 日本人妻一区二区三区不卡影院| 国产精品毛片一区| 欧美劲爆第一页| 成年A级毛片| 天天操天天噜| a天堂视频| 国产成人亚洲精品色欲AV| 一本久道久综合久久鬼色| av午夜福利一片免费看| av在线无码浏览| 国产成人精品优优av| 91视频青青草| 黄色网站在线观看无码| 又黄又湿又爽的视频| 久久黄色免费电影| 伊人久久久久久久久久| 国产在线小视频| 亚洲αv毛片| 精品1区2区3区| 欧美区在线播放| 免费看的一级毛片| 精品国产免费观看| 国产9191精品免费观看| 亚洲成A人V欧美综合天堂| 欧美日韩v| av天堂最新版在线| 毛片免费视频| 成人福利在线免费观看| 91精品小视频| 毛片手机在线看| 四虎成人免费毛片| 欧美激情视频在线观看一区| 精品国产美女福到在线不卡f| 国产微拍一区| 国产午夜无码片在线观看网站 | 国产无码性爱一区二区三区| 国产成人综合日韩精品无码不卡 | 免费人成视网站在线不卡| 国产精品三区四区| 久久这里只精品国产99热8| 啪啪免费视频一区二区| 免费中文字幕在在线不卡| 久久黄色免费电影| 久久久久久午夜精品| 国产亚洲高清在线精品99| 中文天堂在线视频| 国产成人综合在线观看| 国产精品99r8在线观看| 国产不卡一级毛片视频| 日韩精品久久无码中文字幕色欲| 久久人妻系列无码一区| 午夜老司机永久免费看片|