【计算理论】计算理论总结 ( 非确定性有限自动机 NFA 转为确定性有限自动机 DFA | 示例 ) ★★

简介: 【计算理论】计算理论总结 ( 非确定性有限自动机 NFA 转为确定性有限自动机 DFA | 示例 ) ★★

文章目录

一、NFA 转 DFA 示例 1

二、NFA 转 DFA 示例 2

三、NFA 转 DFA 示例 3





一、NFA 转 DFA 示例 1


将下图的 非确定性有限自动机 NFA 转为确定性有限自动机 DFA ;

image.png




NFA 的状态集 { 1 , 2 , 3 } \rm \{ 1,2,3 \}{1,2,3} , 字符集 { a , b } \rm \{ a,b \}{a,b} ;



从 起始状态 1 11 开始分析 , 读取 ε \rm \varepsilonε 无条件跳转到 3 33 , 这里形成了新的状态 { 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 下两个状态读取字符的后继状态取并集 ;


a aa b bb

{ 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 中接受状态 1 11 的新状态 都是 接受状态 ;


{ 1 , 3 } \{1, 3 \}{1,3} 和 { 1 , 2 , 3 } \{1, 2, 3 \}{1,2,3} 都是接受状态 , 画图时都是 双圈 ;


空集 { ∅ } \{\varnothing \}{∅} 状态 , 接受任何字符都是空集 { ∅ } \{\varnothing \}{∅} ;



最终的 DFA 如下 :


image.png



详细推理过程 : 【计算理论】非确定性有限自动机 ( NFA ) 转换成 确定性有限自动机 ( DFA )






二、NFA 转 DFA 示例 2


将下图的 非确定性有限自动机 NFA 转为确定性有限自动机 DFA ;


image.png



NFA 的状态集 { 1 , 2 , 3 } \rm \{ 1,2,3 \}{1,2,3} , 字符集 { a , b } \rm \{ a,b \}{a,b} ;



从 起始状态 1 11 开始分析 , 读取 ε \rm \varepsilonε 无条件跳转到 2 22 , 这里形成了新的状态 { 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};


a aa b bb

{ 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 中接受状态 2 22 的新状态 都是 接受状态 ;


{ 1 , 2 } \{1, 2 \}{1,2} , { 2 , 3 } \{2, 3 \}{2,3} 和 { 1 , 2 , 3 } \{1, 2, 3 \}{1,2,3} 都是接受状态 , 画图时都是 双圈 ;


空集 { ∅ } \{\varnothing \}{∅} 状态 , 接受任何字符都是空集 { ∅ } \{\varnothing \}{∅} ;




最终的 DFA 如下 :


image.png






三、NFA 转 DFA 示例 3


将下图的 非确定性有限自动机 NFA 转为确定性有限自动机 DFA ;


image.png



NFA 的状态集 { 1 , 2 } \rm \{ 1,2 \}{1,2} , 字符集 { a , b } \rm \{ a,b \}{a,b} ;



从 起始状态 1 11 开始分析 ,


{ 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};


a aa b bb

{ 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 中接受状态 1 11 的新状态 都是 接受状态 ;


{ 1 } \{1\}{1} 和 { 1 , 2 } \{1, 2 \}{1,2} 都是接受状态 , 画图时都是 双圈 ;


空集 { ∅ } \{\varnothing \}{∅} 状态 , 接受任何字符都是空集 { ∅ } \{\varnothing \}{∅} ;




最终的 DFA 如下 :

image.png


目录
相关文章
【计算理论】计算理论总结 ( 非确定性有限自动机 NFA 转为确定性有限自动机 DFA ) ★★
【计算理论】计算理论总结 ( 非确定性有限自动机 NFA 转为确定性有限自动机 DFA ) ★★
437 0
【计算理论】计算理论总结 ( 非确定性有限自动机 NFA 转为确定性有限自动机 DFA ) ★★
【计算理论】计算理论总结 ( 正则表达式转为非确定性有限自动机 NFA | 示例 ) ★★(二)
【计算理论】计算理论总结 ( 正则表达式转为非确定性有限自动机 NFA | 示例 ) ★★(二)
148 0
【计算理论】计算理论总结 ( 正则表达式转为非确定性有限自动机 NFA | 示例 ) ★★(二)
【计算理论】计算理论总结 ( 正则表达式转为非确定性有限自动机 NFA | 示例 ) ★★(一)
【计算理论】计算理论总结 ( 正则表达式转为非确定性有限自动机 NFA | 示例 ) ★★(一)
163 0
【计算理论】计算理论总结 ( 正则表达式转为非确定性有限自动机 NFA | 示例 ) ★★(一)
|
Windows
【计算理论】计算复杂性 ( 证明 非确定性图灵机 与 确定性图灵机 的时间复杂度 之间的指数关系 )
【计算理论】计算复杂性 ( 证明 非确定性图灵机 与 确定性图灵机 的时间复杂度 之间的指数关系 )
222 0
【计算理论】计算复杂性 ( 证明 非确定性图灵机 与 确定性图灵机 的时间复杂度 之间的指数关系 )
|
资源调度 Serverless vr&ar
【计算理论】计算理论总结 ( 上下文无关文法 ) ★★
【计算理论】计算理论总结 ( 上下文无关文法 ) ★★
199 0
【计算理论】计算理论总结 ( 上下文无关文法 ) ★★
|
机器学习/深度学习
【计算理论】计算复杂性 ( 非确定性图灵机的时间复杂度 | 非确定性图灵机 与 确定性图灵机 的时间复杂度 之间的关系 )
【计算理论】计算复杂性 ( 非确定性图灵机的时间复杂度 | 非确定性图灵机 与 确定性图灵机 的时间复杂度 之间的关系 )
195 0
【计算理论】计算复杂性 ( 非确定性图灵机的时间复杂度 | 非确定性图灵机 与 确定性图灵机 的时间复杂度 之间的关系 )
|
算法
【计算理论】计算复杂性 ( 多项式等价引入 | 多项式时间规约 )
【计算理论】计算复杂性 ( 多项式等价引入 | 多项式时间规约 )
255 0
【计算理论】计算复杂性 ( 多项式等价引入 | 多项式时间规约 )
|
资源调度
【计算理论】计算理论总结 ( 正则表达式转为非确定性有限自动机 NFA ) ★★
【计算理论】计算理论总结 ( 正则表达式转为非确定性有限自动机 NFA ) ★★
348 0
|
算法
【计算理论】可判定性 ( 确定性有限自动机的接受问题 | 证明 “确定性有限自动机的接受问题“ 的可判定性 )
【计算理论】可判定性 ( 确定性有限自动机的接受问题 | 证明 “确定性有限自动机的接受问题“ 的可判定性 )
192 0
|
机器学习/深度学习 算法
【计算理论】可判定性 ( 非确定性有限自动机的接受问题 | 证明 “非确定性有限自动机的接受问题“ 的可判定性 )
【计算理论】可判定性 ( 非确定性有限自动机的接受问题 | 证明 “非确定性有限自动机的接受问题“ 的可判定性 )
172 0