【计算理论】计算理论总结 ( 非确定性有限自动机 NFA 转为确定性有限自动机 DFA | 示例 ) ★★
文章目錄
- 一、NFA 轉 DFA 示例 1
- 二、NFA 轉 DFA 示例 2
- 三、NFA 轉 DFA 示例 3
一、NFA 轉 DFA 示例 1
將下圖的 非確定性有限自動機 NFA 轉為確定性有限自動機 DFA ;
NFA 的狀態集 {1,2,3}\rm \{ 1,2,3 \}{1,2,3} , 字符集 {a,b}\rm \{ a,b \}{a,b} ;
從 起始狀態 111 開始分析 , 讀取 ε\rm \varepsilonε 無條件跳轉到 333 , 這里形成了新的狀態 {1,3}\rm \{1, 3\}{1,3} , 寫到下面表格中 ;
{1,3}\rm \{1, 3\}{1,3} 狀態 下讀取 a\rm aa 字符結果是 {1,3}\rm \{1, 3\}{1,3} , 讀取 b\rm bb 字符結果是 {2}\{2\}{2} , 上述分別是 NFA 下兩個狀態讀取字符的后繼狀態取并集 ; 將新狀態寫到表格中 , 然后分析新狀態 ;
{2}\{2\}{2} 狀態下讀取讀取 a\rm aa 字符結果是 {2,3}\{2,3\}{2,3} , 讀取 b\rm bb 字符結果是 {3}\{3\}{3} , 上述分別是 NFA 下兩個狀態讀取字符的后繼狀態取并集 ; 將新狀態寫到表格中 , 然后分析新狀態 ;
{2,3}\{2,3\}{2,3} 狀態下讀取讀取 a\rm aa 字符結果是 {1,2,3}\{1, 2,3\}{1,2,3} , 讀取 b\rm bb 字符結果是 {3}\{3\}{3} , 上述分別是 NFA 下兩個狀態讀取字符的后繼狀態取并集 ; 將新狀態寫到表格中 , 然后分析新狀態 ;
{3}\{3\}{3} 狀態下讀取讀取 a\rm aa 字符結果是 {1,3}\{1,3\}{1,3} , 讀取 b\rm bb 字符結果是 {?}\{ \varnothing \}{?} , 上述分別是 NFA 下兩個狀態讀取字符的后繼狀態取并集 ; 將新狀態寫到表格中 , 然后分析新狀態 ;
{1,2,3}\{1, 2,3\}{1,2,3} 狀態下讀取讀取 a\rm aa 字符結果是 {1,2,3}\{1, 2,3\}{1,2,3} , 讀取 b\rm bb 字符結果是 {2,3}\{2, 3\}{2,3} , 上述分別是 NFA 下兩個狀態讀取字符的后繼狀態取并集 ; 將新狀態寫到表格中 , 然后分析新狀態 ;
{?}\{ \varnothing \}{?} 狀態下讀取讀取 a\rm aa 字符結果是 {?}\{ \varnothing \}{?} , 讀取 b\rm bb 字符結果是 {?}\{ \varnothing \}{?} , 上述分別是 NFA 下兩個狀態讀取字符的后繼狀態取并集 ;
| {1,3}\{1, 3 \}{1,3} | {1,3}\{1 , 3\}{1,3} | {2}\{2\}{2} |
| {2}\{2\}{2} | {2,3}\{2,3\}{2,3} | {3}\{3\}{3} |
| {2,3}\{2,3\}{2,3} | {1,2,3}\{1,2,3\}{1,2,3} | {3}\{3\}{3} |
| {3}\{3\}{3} | {1,3}\{1,3\}{1,3} | {?}\{\varnothing \}{?} |
| {1,2,3}\{1,2,3\}{1,2,3} | {1,2,3}\{1,2,3\}{1,2,3} | {2,3}\{2,3\}{2,3} |
| {?}\{\varnothing \}{?} | {?}\{\varnothing \}{?} | {?}\{\varnothing \}{?} |
凡是 包含 NFA 中接受狀態 111 的新狀態 都是 接受狀態 ;
{1,3}\{1, 3 \}{1,3} 和 {1,2,3}\{1, 2, 3 \}{1,2,3} 都是接受狀態 , 畫圖時都是 雙圈 ;
空集 {?}\{\varnothing \}{?} 狀態 , 接受任何字符都是空集 {?}\{\varnothing \}{?} ;
最終的 DFA 如下 :
詳細推理過程 : 【計算理論】非確定性有限自動機 ( NFA ) 轉換成 確定性有限自動機 ( DFA )
二、NFA 轉 DFA 示例 2
將下圖的 非確定性有限自動機 NFA 轉為確定性有限自動機 DFA ;
NFA 的狀態集 {1,2,3}\rm \{ 1,2,3 \}{1,2,3} , 字符集 {a,b}\rm \{ a,b \}{a,b} ;
從 起始狀態 111 開始分析 , 讀取 ε\rm \varepsilonε 無條件跳轉到 222 , 這里形成了新的狀態 {1,2}\rm \{1, 2\}{1,2} , 寫到下面表格中 ;
{1,2}\rm \{1, 2\}{1,2} 狀態 下讀取 a\rm aa 字符結果是 {1,2,3}\rm \{1, 2,3\}{1,2,3} , 讀取 b\rm bb 字符結果是 {?}\{\varnothing \}{?} ;
{1,2,3}\rm \{1, 2, 3\}{1,2,3} 狀態 下讀取 a\rm aa 字符結果是 {1,2,3}\rm \{1, 2,3\}{1,2,3} , 讀取 b\rm bb 字符結果是 {2,3}\{2, 3\}{2,3};
{2,3}\rm \{ 2, 3\}{2,3} 狀態 下讀取 a\rm aa 字符結果是 {1,2}\rm \{1, 2\}{1,2} , 讀取 b\rm bb 字符結果是 {2,3}\{2, 3\}{2,3};
| {1,2}\{1, 2 \}{1,2} | {1,2,3}\{1 , 2, 3\}{1,2,3} | {?}\{ \varnothing \}{?} |
| {1,2,3}\{1 , 2, 3\}{1,2,3} | {2,3}\{2,3\}{2,3} | {2,3}\{2,3\}{2,3} |
| {2,3}\{2,3\}{2,3} | {1,2}\{1,2\}{1,2} | {2,3}\{2,3\}{2,3} |
| {?}\{\varnothing \}{?} | {?}\{\varnothing \}{?} | {?}\{\varnothing \}{?} |
凡是 包含 NFA 中接受狀態 222 的新狀態 都是 接受狀態 ;
{1,2}\{1, 2 \}{1,2} , {2,3}\{2, 3 \}{2,3} 和 {1,2,3}\{1, 2, 3 \}{1,2,3} 都是接受狀態 , 畫圖時都是 雙圈 ;
空集 {?}\{\varnothing \}{?} 狀態 , 接受任何字符都是空集 {?}\{\varnothing \}{?} ;
最終的 DFA 如下 :
三、NFA 轉 DFA 示例 3
將下圖的 非確定性有限自動機 NFA 轉為確定性有限自動機 DFA ;
NFA 的狀態集 {1,2}\rm \{ 1,2 \}{1,2} , 字符集 {a,b}\rm \{ a,b \}{a,b} ;
從 起始狀態 111 開始分析 ,
{1}\rm \{1\}{1} 狀態 下讀取 a\rm aa 字符結果是 {1,2}\rm \{1, 2\}{1,2} , 讀取 b\rm bb 字符結果是 {2}\{ 2 \}{2} ;
{1,2}\rm \{1, 2\}{1,2} 狀態 下讀取 a\rm aa 字符結果是 {1,2}\rm \{1, 2\}{1,2} , 讀取 b\rm bb 字符結果是 {1,2}\{1, 2 \}{1,2} ;
{2}\rm \{2\}{2} 狀態 下讀取 a\rm aa 字符結果是 {?}\{ \varnothing \}{?} , 讀取 b\rm bb 字符結果是 {1}\{1\}{1};
| {1}\{1 \}{1} | {1,2}\{1 , 2\}{1,2} | {2}\{ 2 \}{2} |
| {1,2}\{1 , 2\}{1,2} | {1,2}\{1, 2\}{1,2} | {1,2}\{1,2\}{1,2} |
| {2}\{2\}{2} | {?}\{ \varnothing \}{?} | {1}\{1\}{1} |
| {?}\{\varnothing \}{?} | {?}\{\varnothing \}{?} | {?}\{\varnothing \}{?} |
凡是 包含 NFA 中接受狀態 111 的新狀態 都是 接受狀態 ;
{1}\{1\}{1} 和 {1,2}\{1, 2 \}{1,2} 都是接受狀態 , 畫圖時都是 雙圈 ;
空集 {?}\{\varnothing \}{?} 狀態 , 接受任何字符都是空集 {?}\{\varnothing \}{?} ;
最終的 DFA 如下 :
總結
以上是生活随笔為你收集整理的【计算理论】计算理论总结 ( 非确定性有限自动机 NFA 转为确定性有限自动机 DFA | 示例 ) ★★的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【计算理论】计算理论总结 ( 自动机设计
- 下一篇: 【计算理论】计算理论总结 ( 正则表达式