【计算理论】计算理论总结 ( 正则表达式转为非确定性有限自动机 NFA ) ★★
文章目錄
- 一、正則表達式
- 二、正則語言運算示例 ★
- 三、根據正則表達式構造自動機
一、正則表達式
1 . 正則表達式原子定義 :
如果 RRR 是
- 字符集 Σ\SigmaΣ 中的 111 個字符 ,
- 空字符串 ε\varepsilonε , 或
- 空集 {?}\{ \varnothing \}{?} ,
那么稱 RRR 是正則表達式 ;
2 . 正則表達式遞歸定義 :
如果 R1,R2R_1 , R_2R1?,R2? 是正則表達式 , 那么
- R1∪R2R_1 \cup R_2R1?∪R2? 是正則表達式 ;
- R1°R2R_1 \circ R_2R1?°R2? 是正則表達式 ;
- R1?R_1^*R1?? 是正則表達式 ;
上述是正則表達式的定義 , 這是一個結構歸納定義 ;
參考博客 :
- 【計算理論】正則語言 ( 正則語言運算 | 正則語言封閉性 )
- 【計算理論】正則語言 ( 正則表達式原子定義 | 正則表達式遞歸定義 | 正則表達式語言原子定義 | 正則表達式語言結構歸納 | 正則表達式語言示例 | 根據正則表達式構造自動機 )
- 【計算理論】正則語言 ( 推廣型的非確定性有限自動機 GNFA | 刪除狀態 | 確定性有限自動機 轉為 正則表達式 )
二、正則語言運算示例 ★
語言計算示例 :
① AAA 語言 : A={001,10,,111}A = \{ 001 , 10, , 111 \}A={001,10,,111}
② BBB 語言 : B={ε,001}B = \{ \varepsilon , 001 \}B={ε,001}
1 . 并計算 : 將 A,BA,BA,B 兩個語言的集合 , 取 并集 即可 , 計算如下 :
A∪B={001,10,111,ε}\rm A \cup B = \{ 001, 10 , 111 , \varepsilon \}A∪B={001,10,111,ε}
2 . 串聯計算 : AAA 語言中的任意字符串 , 與 BBB 語言中的任意字符串 , 串聯在一起 , AAA 語言中有 333 個字符串 , BBB 語言中有兩個字符串 , 那么串聯的結果有 2×3=62 \times 3 = 62×3=6 個 , 計算過程如下 :
A°B={001,10,111,001001,10001,111001}\rm A \circ B = \{ 001 , 10, 111 , 001001, 10001, 111001 \}A°B={001,10,111,001001,10001,111001}
3 . 星計算 : AAA 語言的星計算 , 該集合一定是一個無限的集合 , 如果 AAA 語言不是空集 , 那么該 A?A^*A? 集合個數是無限的 , 其可以由 KKK 個字符串組成 , KKK 取值 000 到無窮大 , [0,+∞)[0 , +\infty )[0,+∞) ;
A?={ε,001,10,111,?}\rm A^* = \{ \varepsilon , 001 , 10 , 111 , \cdots \}A?={ε,001,10,111,?}
參考博客 :
- 【計算理論】正則語言 ( 正則語言運算 | 正則語言封閉性 )
- 【計算理論】正則語言 ( 正則表達式原子定義 | 正則表達式遞歸定義 | 正則表達式語言原子定義 | 正則表達式語言結構歸納 | 正則表達式語言示例 | 根據正則表達式構造自動機 )
- 【計算理論】正則語言 ( 推廣型的非確定性有限自動機 GNFA | 刪除狀態 | 確定性有限自動機 轉為 正則表達式 )
三、根據正則表達式構造自動機
根據下面的 正則表達式 構造 非確定性有限自動機 ( NFA ) , 剛好能 識別上述正則表達式表示的語言 ;
(ab∪a)?( ab \cup a )^*(ab∪a)?
構造能識別 (ab∪a)?( ab \cup a )^*(ab∪a)? 語言 的 自動機 ;
I. 構造原子自動機 : 先構造能接收 單個字符 的自動機 ;
① 接收 aaa 字符的自動機 : 下面的自動機是可以識別 aaa 字符串的 ;
② 接收 bbb 字符的自動機 : 下面的自動機是識別 bbb 字符串的 ;
II. 拼裝上述識別單個字符的 自動機 :
1 . 擺放自動機位置 : 將 222 個能識別 aaa 字符串的自動機 , 與 111 個能識別 bbb 字符串的自動機 , 按照如下排列放置 ;
2 . ababab 對應自動機構造 :
① 自動機連接方式 : aaa 正則表達式語言 自動機 與 bbb 正則表達式語言 自動機 是串聯在一起的 ;
② 串聯兩個自動機的狀態 : 使用 ε\varepsilonε 箭頭 , 串聯 aaa 對應自動機的接受狀態 -> bbb 對應自動機的開始狀態 ;
③ 修改 前者 的狀態 : 同時將 aaa 對應自動機的接受狀態 改為非接受狀態 ;
下面是 ababab 正則表達式 表達的語言 對應的自動機表示 :
3 . ab∪aab \cup aab∪a 對應自動機構造 :
① 添加新開始狀態 : 重新添加一個開始狀態 ;
② 連接并運算前者 : 使用 ε\varepsilonε 箭頭 從這個新添加的開始狀態 指向 ababab 自動機開始狀態 ;
③ 連接并運算后者 : 使用 ε\varepsilonε 箭頭 從這個新添加的開始狀態 指向 aaa 自動機開始狀態 ;
下面是 ab∪aab \cup aab∪a 正則表達式 表達的語言 對應的自動機表示 :
4 . (ab∪a)?( ab \cup a )^*(ab∪a)? 對應自動機構造 :
① 構造方法 : 就是 在 (ab∪a)( ab \cup a )(ab∪a) 對應自動機的基礎上 , 使用 ε\varepsilonε 箭頭 , 從 接受狀態 指向 開始狀態 ;
② 連接個數 : 所有的接受狀態 , 都 使用 ε\varepsilonε 箭頭 指向開始狀態 , 這里有兩個接受狀態 , 需要都指向開始狀態 ;
③ 添加新的開始狀態 : 添加接受狀態作為開始狀態 , 指向開始狀態 ;
參考博客 :
- 【計算理論】正則語言 ( 正則語言運算 | 正則語言封閉性 )
- 【計算理論】正則語言 ( 正則表達式原子定義 | 正則表達式遞歸定義 | 正則表達式語言原子定義 | 正則表達式語言結構歸納 | 正則表達式語言示例 | 根據正則表達式構造自動機 )
- 【計算理論】正則語言 ( 推廣型的非確定性有限自動機 GNFA | 刪除狀態 | 確定性有限自動機 轉為 正則表達式 )
總結
以上是生活随笔為你收集整理的【计算理论】计算理论总结 ( 正则表达式转为非确定性有限自动机 NFA ) ★★的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【计算理论】计算理论总结 ( 非确定性有
- 下一篇: 【计算理论】计算理论总结 ( 正则表达式