青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

woaidongmao

文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
數據加載中……

NFA DFA Regex

要深入了解正則表達式,必須首先理解有窮自動機。

有窮自動機(Finite Automate)是用來模擬實物系統的數學模型,它包括如下五個部分:

  • 有窮狀態集States
  • 輸入字符集Input symbols
  • 轉移函數Transitions
  • 起始狀態Start state
  • 接受狀態Accepting state(s)


下圖為一臺有窮自動機
clip_image001

可以看到,該自動機包含四個狀態q0, q1, q2, q3,兩個輸入字符a, b,轉移函數如圖所示,起始狀態為q0,接受狀態為q3

有窮自動機,按照轉移函數的不同,又可分為確定型有窮自動機(Determinism Finite Automate, DFA),與非確定型有窮自動機(Non-determinism Finite Automate, NFA)。
非確定有窮自動機容許轉移函數不確定,換句話說,對任意狀態,輸入任意一個字符,可以轉移到0個,1個或者多個狀態。
下圖是一臺非確定有窮自動機,可以看到,對狀態q0輸入字符a,既可以轉移到q0,也可以轉移到q1,這就是非確定的意義所在。
clip_image002


對某個自動機來說,如果從起始狀態,接受一系列輸入字符,可以轉移到接受狀態,即認為這一系列字符可以被自動機接受。

如果兩臺自動機能夠接受的輸入字符串(或者叫做正則語言”Regular Language)完全相同,則這兩臺自動機是等價的。
可以證明,對于每一個非確定有窮自動機,都存在與之等價的確定型有窮自動機(證明略)。

正則表達式就是建立在自動機的理論基礎上的:用戶寫完正則表達式之后,正則引擎會按照這個表達式構建相應的自動機(可能是NFA,也可能是DFA,但它們必定是等價的),若輸入一串文本之后,自動機抵達了接受狀態,則這串文本可以匹配用戶指定的正則表達式。

下面是同一個正則表達式 a|ab 對應的NFADFA

NFA

clip_image003

DFA

clip_image004



Mastering Regular Expression中,Friedl首先分析了NFADFA的區別,DFA比較快,但不提供Backtrack(回溯)功能,NFA比較慢,但提供了Backtrack功能。
在分析兩種引擎的匹配過程時,Friedl指出,NFA是基于表達式的(Regex-Directed),而DFA是基于文本的(Text-Directed)。
舉例來說,對于正則表達式 to(nite|knight|night)NFA在匹配最開始兩個字符(to)之后,剩下的三個組件(component)是 nite, knight night,于是正則引擎會依次嘗試這三個選擇分支(每次嘗試一個);而DFA在匹配最開始兩個字符之后,會將剩下的三個選擇拆分作字符,并行嘗試,也就是說,匹配 to 之后,先匹配 k 或者 n ,如果 k 不能匹配,則放棄 knigth 所在的分支,再匹配 i ,再匹配 t g ……這樣繼續下去,直到匹配結束。

不幸的是,Friedl對匹配過程的分析,是完全錯誤的——引擎的不同,是指構建的自動機的不同,而不是匹配算法的不同!
DFA
引擎在任意時刻必定處于某個確定的狀態,而NFA引擎可能處于一組狀態之中的任何一個,所以,NFA引擎必須記錄所有的可能路徑(trace multiple possible routes through the NFA),NFA之所以能夠提供Backtrack的功能,原因就在這里。
傳統的NFA匹配算法是帶回溯的深度優先搜索(backtracking depth-first search,就是上文所說的Regex-Based過程),而新的PCRE算法提供了效率更高的廣度優先搜索,可以同時保持所有可能的NFA狀態(請參考http://www.cl.cam.ac.uk/Teaching/current/RLFA/,尤其是Lecture Notessection 2.2)。

Friedl
的錯誤就在這里,他混淆了應用PCRE算法的NFADFA的匹配過程。
需要指出的是,即使應用PCRE算法,NFA的速度仍然低于DFA,這是由NFA需要同時保存多種可能的性質決定的。從理論上說,如果我們不需要應用 Backtrack,完全可以從NFA構造出等價的DFA,再進行匹配,這樣能大大提高速度——代價是,DFA需要更多的空間。

posted on 2009-09-29 13:56 肥仔 閱讀(2711) 評論(3)  編輯 收藏 引用 所屬分類: 狀態機 & 自動機 & 形式語言

評論

# re: NFA DFA Regex  回復  更多評論   

可以參考我的cppblog主頁上的兩篇關于如何開發一個正則表達式引擎的文章。我不僅講了必要的理論知識,連實現的時候大多數情況下會遇到的問題也講了。
2009-09-29 15:43 | 陳梓瀚(vczh)

# re: NFA DFA Regex  回復  更多評論   

因為現代化的regex實際上是不能用DFA來實現的。考慮一個例子:
(<abc>\d+)|(<def>\d*)
2009-09-29 15:45 | 陳梓瀚(vczh)

# re: NFA DFA Regex  回復  更多評論   

請問一下,你是用什么工具繪圖的?
2011-12-22 23:33 | YorkTsai
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            一区二区三区国产在线| 老鸭窝毛片一区二区三区| 欧美视频二区36p| 欧美一区二区高清| 欧美大片在线观看一区二区| 欧美在现视频| 亚洲天堂男人| 亚洲视频高清| 一本久道久久综合中文字幕| 亚洲美女免费视频| 亚洲日本欧美| 亚洲精品日本| 亚洲精品一区在线观看| 在线日韩视频| 亚洲精品偷拍| 亚洲高清一区二区三区| 激情成人在线视频| 韩国v欧美v日本v亚洲v| 一区二区三区中文在线观看| 伊人久久男人天堂| 国产在线视频欧美| 狠狠爱www人成狠狠爱综合网| 国产视频在线观看一区二区三区 | 亚洲电影免费在线| 麻豆精品91| 亚洲成在人线av| 亚洲视频免费看| 久久99在线观看| 欧美a级一区| 国产精品播放| 伊人精品在线| 亚洲图片欧美日产| 亚洲欧洲日本mm| 一区二区三区偷拍| 久久精品中文| 亚洲日韩欧美视频一区| 亚洲一区免费看| 噜噜噜躁狠狠躁狠狠精品视频| 午夜亚洲性色福利视频| 久久久久久有精品国产| 午夜视频久久久| 久久人体大胆视频| 性久久久久久久久久久久| 久久精品夜夜夜夜久久| 久久精品国产精品亚洲| 欧美va亚洲va日韩∨a综合色| 免费在线成人| 亚洲精品乱码久久久久久按摩观| 亚洲高清在线观看一区| 亚洲乱码国产乱码精品精| 亚洲免费一区二区| 免费观看日韩| 欧美日韩色婷婷| 悠悠资源网久久精品| 亚洲一级黄色| 亚洲第一页中文字幕| 小黄鸭精品aⅴ导航网站入口| 欧美久久视频| 国产婷婷97碰碰久久人人蜜臀| 日韩视频一区二区| 葵司免费一区二区三区四区五区| 亚洲午夜黄色| 欧美日韩一区三区| 亚洲毛片一区| 亚洲大片av| 久久夜色精品一区| 国产一区二区三区免费在线观看| 亚洲先锋成人| 亚洲免费播放| 欧美成熟视频| 亚洲黄色成人网| 久久久精品999| 91久久精品国产91久久| 久久综合国产精品台湾中文娱乐网| 欧美日韩亚洲高清一区二区| 国产主播一区二区三区| 亚洲在线观看免费| 91久久精品国产91性色| 蜜臀av国产精品久久久久| 狠狠色香婷婷久久亚洲精品| 香蕉av777xxx色综合一区| 一区二区欧美在线观看| 欧美fxxxxxx另类| 国产精品一区二区久久久久| 亚洲一级黄色| 亚洲欧美日韩国产综合在线| 国产精品专区h在线观看| 亚洲欧美日韩一区二区三区在线| 一区二区日韩伦理片| 国产精品久久福利| 国产真实乱子伦精品视频| 久久亚洲一区| 久久综合综合久久综合| 亚洲毛片在线看| 99re66热这里只有精品3直播| 欧美日韩第一区日日骚| 99在线|亚洲一区二区| 一本久久青青| 国产拍揄自揄精品视频麻豆| 久久久久亚洲综合| 久久手机免费观看| 亚洲欧美国产制服动漫| 欧美日本久久| 在线视频精品一| 中国成人在线视频| 欧美日精品一区视频| 一区二区三区日韩在线观看| 欧美风情在线| 欧美成人黑人xx视频免费观看| 国产精品久久久久久户外露出| 在线一区二区视频| 亚洲在线观看视频网站| 国产日韩欧美高清免费| 香蕉乱码成人久久天堂爱免费 | 免费人成网站在线观看欧美高清| 免费不卡在线观看av| 99视频精品在线| 亚洲欧美国产一区二区三区| 亚洲电影毛片| 午夜精品久久| 亚洲精品中文字幕在线观看| 亚洲一区二区三区视频播放| **性色生活片久久毛片| 亚洲一二三区在线| 亚洲黄色免费电影| 亚洲欧美视频| 99伊人成综合| 噜噜爱69成人精品| 亚洲欧美综合v| 女同性一区二区三区人了人一| 亚洲自拍16p| 欧美成人一区二区三区片免费| 午夜精品久久久久久久蜜桃app| 久久一区欧美| 久久激情中文| 国产精品久久久99| 亚洲国产日韩一级| 影音先锋在线一区| 欧美亚洲一区二区在线| 亚洲一区二区三区视频播放| 免费视频一区| 久久激情综合| 国产一区二区激情| 亚洲欧美日本日韩| 亚洲一区二区三区在线看| 欧美成人午夜剧场免费观看| 毛片基地黄久久久久久天堂| 国产精品女主播| 亚洲图片欧美一区| 亚洲自拍16p| 国产精品sss| 亚洲精品欧美一区二区三区| 亚洲欧洲一区二区天堂久久 | 有码中文亚洲精品| 欧美一区二区在线看| 先锋影音久久| 国产日韩欧美高清| 欧美一区=区| 久久精品免费电影| 蜜臀久久久99精品久久久久久 | 亚洲韩国日本中文字幕| 免费不卡在线视频| 亚洲黄色av| 一区二区三区日韩欧美精品| 欧美激情综合色| 亚洲精品久久久一区二区三区| 日韩视频免费在线观看| 欧美日韩在线大尺度| 中国成人黄色视屏| 中文网丁香综合网| 亚洲视频在线一区| 在线免费观看日本一区| 亚洲国产美女久久久久| 国产欧美日韩精品a在线观看| 中文亚洲欧美| 欧美精品成人| 激情文学综合丁香| 欧美理论片在线观看| 国产精品日韩欧美| 性娇小13――14欧美| 亚洲欧美国产一区二区三区| 国产精品一区二区在线| 欧美日韩mv| 欧美www视频| 亚洲伊人久久综合| 欧美日本精品在线| 国内精品模特av私拍在线观看| 亚洲欧美不卡| 中国亚洲黄色| 黄色一区三区| 亚洲一区二区免费看| 亚洲精品国产精品乱码不99 | 欧美国产成人在线| 91久久精品一区二区三区| 亚洲一区国产精品| 亚洲亚洲精品三区日韩精品在线视频| 欧美插天视频在线播放| 亚洲国产成人porn| 亚洲福利视频一区| 美女视频一区免费观看|