第二章:正则语言

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算理论
1
1.1 有穷自动机
实际示例—自动门控制
前缓冲区
后缓冲区
REAR BOTH NEITHER
FRONT
FRONT REAR BOTH
CLOSED
OPEN
NEITHER
控制器处于CLOSED状态,假设如下输入信号:
FRONT, REAR, NEITHER, FRONT, BOTH, NEITHER, REAR, NEITHER, 考察状态的变化。
证明定理遇到困难,暂时放下 ——引入不确定性
21
主要内容
1.1 有穷自动机 1.2 非确定性 1.3 正则表达式 1.4 非正则语言
本章小结 作业
22
非确定性
非确定性体现在 转换规则——一入多出, 是空字——无入转态
q1
q2
1
q1
1
q2 q3
23
非确定性
0,1 1
q1
0,
q2
q3
0,1 1
体会形式化描述的优点
12
计算的形式化定义
设 M = (Q, , , q0, F) 是一台有穷自动机, w = w1w2…wn 是
一个字符串,并且 wi 是字母表 的成员。如果存在 Q 中的
状态序列 r0, r1, … , rn,满足下列条件: 1) r0 = q0
2) (ri , wi+1) = ri+1 , i = 0, 1, …, n–1
0,1 1
q1
0,1
0,1
q2
q3
q4
25
非确定性
例1.15 考虑图示的 NFA N ,它的输入字母表 {0}由一个符号 组成。只含一个符号的字母表称为一元字母表。考虑 它接受的语言。
0
0
0
0
0
26
非确定性
例1.16 考虑图示的 NFA N 。运行这台机器,判断其是否识别ε、 a、baba、baa、b、bb、babba。
010100100100100: accept 010000010010: reject
: reject
5
有穷自动机的形式定义
定义 1.1
有穷自动机是一个 5 元组 ( Q, , , q0, F ),其中
(1) Q 是一个有穷集合,称为状态集。
(2) 是一个有穷集合,称为字母表。 (3) : QQ是转移函数。
2
q0 1,<RESET>
q2
M5 以模3的方式记录 它在输入串中读到 的数字之和。
0
11
有穷自动机举例
例1.6 例1.5推广。对于每一个 i >=1,设 Ai 是所有这种字符串 的语言,其中数字之和是 i 的倍数。
M=( Q, , , q0, F )
Q={q0, q1, …, qi-1 }
(qj , 0) = qj (qj , 1) = qk , k = j+1 mod i (qj , 2) = qk , k = j+2 mod i (qj , <RESET>) = q0 , k = j+1 mod i
28
NFA 的形式化描述举例
例1.18 给出图示的 NFA 的形式化描述。
0,1 1
q1
0,
q2
q3
0,1 1
q4
29
NFA 计算的形式化定义
设 N = (Q, , , q0, F) 是一台 NFA, w = w1w2…wn 是一个字
符串,并且 wi 是字母表 的成员。如果存在 Q 中的状态序
考虑 N 有 箭头。 对于 M 的任意一个状态 R,定义 E(R) 为从 R 出发只沿着 箭头可以达到的状态集合,包括 R 本身的所有成员在内。 E(R) = { q | 从 R 出发沿着 0 或多个 箭头可以到达 q } 修改 M 的转移函数 (R,a)={ qQ | 存在 rR, 使得 qE((r,a)) } q0=E({q0})
定理 正则语言类在并运算下封闭。 1.22
N
N1
N2
设 构造
N1 = (Q1, , 1, q1, F1) N2 = (Q2, , 2, q2, F2) N = (Q, , , q0, F)
1(q,a) q Q1
(q, a)
{q21(,qq,2a})
q Q2 q q0且a
q q0且a
36
NFA与DFA的等价性
33
NFA与DFA的等价性
推论 一个语言是正则的,当且仅当有一台非确定型有穷自 1.20 动机识别它。
34
NFA 转换成等价的 DFA 举例
例1.21 将图示的 NFA N 转换成等价的 DFA。
1
b
a
2 a, b
a,b
b
{3}
Q ={ , {1}, {2}, {3}, {1,2}, {1,3}, {2,3}, {1,2,3} }
9
有穷自动机举例
例1.4 给定有穷自动机 M4 的状态图。请给出形式化的描述, 并确定其能识别的语言。
s
a
a
b b
q1
r1
a
b
b
a
b q2
r2
a
10
有穷自动机举例
例1.5 给定有穷自动机 M5 的状态图。请给出形式化的描述, 并确定其能识别的语言。
0
2,<RESET>
q1
1
0,<RESET>
1
2
定理 正则语言类在连接运算下封闭。 1.23
N1
N2
N
37
NFA与DFA的等价性
定理 正则语言类在星运算下封闭。 1.24
N1
N
38
DFA和NFA能力等价
DFA机器易算,NFA 人易制造, 通常,人造NFA,让机器 把它变成DFA。
当用并行技术去实现时实际上是用NFA。 当对有指数个节点的树搜索和回溯(可能这里广度优先比深
度优先好),是用DFA。 直观解释:对应于NFA这样的简单并行,程序中可以串行化。
39
主要内容
q3 q2 q2
若 A 是机器 M 接受的全部字符串集,则称 A 是机器 M 的语 言,记作 L(M)=A,又称 M 识别 A 或 M 接受 A。
L(M1) = { w | w 至少一个 1并且在最后的1后面有偶数个0 } 7
有穷自动机举例
例1.2 给定有穷自动机 M2 的状态图。请给出形式化的描述, 并确定其能识别的语言。
(4) q0Q 是起始状态。 (5) FQ 是接受状态集。
6
有穷自动机举例
例 给定有穷自动机 M1 的状态图。请给出形式化的描述,并 确定其能识别的语言。
0
1
1
0
01
q1
q2
q3
q1 q1 q2
q2 q3 q2
0,1
M1 = ( {q1, q2 , q3} , {0,1} , , q1, q2 )
3) rn F 则 M 接受 w。
识别 定义
1.7 如果一个语言被一台有穷自动机
,则称它是
正则语言。
13
计算的形式化定义举例
例1.8 给定有穷自动机 M5 的状态图。令w是字符串 10<RESET>22<RESET>012
给出M5对w计算时进入的状态序列。
0
2,<RESET>
q1
1
0,<RESET>
列 r0, r1, … , rn,满足下列条件: 1) r0 = q0
2) ri+1 (ri , wi+1) , i = 0, 1, …, n–1
3) rn F 则 N 接受 w。
30
NFA与DFA的等价性
定理 每一台非确定型有穷自动机都等价于某一台确定型有 1.19 穷自动机。
1 q2
1
q1
1
0 q
1
0 q0
0
0,1
1
q00
q001
16
正则运算
定义 1.10
设 A 和 B 是两个语言,定义正则运算并、连接和星号 如下:
(1) 并: A∪B = { x | x∈A 或 x∈B } (2) 连接:AB = { xy | x∈A 且 y∈B } (3) 星号:A* = { x1x2…xk | k ≤ 0 且每一个xi ∈A }
q3
1
q5
1 q2 3 q1 1 1
q0
3 q4
1 1 q3 2
q5
{q1} → {q2, q3, q5}
3 q0
q2 ,q3 ,q5 1
q1 ,q4 2
q5 31
NFA与DFA的等价性
定理 每一台非确定型有穷自动机都等价于某一台确定型有 1.19 穷自动机。
设 N = (Q, , , q0, F) 是识别语言 A 的NFA。 假设 N 没有 箭头。
构造识别 A 的 DFA M = (Q, , , q0, F ) (1) Q=P(Q)
(2) 对于 RQ 和 a,令
(R,a)={ qQ | 存在 rR, 使得 q(r,a) }
(3) q0={ q0 }
(4) F = { RQ | R 包含 N 的一个接受状态 }
32
NFA与DFA的等价性
定理 每一台非确定型有穷自动机都等价于某一台确定型有 1.19 穷自动机。
19
正则运算
定理 正则语言类在连接运算下封闭。 1.13
证明思路 按照定理1.12证明思路试一下。 输入:M1接受第一段且 M2 接受第二段时,M才接受;
? M不知道在什么地方将它的输入分开 (什么地方第一段结束,第二段开始)
20
举例
Consider the concatenation: 考虑下列连接 {1,01,11,001,011,…} • {0,000,00000,…} (That is: the bit strings that end with a “1”, followed by an odd number of 0’s.) Problem is: given a string w, how does the automaton know where the L1 part stops and the L2 substring starts? 如何知道L1 何处停止? L2 何处开始?切分问题。
1
2
2
q0 1,<RESET>
q2
q0, q1, q1, q0, q2, q1, q0, q0, q1,q0
0
14
设计有穷自动机
例:设计有穷自动机 E1,假设字母表是{0,1},识别的语言由 所有含有奇数个 1 的字符串组成。
0 qeven
0
1
1
qodd
15
设计有穷自动机
例1.9 设计有穷自动机 E2,使其能识别含有 001 作为子串组成 的正则语言。
q4
不确定性表现:
• q11 Y ? Y有两个可能状态: • 导致 q2 自动漂移到 q3
q1,q2
是否接受 “0110” 和 ”1”
0110——q1 q1 q2 q3 q4 q4
1——{q1, q2 ,q3}
24
非确定性
例1.14 设 A 是 {0, 1} 上倒数第三个符号为 1 的所有字符串组成 的语言,构造非确定性自动机。
q1
b
a
a
q2 a, b q3
27
非确定型有穷自动机的形式定义
定义 1.17
非确定型有穷自动机 (NFA) 是一个 5 元组 ( Q, , , q0,
F ),其中
(1) Q 是有穷的状态集。
(2) 是有穷的字母表。
(3) : QεP(Q)是转移函数。
(4) q0Q 是起始状态。 (5) FQ 是接受状态集。
E({1}) = { 1, 3 }
a
F = {{1}, {1,2}, {1,3}, {1,2,3} } 3 考察 {{2},{1},{3},{1,2},{2,3}, {1,2,3}, , {1,3}}
a
{1}
b
{2}
{1,2}
b
b
a
a {1, 3}
a {2,3}
a,b
a
a
{1,2,3}
b
b
35
在正则运算下的封闭性
17
正则运算
例1.11 设字母表 是标准的 26 个字母 {a, b, … , z}。又设
A={good, bad}, B={boy, girl}, 求A∪B , AB 和A*。
18
正则运算
定理 正则语言类在并运算下封闭。 1.12
如果A1和A2是正则语言,则A1∪A2也是正则语言。 设 M1 识别 A1, M2 识别 A2。并设 M1=(Q1, , 1,q1, F1) 和 M2=(Q2, , 2, q2, F2) 构造识别A1∪A2 的 M=(Q, , , q0, F) Q = Q1Q2 = {(r1, r2) | r1Q1 且 r2Q2} ((r1, r2), a ) = (1(r1,a), 2(r2,a) ) q0 = (q1, q2) F = {(r1, r2) | r1F1 或 r2F2}
0
1
1
q1
q2
0
M2 = ( {q1, q2} , {0,1} , , q1, q2 )
L(M2) = { w | w 以 1 结束}
8
有穷自动机举例
例1.3 给定有穷自动机 M3 的状态图。请给出形式化的描述, 并确定其能识别的语言。
0
1
1
q1
q2
0 L(M3) = { w | w 是空串或以 0 结束}
可以给出状态和信号之间的计算。
2
3
状态图
变换规则
状态Leabharlann Baidu
0 1
1 0
q1
q2
q3
起始状态
0,1
接受状态
4
状态图
0 1
1 0
q1
q2
q3
0,1
010: reject on input “1101”, the machine goes: 11: accept
q1 q2 q2 q3 q2
= “accept”
相关文档
最新文档