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

woaidongmao

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

如何將正則表達(dá)式轉(zhuǎn)換為NFA

最近得做一些跟自動機(jī)有關(guān)的東東,其中一部分可以簡要地看作是由一套正則文法生成狀態(tài)自動機(jī)的過程。

什么是正則表達(dá)式?

首先我們看看什么是正則表達(dá)式。這個東東呢,一般用于描述一個字符串的集合——直接說就是一個正則表達(dá)式可能可以匹配一大堆字符串,而這一大堆字符串可以形成一個集合,它們的共同特征就是可以被這個正則表達(dá)式匹配。就像去死去死團(tuán),但是不同的是去死去死團(tuán)的團(tuán)員的共同特征是不被任何異性所匹配——但是這沒關(guān)系,我們不妨取去死去死團(tuán)的補集就行了。

反正正則表達(dá)是很好啦,因為你只要用一點點在臟話里,就可以罵好多好多人,比如:

Mar(y|k|cus) is son of bitch.

真是非常de省力,唯一的缺點是可能對方不知道你在說什么。

好了,從上面我們可以看出正則表達(dá)式中的兩個基本結(jié)構(gòu):

·                                 連結(jié) (Concatenation),比如 bitch,由b, i, t, c, h連接而成

·                                 聯(lián)合 (Union),比如 y|k|cus,可以認(rèn)為是yk或者cus

下面是第三個基本結(jié)構(gòu),被稱為Kleene star (或者 Kleene 閉包)的。因為這個操作是Stephen Cole Kleene發(fā)明的。啊啊,其實正則表達(dá)式這個東西就是Kleene發(fā)明的。這個同學(xué)真是非常的牛B,因為他是更加牛B的 阿隆佐 - 丘奇 ( Alonzo Church )——歷史上和阿蘭 - 圖靈 ( Alan Turing ) 并稱的人物——的學(xué)生。有多牛B呢,這個Kleene和他的老師,還有圖靈,就遞歸論發(fā)表了論文,奠定了可計算理論的根基。啊哈哈哈,真是牛B啊。

嗯,所謂Kleene Star的例子就是這樣的。

·                                 Kleene Star,比如a*,可以接受空串和若干個a連結(jié)組成的串

當(dāng)然咯,還有一些別的操作,比如我們知道的+?,集合[]等等,但是這些操作都可以通過上面三個基本操作的組合來完成。

比如+a+可以認(rèn)為是aa*

什么是NFA

要說NFA嘛,我得先說說DFA。所謂DFA,就是Deterministic Finite state Automata的簡稱。是狀態(tài)機(jī)的一種。通俗的說,就是一大堆狀態(tài)的集合,里面有一個初始狀態(tài)和若干終止?fàn)顟B(tài),每個狀態(tài)可以有若干個輸出邊前往別的狀態(tài)。但是要求每個狀態(tài)的同一種輸出邊至多只有一個,所以自動機(jī)被稱為是”Deterministic”的。

比如下面這個例子:

表述的是一個電燈de開關(guān),這個開關(guān)每按一下就從狀態(tài)轉(zhuǎn)換到關(guān)狀態(tài),或者從關(guān)狀態(tài)轉(zhuǎn)換到狀態(tài)。而為了從環(huán)保角度出發(fā),在關(guān)狀態(tài)才被認(rèn)為是終止態(tài)。

clip_image002

上面的自動機(jī)呢,就可以描述這個燈泡的行為模式,或者說可以描述電燈的狀態(tài)轉(zhuǎn)換過程。輸出邊就是或者關(guān)的動作,或者說這個燈泡的開關(guān),只接受這兩種動作:“Trun On”“Trun Off”。而”Trun On”動作只會導(dǎo)致燈的狀態(tài)變成“On”“Trun Off”動作只會導(dǎo)致燈的狀態(tài)變成“Off”,這是確定的,你的外婆都可以預(yù)料到的。所以說DFA是確定有限狀態(tài)自動機(jī)。

現(xiàn)在可以說NFA了。這個NFA嘛,全稱是Non-deterministic Finite state Automata。也是狀態(tài)自動機(jī)的一種。確切地說,剛才的DFANFA的一個子集。和DFA唯一的區(qū)別就是他是”Non-deterministic”的,哈,非確定的,每個狀態(tài)的同一種輸出邊可以不止一個。

還是用剛才的例子。現(xiàn)在假設(shè)我們的電燈有一種新的狀態(tài)咯~:壞掉了。燈絲被過大的電流燒斷了,聽上去遭透了,因為一”Trun On”就得準(zhǔn)備換燈泡了:

clip_image004

但是我們沒法確定的知道哪一次Trun On會導(dǎo)致燈泡壞掉,使得燈泡進(jìn)入”Down”狀態(tài)的那次操作看上去跟你昨天開燈的那次操作一模一樣(嚴(yán)格的說,每一次點亮燈泡都會導(dǎo)致燈絲的狀態(tài)發(fā)生變化,但是在此簡化了)

所以從狀態(tài)”O(jiān)ff”出來的輸出邊中,”Trun On”有兩條,這就導(dǎo)致沒法根據(jù)當(dāng)前狀態(tài)和輸出邊確定下一狀態(tài),這就是為什么稱為非確定性有限自動機(jī)的原因。

如何轉(zhuǎn)換?

剛才Shellex說了,正則表達(dá)式有三種基本結(jié)構(gòu)。如果能先將這三種基本結(jié)構(gòu)轉(zhuǎn)換成對應(yīng)的NFA,然后在用這三種基本結(jié)構(gòu)去拼裝成完整的NFA是不是很省力呢?

下面就是三種基本正則表達(dá)式的NFA

ab:

clip_image006

a*:

clip_image008
a|b:

clip_image010
里面出現(xiàn)了一種叫“None”的邊。這個不代表這個邊是字面上的“None”,而是指這個邊是個空邊。也就是說任何動作都可以從這個邊進(jìn)入下一個狀態(tài)。它的學(xué)名叫 epsilon 邊,一般表示成’ε’Shellex這里表示成“None”了。

下面我們來考慮正則表達(dá)式到NFA轉(zhuǎn)換。給出一個正則串的輸入,得到一個NFA的輸出。被廣泛采用的是Thompson Algorithm,也就是所謂的子集算法。該算法的發(fā)明人應(yīng)該就是寫ed編輯器的那個Thompson大牛。該算法的實現(xiàn)和算術(shù)表達(dá)式的求值非常的類似,需要一個符號棧存放操作符,一個自動機(jī)棧存放生成的自動機(jī)。算法結(jié)束后,可以從自動機(jī)棧中Pop一個最終的結(jié)果。

比如對于正則表達(dá)式(a|b)*cd,求值過程如下:

PUSH a To automaton stack
PUSH b To automaton stack
UNION
STAR
PUSH c To automaton stack
CONCAT
PUSH d To automaton stack
CONCAT
POP result

里面的UNIONSTAR CONCAT就是三種基本結(jié)構(gòu)的生成操作了。而這三種基本操作的實現(xiàn)是這樣的:

Star

POP T from automaton stack
CREATE state A, B
ADD transition from A to B with 'ε'
ADD transition from A to T.entry with 'ε'
ADD transition from T.exit to A with 'ε'
ADD transition from T.exit to B with 'ε'
ADD state A, B to T
PUSH T to automaton stack

Concat

POP F, S from automaton stack
ADD transition from F.exit to S.entry with 'ε'
JOIN S to F
SET F.exit = S.exit
SET F.inputSet += S.inputSet
PUSH F to automaton stack

Union:

POP F, S from automaton stack
CREATE state A, B
ADD transition from A to F.entry with 'ε'
ADD transition from A to S.entry with 'ε'
ADD transition from T.exit to B with 'ε'
ADD transition from T.exit to B with 'ε'
JOIN S to F
ADD state A, B to T
SET F.exit = S.exit
SET F.inputSet += S.inputSet
PUSH F to automaton stack

 

posted on 2009-09-29 13:50 肥仔 閱讀(2822) 評論(0)  編輯 收藏 引用 所屬分類: 狀態(tài)機(jī) & 自動機(jī) & 形式語言

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲影音先锋| 国产精品美女一区二区在线观看| 欧美久久99| 狠狠色狠狠色综合日日小说 | 亚洲国产女人aaa毛片在线| 亚洲视频免费在线| 亚洲精品国精品久久99热一| 久久精品一区二区三区不卡| 国产日本亚洲高清| 欧美一区二区免费| 亚洲免费一级电影| 国产精品日韩| 亚洲宅男天堂在线观看无病毒| 亚洲高清二区| 亚洲桃色在线一区| 亚洲精品国产系列| 欧美亚洲专区| 亚洲国产日韩综合一区| 亚洲综合视频网| 蜜臀av国产精品久久久久| 欧美日韩国产小视频在线观看| 国产精品久久久久999| 国内精品国产成人| 99精品欧美一区二区三区综合在线| 午夜精品剧场| 欧美国产激情二区三区| 亚洲伊人观看| 欧美区一区二| 狠狠色丁香婷婷综合久久片| 日韩天天综合| 亚洲中字在线| 亚洲精品美女91| 国产精品高潮呻吟| 久久精品国产第一区二区三区| 欧美在线视频不卡| 亚洲人成亚洲人成在线观看| 亚洲精品一区在线观看| 国产精品扒开腿做爽爽爽视频| 欧美一区成人| 久久综合国产精品台湾中文娱乐网| 亚洲韩国青草视频| 99视频在线精品国自产拍免费观看 | 美女被久久久| 免费成人av| 一区二区三区视频免费在线观看| 一区二区三区免费观看| 国产一区二区高清| 亚洲日韩视频| 国产综合第一页| 亚洲精品五月天| 激情亚洲成人| 在线亚洲欧美视频| 亚洲国产mv| 亚洲视频一区| 91久久精品网| 亚洲天堂av在线免费观看| 蜜臀久久久99精品久久久久久| 久久综合99re88久久爱| 一区二区三区成人精品| 黄色小说综合网站| 一本色道久久99精品综合| 国内外成人免费激情在线视频网站 | 亚洲精品综合| 亚洲午夜一区二区| 亚洲免费观看高清完整版在线观看熊| 牛牛国产精品| 亚洲乱码日产精品bd| 亚洲国产精品久久久久秋霞影院| 久久裸体艺术| 亚洲高清在线| 亚洲国产另类 国产精品国产免费| 久久天天躁狠狠躁夜夜av| 亚洲电影下载| 欧美激情一区二区三区在线视频观看 | 免费在线日韩av| 久久人人看视频| 亚洲国产日韩在线一区模特| 亚洲国产精品成人综合色在线婷婷| 欧美激情在线免费观看| 一区二区国产精品| 亚洲欧美国产三级| 在线播放中文一区| 欧美寡妇偷汉性猛交| 欧美精品1区| 香蕉亚洲视频| 久久一日本道色综合久久| 999在线观看精品免费不卡网站| 亚洲精品一区二区在线观看| 国产精品卡一卡二卡三| 久久裸体艺术| 欧美日韩成人一区二区| 久久激情网站| 欧美激情二区三区| 欧美在线一区二区| 老司机精品久久| 午夜日韩av| 欧美激情第六页| 久久精品综合| 欧美精品在欧美一区二区少妇| 亚洲女同同性videoxma| 老牛嫩草一区二区三区日本| 亚洲一区二区三区乱码aⅴ| 久久精品国产第一区二区三区| 日韩视频久久| 久久全国免费视频| 亚洲欧美日韩国产一区| 欧美成人首页| 久久婷婷国产综合国色天香| 欧美乱在线观看| 精品福利电影| 亚洲校园激情| 免费看黄裸体一级大秀欧美| 亚洲欧美自拍偷拍| 欧美黄色aaaa| 久久夜色精品国产欧美乱| 欧美揉bbbbb揉bbbbb| 欧美a级理论片| 国产乱码精品一区二区三| 亚洲精品国产拍免费91在线| 国内精品久久久久影院薰衣草| 一道本一区二区| 99精品欧美一区二区三区| 久久天天狠狠| 免费成人激情视频| 国产亚洲在线观看| 亚洲一区二区少妇| 亚洲综合精品自拍| 欧美精品综合| 亚洲日本aⅴ片在线观看香蕉| 国内精品视频在线播放| 午夜国产精品视频免费体验区| 中日韩男男gay无套| 欧美二区乱c少妇| 欧美大片专区| 亚洲黄色影片| 欧美精品日韩精品| 亚洲欧洲日本专区| 99视频日韩| 欧美视频在线观看| 一本色道久久综合| 午夜精品一区二区三区四区| 国产精品成人一区二区网站软件| 亚洲美女中文字幕| 亚洲天堂av图片| 国产精品色午夜在线观看| 亚洲无亚洲人成网站77777| 亚洲特色特黄| 国产精品入口麻豆原神| 午夜免费电影一区在线观看| 久久国产天堂福利天堂| 国产一区二区三区免费观看| 久久精品成人欧美大片古装| 欧美va天堂| 亚洲免费电影在线| 欧美美女喷水视频| 亚洲一级免费视频| 久久久久久久久久久一区| 在线精品视频免费观看| 免费久久久一本精品久久区| 亚洲精品国产精品国自产观看浪潮| 亚洲少妇在线| 国产一区二区精品| 毛片一区二区| 日韩手机在线导航| 久久久久9999亚洲精品| 亚洲国产成人av| 欧美四级电影网站| 欧美一区二区在线免费观看| 米奇777超碰欧美日韩亚洲| 亚洲国产99| 国产精品日韩欧美一区二区| 久久精品国产精品| 一区二区三区四区五区视频| 久久精品免费观看| 99精品视频免费全部在线| 国产乱人伦精品一区二区| 久久亚洲高清| 亚洲综合第一| 亚洲第一主播视频| 蜜月aⅴ免费一区二区三区| 亚洲视频免费| 亚洲欧美综合一区| 亚洲欧美制服中文字幕| 亚洲欧美另类中文字幕| 亚洲欧美视频在线观看视频| 亚洲一区网站| 午夜亚洲福利| 久久精品女人| 久热精品视频| 欧美精品一区二区三区一线天视频 | 国产亚洲综合性久久久影院| 国产亚洲综合精品| 在线播放亚洲一区| 亚洲欧美日韩一区二区在线| 噜噜噜在线观看免费视频日韩| 亚洲资源在线观看| 日韩视频二区| 亚洲精品视频免费| 在线成人av| 黄色成人小视频|