有穷自动机
本周做了《自动机理论,语言和计算导论》第二章有穷自动机的汇报,还存在很多问题和遗漏,现在就这些问题把它整理下来,并用《形式语言与自动机导论》peter linz的这本书做了查漏补缺。
一.DFA
- 扩展转移函数和转移函数的区别
转移函数δ(q , a)=p中的a指的是一个单个的字符,它是指自动机在q状态时,读入一个a指令转移到p状态。而扩展转移函数要求的是q再输入一堆指令w后所处于的状态δ*(q , w)=?,举下面一个例子:
转移函数需要写出对每个状态读入每个指令的对应转移函数,而引入扩展转移函数就方便多了,δ*的第二个参数是一个字符串而不是一个单一符号,相当于每读一个字符做一次递归调用:
δ(q0 , a)=q1 and δ(q1 , b)=q2可写作δ*(q0 , ab)=q2
递归的给出形式化定义:
- δ*(q , ε)=q0
- δ*(q , wa)=δ(δ*(q , w) , a)
二.语言与DFA对应的语言
DFA M=(Q,Σ, δ ,q0,F)接受的语言是定义在Σ上被接受的所有字符串的集合。
形式化地表示为 L(M)={w∈Σ* : δ*(q0 , w)∈F}
判断一个DFA是否接受一个字符串就是看它最终状态是否停留在终态,不接受意味停止在非终态上,即: L(M)={w∈Σ* : δ*(q0 , w)∉F}
此处引入了陷阱状态的概念,如下图中的q2,该DFA表示接收前面是任意个a,并以一个b为结尾的字符串,当读到b后跳转到终态q1,此时如果还没有结束输入的话,就跳转到q2,并停留在该陷阱状态。该自动机接收的语言表示为L={aⁿb:n>=0}
三.NFA
NFA的非确定性是指自动机的每一步迁移都要进行选择,它转移的状态不是唯一的,而是一个状态集合。可以用一个五元组来表示M=(Q,Σ, δ ,q0,F),其中Q,Σ, q0,F与DFA是相同的,而δ定义为Q x (Σ∪{ε}),它是可以接受空串转移的。
- DFA和NFA的三个区别:
a、转移函数不同,DFA转移到一个唯一确定的状态,而NFA转移到一个状态集合
b、NFA允许带空串转移,DFA是不允许的
c、DFA转移函数的值域是Q+1,而NFA的δ值域是2Q
举个例子:Q={q0,q1,q2},则DFA的可能转移状态属于这样一个集合{∅,q0,q1,q2},
而NFA的转移状态包含于Q的幂集{∅,{q0},{q1},{q2},{q0,q1},{q0,q2},{q1,q2},{q0,q1,q2}}
- 如何判定一个字符串是否能被NFA接受:
当自动机读完一个字符串,经过一系列转移最后能进入终态,则说这个字符串可以被NFA接受;反之,如果自动机无论如何迁移都无法到达终态,则称这个字符串不能被接受。
- NFA的可接受的语言L可表示为L(M)={w∈Σ* : δ*(q0 , w)∩F≠∅}
也就是说,NFA读完字符串后到达的状态集合中要与F有交集,才能说明这个语言被自动机接受。
四.为什么需要非确定型
我觉得,非确定型FA比确定型多了一个可选择性,DFA是一个顺序执行的过程,而NFA是一个分支选择过程,比如选择最佳路径的时候,DFA每走完一个路径需要回溯到最初状态再转移到其他路径,而NFA则不需要回溯。
五.DFA和NFA的等价性
存在一个基本问题,DFA和NFA有哪些不同?为了探讨这个问题引入了自动机等价的定义。
- 什么是自动机等价?
如果两个自动机能接受相同的语言,则这两个自动机是等价的。
- 在非确定的有限自动机NFA中,由于某些状态的转移需从若干个可能的后续状态中进行选择,故一个NFA对符号串的识别就必然是一个试探的过程。这种不确定性给识别过程带来的反复,无疑会影响到NFA的工作效率。而DFA则是确定的,将NFA转化为DFA将大大提高工作效率,因此将NFA转化为DFA是有其一定必要的。
- 因为DFA在本质上是一种更加严格的NFA,所以说DFA能接受的语言NFA一定能接受,那NFA能接受的语言DFA可以接受吗?答案是不确定的,因此采用了构造性证明法来证明,即找到一种把NFA转化成等价DFA的方法。(构造过程及化简过程略)
有了NFA构造DFA的过程方法是不够的,需要对其进行形式化证明:
证明:如果D=(QD,Σ, δD ,{q0},FD)是用子集构造从NFA N=(QN,Σ, δN ,q0,FN)构造出来的DFA,那么L(D)=L(N)。(此证明直接原书贴图)
暂时先写到这,等有新的领悟和更新后再补充。。。