HelloWorld 善戰(zhàn)者,求之于勢,不責(zé)于人;故能擇人而任勢。

          知止而后有定,定而后能靜,靜而后能安,安而后能慮,慮而后能得。物有本末,事有終始。知所先后,則近道矣。

            BlogJava :: 首頁 ::  :: 聯(lián)系 ::  :: 管理 ::
            167 隨筆 :: 1 文章 :: 40 評論 :: 0 Trackbacks

          NFA構(gòu)造DFA的子集算法

          輸入:一個NFA N

          輸出:一個DFA D

          方法:為D構(gòu)造一個轉(zhuǎn)換表Dtran。D的每一個狀態(tài)是一組NFA狀態(tài)的集合。以下是一些構(gòu)造需要用到的函數(shù)。

          操作

          描述

          ε-closure(s)

          能夠從NFA的狀態(tài)s開始只通過ε轉(zhuǎn)換到達(dá)的NFA狀態(tài)集合

          ε-closure(T)

          Us?Tε-closure(s)

          move(T,a)

          能夠從T中某個狀態(tài)S出發(fā)通過標(biāo)號為a的轉(zhuǎn)換到達(dá)的NFA狀態(tài)的集合

          Ø 構(gòu)造D的狀態(tài)集合DStates和D的轉(zhuǎn)換函數(shù)Dtran

          一開始,ε-closure(s)是DStates中的唯一狀態(tài),且沒有被標(biāo)記;

          while (DStates中存在未被標(biāo)識的狀態(tài)T) {

          標(biāo)識T;

          for(每個輸入符號a) {

          U = ε-closure(move(T,a));

          if(U不再DStats中) 將U加入DStates,且沒有標(biāo)識;

          Dtran[T,a] = U;

          }

          }

          Ø 計(jì)算ε-closure(T)的算法

          將T的所有狀態(tài)壓入堆棧中;

          ε-closure(T)的內(nèi)容初始化為T;

          while (堆棧非空) {

          將棧頂元素t彈出;

          for(每個滿足如下條件的u:從t出發(fā)有一個標(biāo)號為ε的轉(zhuǎn)換到達(dá)狀態(tài)u)

          if(u不再ε-closure(T)中){

          將u加入到ε-closure(T)中;

          將u壓入棧中;

          }

          }

          Ø 附模擬一個NFA

          S = ε-closure(s0);

          c = nextChar();

          while(c != eof) {

          S = ε-closure(move(S,c));

          c = nextChar();

          }

          if(S ∩ F != ø) return true;

          else return false;




          </script>

          posted on 2010-03-21 16:17 helloworld2008 閱讀(1070) 評論(1)  編輯  收藏 所屬分類: 數(shù)據(jù)結(jié)構(gòu)和算法編譯原理

          評論

          # re: (#BYYL-3-99) NFA構(gòu)造DFA的子集算法 2012-05-17 15:28 腦血栓治療
          很好的東西,值得學(xué)習(xí)。
            回復(fù)  更多評論
            


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 双江| 天柱县| 垣曲县| 益阳市| 鸡西市| 南川市| 普兰县| 永川市| 武强县| 罗江县| 博湖县| 鲁山县| 富锦市| 曲靖市| 将乐县| 湘乡市| 巴青县| 页游| 吐鲁番市| 延安市| 搜索| 鹰潭市| 长丰县| 吉隆县| 松滋市| 惠州市| 横峰县| 乡城县| 泾阳县| 鲁山县| 平度市| 彰化县| 安图县| 桂平市| 贵南县| 扎兰屯市| 邢台县| 安吉县| 高淳县| 兴化市| 镇宁|