HelloWorld 善戰者,求之于勢,不責于人;故能擇人而任勢。

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

            BlogJava :: 首頁 ::  :: 聯系 ::  :: 管理 ::
            167 隨筆 :: 1 文章 :: 40 評論 :: 0 Trackbacks

          NFA構造DFA的子集算法

          輸入:一個NFA N

          輸出:一個DFA D

          方法:為D構造一個轉換表Dtran。D的每一個狀態是一組NFA狀態的集合。以下是一些構造需要用到的函數。

          操作

          描述

          ε-closure(s)

          能夠從NFA的狀態s開始只通過ε轉換到達的NFA狀態集合

          ε-closure(T)

          Us?Tε-closure(s)

          move(T,a)

          能夠從T中某個狀態S出發通過標號為a的轉換到達的NFA狀態的集合

          Ø 構造D的狀態集合DStates和D的轉換函數Dtran

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

          while (DStates中存在未被標識的狀態T) {

          標識T;

          for(每個輸入符號a) {

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

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

          Dtran[T,a] = U;

          }

          }

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

          將T的所有狀態壓入堆棧中;

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

          while (堆棧非空) {

          將棧頂元素t彈出;

          for(每個滿足如下條件的u:從t出發有一個標號為ε的轉換到達狀態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 閱讀(1076) 評論(1)  編輯  收藏 所屬分類: 數據結構和算法編譯原理

          評論

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


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


          網站導航:
           
          主站蜘蛛池模板: 城固县| 梁平县| 根河市| 吴堡县| 广丰县| 和顺县| 临高县| 阿拉尔市| 东莞市| 辛集市| 昆山市| 海口市| 玛多县| 铜陵市| 禹州市| 眉山市| 昭觉县| 金堂县| 喜德县| 齐河县| 永嘉县| 汉沽区| 红河县| 宜春市| 浮山县| 锦屏县| 通山县| 通化市| 习水县| 牡丹江市| 宿松县| 阆中市| 调兵山市| 于田县| 双城市| 公安县| 镇康县| 沙河市| 大庆市| 汤阴县| 广东省|