当前位置:
文档之家› 非确定的有限状态自动机Non-deterministicFiniteAutomaton,
非确定的有限状态自动机Non-deterministicFiniteAutomaton,
• 具备同时处理多个状态的能力; • 具备对输入进行预测的能力;
2018/10/14
7
NFA的非形式化描述 (cont.)
• 例:M1如何接受00101
M1 S q0 0
q1 1 0
q0
q2
0
q0
0
q0
1
q0
1
q0 q1 q0
q1
q1
不能继续
q2
不能继续
q2
8
2018/10/14
Nபைடு நூலகம்A的形式定义
k
• 可以不区分 (q, a)和 (q, a)
– (q, a)= (q, a)
i 1
2018/10/14
11
把状态函数扩展到串 (cont.)
• 设x=a1a2…an * ,则 (q, x)的计算如下:
(q, a1a2 an )
i pi ( q ,a1a2 an1 )
• 非确定的有穷状态自动机(Non-deterministic finite automaton, NFA)
– 五元组: M=(Q, ∑, δ, q0, F) 有穷状态集 输入字母表 状态转移函数 终止状态集FQ 开始状态q0∈Q
– δ: Q×∑2Q,(q, a)∈Q×∑,δ(q, a)= {p1,p2,…,pm}
– : Q*→2Q – (1) 基础:qQ, (q, )={q}; – (2) 归纳:设串x形如wa (w*,a),qQ, (q, w)={p1,p2, …, pk},则 (q, wa)= {p|r(q, w), 使得p(r, a)}
( pi , a )
2018/10/14 3
提要
• 主要内容
– NFA
• 非形式化描述、形式定义、NFA与DFA的等价性;
– -NFA
• 形式定义、 -NFA与NFA的等价性
• 重点
– NFA和-NFA的概念、DFA和NFA以及-NFA和 NFA之间的等价转换方法;
• 难点
– 对NFA和-NFA概念的理解;NFA与DFA的等价性 证明;
2018/10/14
2
提要
• 主要内容
– NFA
• 非形式化描述、形式定义、NFA与DFA的等价性;
– -NFA
• 形式定义、 -NFA与NFA的等价性
• 重点
– NFA和-NFA的概念、DFA和NFA以及-NFA和 NFA之间的等价转换方法;
• 难点
– 对NFA和-NFA概念的理解;NFA与DFA的等价性 证明;
2018/10/14 12
NFA接受的语言
• NFA接受(识别)的字符串
– x∈*,
• 如果(q0,x) ∩ F,则称x被M接受; • 如果(q0,x)∩F=,则称M不接受x ;
• NFA接受(识别)的语言
– L(M)={x| x*且(q0,x)∩F}
4. (q0, 011)=(q0, 1)(q2, 1)={q0, q2}{q3}={q0, q2, q3} 5. (q0, 0110)=(q0, 0)(q2, 0)(q3, 0) ={q0, q1}Φ{q3}={q0, q1, q3} 6. (q0, 01100)=(q0, 0)(q1, 0)(q3, 0)={q0, q1}{q3}{q3}={q0, q1, q3}
第三章 有限状态自动机
非确定的有限状态自动机 Non-deterministic Finite Automaton, NFA
付国宏
黑龙江大学计算机科学技术学院 ghfu@
引言
• FA的修改
– DFA对于同一个输入,从同一个状态出发只能有一 个转移; – 能否修改FA,使它对同一个输入从同一个状态出发 可以有零个、一个或多个转移; – 从而得到一个更为紧凑(状态数量较少)、更为容易 设计的自动机 – 非确定有穷状态自动机 (non-deterministic finite automaton, NFA)
( p , a )
n
• 举例:用描述右图所示 的NFA处理01100的过程
1. (q0, )={q0}
0
q1 q2
0
S
q0
1
q3
1
2. (q0, 0)=(q0, 0)={q0, q1} 3. (q0, 01)=(q0, 1)(q1, 1)={q0, q2}Φ={q0, q2}
2018/10/14 4
NFA
• • • • • 非形式描述 形式定义 扩展转移函数 从NFA构造DFA NFA与DFA的等价性
NFA的非形式化描述
• NFA对同一个输入符号,从一个状态出发可以 有零个、一个或多个转移。
M1 S
q0 0
q1 1
q2
L(M1)={x|x为01结尾的0和1的串}
M2 S
q0
0
q1
1
q2
L(M1)={x|x为以0开始、1结尾的0和1的串}
2018/10/14
6
NFA的非形式化描述 (cont.)
• NFA与DFA的区别
– 并不是对于所有的(q,a)Q,(q,a)都有一个状态与 它对应; – 并不是对于所有的(q,a) Q,(q,a)只对应一个状 态; – NFA在任意时刻可以处于有穷多个状态; – NFA具有“智能”
0 →q0 1 0
{q0, q1} {q0, q2}
q1
0
q1
q2 *q3
2018/10/14
{q3}
Φ {q3}
Φ
{q3} {q3}
S
q0
1
q3 q2
1
状态转移表
状态转移图
10
把状态函数扩展到串
• 设NFA M=(Q, , , q0, F)
• 扩展定义
– : Q→2Q
• 的递归定义
• M在状态q读入字符a,可以选择地将状态变成p1,p2,…,或pm ;
• 将读头向右移动一个带方格而指向输入字符串的下一个字符;
2018/10/14 9
NFA的表示
• 接受{x|x∈{0,1}*,且x含有子串00或11}的NFA的 表示
M=({q0, q1, q2, q3}, {0, 1}, , q0, {q0 , q3}) (q0, 0)={q0, q2}, (q0, 1)={q0, q2}, (q1, 0)={q3}, (q1, 1)=Φ, (q2, 0)=Φ, (q2, 1)={q3}, (q3, 0)={q3}, (q3, 1)={q3} 四元组