chapter 3-有穷状态自动机
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例2、假设字母表为{0,1},构造一个识别含有001字串的所有 字符串的DFA的状态图。
1 0 q1 1 q2 0
0 1 q3
0,1
q4
第三章、有穷状态自动机
例2、假设字母表为{0,1},构造一个识别含有001子串的所有 字符串的DFA的状态图。
1 0 q1 1 q2 0
0 1 q3
0,1
q4
第三章、有穷状态自动机
关键问题:DFA与NFA等价吗?
第三章、有穷状态自动机
第三章、有穷状态自动机
NFA与DFA的等价性
NFA与DFA等价是指两种模型识别相同的语言类(正则语言)。 对于任意给定的DFA,存在一个NFA与之等价; 对于任意给定的NFA,存在一个DFA与之等价。 DFA本身就是一种NFA,所以,要证明DFA与NFA等价,只需证明 对于任意给定的NFA,存在一个DFA与之等价。 下面根据给定的NFA构造一个DFA: 这里M2=(Q2,Σ,δ,q0,F ),Q2 =P(Q),
第三章、有穷状态自动机
δ1
q01 q1 q2
0 1
q1 q2 q1
0 q02 q3 q4
q01 q1 Q2
1 q3 q4 q5
δ2
q02 q3 q4
q5
q5
q5
第三章、有穷状态自动机
下面构造M= (Q,Σ,δ,q,F), (1)Q={(r1,r2) ∣ r1∈Q1且r2∈Q2}; (2)Σ= {0,1}; (3)转移函数 δ((r1,r2) ,a)= δ (δ1 (r1,a) ,δ 2(r2,a)), 如下页表所示; (4)q0=(q01,q02)是M的起始状态; (5)F={(q2,q02),(q2,q3),(q2,q4),(q2,q5),(q01,q4), (q1,q4)}。
第三章、有穷状态自动机
定理:正则语言类在并运算下封闭。 证明:思路:即假设A,B正则,再证明A∪B正则。 设自动机M1,M2分别识别A,B ,造一个M识别A∪B即可。 M1=(Q1,Σ,δ1,q1,F1), M2=(Q2,Σ,δ2,q2,F2),下面开始构造一个 M=(Q,Σ,δ,q0,F)使其符合要求。 (1)Q={(r1,r2) ∣r1∈A1且r2∈A2}=Q1×Q2; (2) Σ相同,若不同,则Σ= Σ1 ∪ Σ2; (3)转移函数δ:任意(r1,r2) ∈Q,a ∈ Σ,令 δ ((r1,r2) ,a)= δ (δ1 (r1,a) ,δ 2(r2,a)), 于是, δ 取M的一个状态和一个输入符号,返回M的下一个状 态; (4)q0是有序对(q1,q2); (5)F={(r1,r2) ∣r1∈F1或r2∈F2} (注意,F≠F1×F2) 综上,我们构造了自动机M。
第三章、有穷状态自动机
例6、假设字母表为{0,1},构造一个识别L(E)={0,ε}的DFA的 状态图。
0
q1
1 0,1
q2
q3
0,1
第三章、有穷状态自动机
0 0
1
q1 1
比如例1的自动机的形式描述: (1)、Q={q1,q2}; (2)、 Σ={0,1}; (3)、 δ (q1,0)=q1, δ (q1,1)=q2, δ (q2,0)=q2, δ (q2,1)=q1; (4)、q1为起始状态; (5)、F={q2}为接受状态集。
第三章、有穷状态自动机
四、非确定性
前面所有的有穷自动机都是确定性的,记为DFA,特点是必须每个符
号都有相应的运算结果,自然的,考虑非确定性NFA,为推广,它在
任何一点,下一个状态可能存在若干个选择。那么,区别在哪里呢?
1
1 0 0
1
q01
0,1
q1
0
q2
0,1
q01
0,ε
q1
0
q2
第三章、有穷状态自动机
第三章、有穷状态自动机
例如:教室外面的饮料销售机,就是典型的有穷状态自动机, 投币,选择饮料,找零,出口,大家试着解析一下它的工作过 程,进行数学语言描述或者画出机器草图。
条件:2元雪碧,3元橙汁,4元vc汁,红色圈表示接受状态。
请大家上来画设计图!
第三章、有穷状态自动机
这就是我们天天见到的售货机,也称为自动机。
第三章、有穷状态自动机
该定理不仅证明了这个结论,更重要的是为我们的运算提供了方法。 例2、通过运算构造DFA: L(M)={w ∣w含偶数个0或二个1}。 解:令L(M1)={w ∣w含偶数个0}, L(M2)={w ∣w含二个1}。 则L(M)= L(M1) ∪ L(M2),其中,
1
1
0 0
1
q01
第三章、有穷状态自动机
0 1
0
q1 1
q2
0,1
q3 1
例如机器运行时:010: reject 11: accept 010100100100100: accept 010000010010: reject : reject
第三章、有穷状态自动机
二、设计有穷自动机
就是针对给定的语言,你来设计一台自动机,并且准确识别这 个语言。确定性的有穷自动机记为DFA。 定义:如果一个语言被一台有穷自动机识别,则称它是正则语 言。
例3、假设字母表为{0,1},构造一个识别从1开始以0结束的 所有字符串的DFA的状态图。
1
0 0
q0
0
1
q1
1
q2
q3
0,1
第三章、有穷状态自动机
例4、假设字母表为{0,1},构造一个识别空集Ф的DFA的状态图。
q1
例5、假设字母表为{0,1},构造一个识别L(E)={ε}的DFA的状态图。
q1
2 q1 3
q2
4
余额
q3 q4 q5
q6
第三章、有穷状态自动机
一、有穷状态自动机的形式定义
定义1、 确定的有穷状态自动机是一个五元组(Q, Σ, δ, q0, F ),其 中 (1)、 Q是有限状态集; (2) 、Σ是字母表; (3)、 Δ:Q× Σ→Q称为状态转换函数,它是状态集与字 母表的笛卡尔积到状态集的一个映射; (4) 、q0∈Q是初始状态; (5) 、 F是终止状态集。
q2
第三章、有穷状态自动机
问题(讨论):
1、DFA如何进行运算?
第三章、有穷状态自动机
三、正则运算
在算术中,基本对象是数,工具是处理数的运算,如+, ×;在计算理论中,对象是语言,工具是处理语言所设计的 如下3种运算,称作正则运算。 定义:设A和B为语言,则下列3种运算称作正则运算。 (1)并:A∪B={x∣x∈A或x ∈B} (2)连接:AB={xy∣x∈A且x ∈B} (3)星号:A*={x1 x2…xk∣xi∈A,i=1, …k,k≧0} 例1、Σ={0,1},A={01,11},B={001,100},则 A∪B={01,11,001,100}; AB={01001,01100,11001,11100}; A*={ε,01,11,0101,0111,1101,1111,010101,…}。 注意:Ф ∪ Ф = Ф , Ф Ф = Ф , Ф *={ε}, A Ф = Ф
第三章、有穷状态自动机
δ (q01,q02) (q01,q3) (q01,q4) (q01,q02) (q1,q02) (q1,q3) (q1,q4) (q1,q5) (q2,q02) (q2,q3) (q2,q4) (q2,q5) 0 (q1,q02) (q1,q3) (q1,q4) (q1,q5) (q2,q02) (q2,q3) (q2,q4) (q2,q5) (q1,q02) (q1,q3) (q1,q4) (q1,q5) 1 (q01,q3) (q01,q4) (q01,q5) (q01,q5) (q1,q3) (q1,q4) (q1,q5) (q1,q5) (q2,q3) (q2,q4) (q2,q5) (q2,q5)
例1、假设字母表为{0,1},所考虑的语言由所以含有奇数个1的字 符串组成,构造一个识别这个语言的所有字符串的DFA的状 态图。 大家先设计。
第三章、有穷状态自动机
0 1
0
q1 1
q2
第三章、有穷状态自动机
例2、假设字母表为{0,1},构造一个识别含有001子串的所有 字符串的DFA的状态图。
第三章、有穷状态自动机
第三章、有穷状态自动机
考虑非确定性NFA,为DFA的推广,它在任何一点,下一个状态 可能存在若干个选择。那么,区别在哪里呢?主要是转移函数δ, 有很多计算分支,如果这些子过程中至少有一个接受,那么整个 计算接受。为了适应,大家运算一下010001110,100110, 11111111。非确定性NFA比DFA构造容易,实际上也是对能力更强 的计算模型的非确定性的一个很好的引入。
第三章、有穷状态自动机
(q01,q02)
0
0
(q1,q02) (q2,q02)
1
(q01,q3)
1
0
(q1,q3)
0 0 0 0 0 0
1
(q2,q3)
1
(q01,q4)
1
0
(q1,q4)
1
(q2,q4)
1
(q01,q5)
1 0
(q1,q5)
1
(q2,q5)
1
1
0
1
那么,还可以证明,连接运算与星运算也是封闭的。
q1
0
M1
q2
第三章、有穷状态自动机
0 0
1
0
1
0,1
1
q02
q3
q4
q5
M2
M1=(Q1,Σ,δ1,q1,F1), M2=(Q2,Σ,δ2,q2,F2), (1)、Q1={q01,q1,q2 }, Q2={q02,q3,q4,q5}; (2)、 Σ= {0,1}; (3)、转移函数δ1, δ2如下表; (4)、q01,q02分别是M1,M2的起始状态; (5)、F1={q2}, F2={q4}.
第三章、有穷状态自动机
有穷状态自动机是具有离散输入和输出的系统的一种数学模 型。 其主要特点有以下几个方面: (1)、 系统具有有穷个状态,不同的状态代表不同的意义。按照 实际的需要,系统可以在不同的状态下完成规定的任务。 (2)、 我们可以将输入字符串中出现的字符汇集在一起构成一个 字母表。系统处理的所有字符串都是这个字母表上的字符串。 (3) 、系统在任何一个状态下,从输入字符串中读入一个字符, 根据当前状态和读入的这个字符转到新的状态。 (4)、 系统中有一个状态,它是系统的开始状态。 (5) 、系统中还有一些状态表示它到目前为止所读入的字符构成 的字符串是语言的一个句子。
那么,NFA如何计算呢? 对于一个输入串,它能以多种行进方式到达一个状态, 比如,输入01,下面是它的运算:从而,该机器识别01字符串。
q01
0 0
0
q1
1
q01
q2
1
q01
q1
q2
第三章、有穷状态自动机
NFA的形式定义:
定义2、 非确定的有限自动机是一个五元组(Q,Σ,δ,q0,F ),其中 (1) Q是有限状态集; (2) Σ是字母表; (3) Δ:Q× Σε→P(Q)称为状态转换函数,它是状态集 与字母表的笛卡尔积到状态集的一个映射, Σε= Σ∪{ε},P(Q)为Q的幂集; (4) q0∈Q是初始状态; (5) F是终止状态集。
第三章、有穷状态自动机
定义:如果一个语言被一台有穷自动机识别,则称它是正 则语言。 定义:如果DFA M1和DFA M2识别的语言分别为L(M1)和 L(M2),且L(M1)= L(M2),称M1与M2等价。 下面如何演绎规则? 首先,封闭性 : A={1,2,3}关于数字的加法不封闭; N={1,2,3,…}关于数字的加法封闭。 那么,正则语言关于并运算,如何?
δ也是根据子集计算结果来讨论,最后化简。举例如下:
第三章、有穷状态自动机
将此图画出。有效运算表如下。
第三章、有穷状态自动机
第三章、有穷状态自动机
综上,我们设置了有穷状态自动机,实际上,就是:
1、一个运算器,而且是存储容量极低的这样一个运算模型; 2、这个模型识别的集合就称为是正则语言; 3、有很多种形式,如DFA、NFA、GNFA、FA等等,全都等价。
1 0 q1 1 q2 0
0 1 q3
0,1
q4
第三章、有穷状态自动机
例2、假设字母表为{0,1},构造一个识别含有001子串的所有 字符串的DFA的状态图。
1 0 q1 1 q2 0
0 1 q3
0,1
q4
第三章、有穷状态自动机
关键问题:DFA与NFA等价吗?
第三章、有穷状态自动机
第三章、有穷状态自动机
NFA与DFA的等价性
NFA与DFA等价是指两种模型识别相同的语言类(正则语言)。 对于任意给定的DFA,存在一个NFA与之等价; 对于任意给定的NFA,存在一个DFA与之等价。 DFA本身就是一种NFA,所以,要证明DFA与NFA等价,只需证明 对于任意给定的NFA,存在一个DFA与之等价。 下面根据给定的NFA构造一个DFA: 这里M2=(Q2,Σ,δ,q0,F ),Q2 =P(Q),
第三章、有穷状态自动机
δ1
q01 q1 q2
0 1
q1 q2 q1
0 q02 q3 q4
q01 q1 Q2
1 q3 q4 q5
δ2
q02 q3 q4
q5
q5
q5
第三章、有穷状态自动机
下面构造M= (Q,Σ,δ,q,F), (1)Q={(r1,r2) ∣ r1∈Q1且r2∈Q2}; (2)Σ= {0,1}; (3)转移函数 δ((r1,r2) ,a)= δ (δ1 (r1,a) ,δ 2(r2,a)), 如下页表所示; (4)q0=(q01,q02)是M的起始状态; (5)F={(q2,q02),(q2,q3),(q2,q4),(q2,q5),(q01,q4), (q1,q4)}。
第三章、有穷状态自动机
定理:正则语言类在并运算下封闭。 证明:思路:即假设A,B正则,再证明A∪B正则。 设自动机M1,M2分别识别A,B ,造一个M识别A∪B即可。 M1=(Q1,Σ,δ1,q1,F1), M2=(Q2,Σ,δ2,q2,F2),下面开始构造一个 M=(Q,Σ,δ,q0,F)使其符合要求。 (1)Q={(r1,r2) ∣r1∈A1且r2∈A2}=Q1×Q2; (2) Σ相同,若不同,则Σ= Σ1 ∪ Σ2; (3)转移函数δ:任意(r1,r2) ∈Q,a ∈ Σ,令 δ ((r1,r2) ,a)= δ (δ1 (r1,a) ,δ 2(r2,a)), 于是, δ 取M的一个状态和一个输入符号,返回M的下一个状 态; (4)q0是有序对(q1,q2); (5)F={(r1,r2) ∣r1∈F1或r2∈F2} (注意,F≠F1×F2) 综上,我们构造了自动机M。
第三章、有穷状态自动机
例6、假设字母表为{0,1},构造一个识别L(E)={0,ε}的DFA的 状态图。
0
q1
1 0,1
q2
q3
0,1
第三章、有穷状态自动机
0 0
1
q1 1
比如例1的自动机的形式描述: (1)、Q={q1,q2}; (2)、 Σ={0,1}; (3)、 δ (q1,0)=q1, δ (q1,1)=q2, δ (q2,0)=q2, δ (q2,1)=q1; (4)、q1为起始状态; (5)、F={q2}为接受状态集。
第三章、有穷状态自动机
四、非确定性
前面所有的有穷自动机都是确定性的,记为DFA,特点是必须每个符
号都有相应的运算结果,自然的,考虑非确定性NFA,为推广,它在
任何一点,下一个状态可能存在若干个选择。那么,区别在哪里呢?
1
1 0 0
1
q01
0,1
q1
0
q2
0,1
q01
0,ε
q1
0
q2
第三章、有穷状态自动机
第三章、有穷状态自动机
例如:教室外面的饮料销售机,就是典型的有穷状态自动机, 投币,选择饮料,找零,出口,大家试着解析一下它的工作过 程,进行数学语言描述或者画出机器草图。
条件:2元雪碧,3元橙汁,4元vc汁,红色圈表示接受状态。
请大家上来画设计图!
第三章、有穷状态自动机
这就是我们天天见到的售货机,也称为自动机。
第三章、有穷状态自动机
该定理不仅证明了这个结论,更重要的是为我们的运算提供了方法。 例2、通过运算构造DFA: L(M)={w ∣w含偶数个0或二个1}。 解:令L(M1)={w ∣w含偶数个0}, L(M2)={w ∣w含二个1}。 则L(M)= L(M1) ∪ L(M2),其中,
1
1
0 0
1
q01
第三章、有穷状态自动机
0 1
0
q1 1
q2
0,1
q3 1
例如机器运行时:010: reject 11: accept 010100100100100: accept 010000010010: reject : reject
第三章、有穷状态自动机
二、设计有穷自动机
就是针对给定的语言,你来设计一台自动机,并且准确识别这 个语言。确定性的有穷自动机记为DFA。 定义:如果一个语言被一台有穷自动机识别,则称它是正则语 言。
例3、假设字母表为{0,1},构造一个识别从1开始以0结束的 所有字符串的DFA的状态图。
1
0 0
q0
0
1
q1
1
q2
q3
0,1
第三章、有穷状态自动机
例4、假设字母表为{0,1},构造一个识别空集Ф的DFA的状态图。
q1
例5、假设字母表为{0,1},构造一个识别L(E)={ε}的DFA的状态图。
q1
2 q1 3
q2
4
余额
q3 q4 q5
q6
第三章、有穷状态自动机
一、有穷状态自动机的形式定义
定义1、 确定的有穷状态自动机是一个五元组(Q, Σ, δ, q0, F ),其 中 (1)、 Q是有限状态集; (2) 、Σ是字母表; (3)、 Δ:Q× Σ→Q称为状态转换函数,它是状态集与字 母表的笛卡尔积到状态集的一个映射; (4) 、q0∈Q是初始状态; (5) 、 F是终止状态集。
q2
第三章、有穷状态自动机
问题(讨论):
1、DFA如何进行运算?
第三章、有穷状态自动机
三、正则运算
在算术中,基本对象是数,工具是处理数的运算,如+, ×;在计算理论中,对象是语言,工具是处理语言所设计的 如下3种运算,称作正则运算。 定义:设A和B为语言,则下列3种运算称作正则运算。 (1)并:A∪B={x∣x∈A或x ∈B} (2)连接:AB={xy∣x∈A且x ∈B} (3)星号:A*={x1 x2…xk∣xi∈A,i=1, …k,k≧0} 例1、Σ={0,1},A={01,11},B={001,100},则 A∪B={01,11,001,100}; AB={01001,01100,11001,11100}; A*={ε,01,11,0101,0111,1101,1111,010101,…}。 注意:Ф ∪ Ф = Ф , Ф Ф = Ф , Ф *={ε}, A Ф = Ф
第三章、有穷状态自动机
δ (q01,q02) (q01,q3) (q01,q4) (q01,q02) (q1,q02) (q1,q3) (q1,q4) (q1,q5) (q2,q02) (q2,q3) (q2,q4) (q2,q5) 0 (q1,q02) (q1,q3) (q1,q4) (q1,q5) (q2,q02) (q2,q3) (q2,q4) (q2,q5) (q1,q02) (q1,q3) (q1,q4) (q1,q5) 1 (q01,q3) (q01,q4) (q01,q5) (q01,q5) (q1,q3) (q1,q4) (q1,q5) (q1,q5) (q2,q3) (q2,q4) (q2,q5) (q2,q5)
例1、假设字母表为{0,1},所考虑的语言由所以含有奇数个1的字 符串组成,构造一个识别这个语言的所有字符串的DFA的状 态图。 大家先设计。
第三章、有穷状态自动机
0 1
0
q1 1
q2
第三章、有穷状态自动机
例2、假设字母表为{0,1},构造一个识别含有001子串的所有 字符串的DFA的状态图。
第三章、有穷状态自动机
第三章、有穷状态自动机
考虑非确定性NFA,为DFA的推广,它在任何一点,下一个状态 可能存在若干个选择。那么,区别在哪里呢?主要是转移函数δ, 有很多计算分支,如果这些子过程中至少有一个接受,那么整个 计算接受。为了适应,大家运算一下010001110,100110, 11111111。非确定性NFA比DFA构造容易,实际上也是对能力更强 的计算模型的非确定性的一个很好的引入。
第三章、有穷状态自动机
(q01,q02)
0
0
(q1,q02) (q2,q02)
1
(q01,q3)
1
0
(q1,q3)
0 0 0 0 0 0
1
(q2,q3)
1
(q01,q4)
1
0
(q1,q4)
1
(q2,q4)
1
(q01,q5)
1 0
(q1,q5)
1
(q2,q5)
1
1
0
1
那么,还可以证明,连接运算与星运算也是封闭的。
q1
0
M1
q2
第三章、有穷状态自动机
0 0
1
0
1
0,1
1
q02
q3
q4
q5
M2
M1=(Q1,Σ,δ1,q1,F1), M2=(Q2,Σ,δ2,q2,F2), (1)、Q1={q01,q1,q2 }, Q2={q02,q3,q4,q5}; (2)、 Σ= {0,1}; (3)、转移函数δ1, δ2如下表; (4)、q01,q02分别是M1,M2的起始状态; (5)、F1={q2}, F2={q4}.
第三章、有穷状态自动机
有穷状态自动机是具有离散输入和输出的系统的一种数学模 型。 其主要特点有以下几个方面: (1)、 系统具有有穷个状态,不同的状态代表不同的意义。按照 实际的需要,系统可以在不同的状态下完成规定的任务。 (2)、 我们可以将输入字符串中出现的字符汇集在一起构成一个 字母表。系统处理的所有字符串都是这个字母表上的字符串。 (3) 、系统在任何一个状态下,从输入字符串中读入一个字符, 根据当前状态和读入的这个字符转到新的状态。 (4)、 系统中有一个状态,它是系统的开始状态。 (5) 、系统中还有一些状态表示它到目前为止所读入的字符构成 的字符串是语言的一个句子。
那么,NFA如何计算呢? 对于一个输入串,它能以多种行进方式到达一个状态, 比如,输入01,下面是它的运算:从而,该机器识别01字符串。
q01
0 0
0
q1
1
q01
q2
1
q01
q1
q2
第三章、有穷状态自动机
NFA的形式定义:
定义2、 非确定的有限自动机是一个五元组(Q,Σ,δ,q0,F ),其中 (1) Q是有限状态集; (2) Σ是字母表; (3) Δ:Q× Σε→P(Q)称为状态转换函数,它是状态集 与字母表的笛卡尔积到状态集的一个映射, Σε= Σ∪{ε},P(Q)为Q的幂集; (4) q0∈Q是初始状态; (5) F是终止状态集。
第三章、有穷状态自动机
定义:如果一个语言被一台有穷自动机识别,则称它是正 则语言。 定义:如果DFA M1和DFA M2识别的语言分别为L(M1)和 L(M2),且L(M1)= L(M2),称M1与M2等价。 下面如何演绎规则? 首先,封闭性 : A={1,2,3}关于数字的加法不封闭; N={1,2,3,…}关于数字的加法封闭。 那么,正则语言关于并运算,如何?
δ也是根据子集计算结果来讨论,最后化简。举例如下:
第三章、有穷状态自动机
将此图画出。有效运算表如下。
第三章、有穷状态自动机
第三章、有穷状态自动机
综上,我们设置了有穷状态自动机,实际上,就是:
1、一个运算器,而且是存储容量极低的这样一个运算模型; 2、这个模型识别的集合就称为是正则语言; 3、有很多种形式,如DFA、NFA、GNFA、FA等等,全都等价。