计算理论学习笔记(一)

时间:2024-05-31 08:34:03

确定性有穷自动机(DFA)

定义

计算理论学习笔记(一)

注意:允许没有接受状态,此时接受语言为空集;转移函数对每一个状态和每一个可能的输入都恰好指定了一个状态。

计算理论学习笔记(一)

定义正则运算的并、连结和星号

计算理论学习笔记(一)

正则运算的并,连结和星号都是封闭的,后面在证明DFA与NFA等价后,会用NFA对其进行证明。

常见语言的DFA状态图举例

计算理论学习笔记(一)

c题含某子串,首先画出对应的子串,然后再判断其它输入的状态转换即可。
f题不含某个子串,首先画出含某个子串的DFA,然后将接受态转为非接受态,将非接受态转为接受态。这里运用了DFA的补是封闭这一性质。
计算理论学习笔记(一)

对于l这种类型的题即DFA的或和且运算,画图比较麻烦,有时采用横1纵0不失为一种好方法。
对于n的倍数余m,首先画出n个状态围成的圈,然后从起始状态数起,将第m个状态标为接受态即可。对于这道题有个变形。画出长度除以3余2且除以4余1的DFA,这里先用中国剩余定理求出长度规律为12n+5(n=0,1,,)12n+5(n = 0, 1, \cdots,)也就是画出长度除以12余5的DFA。

注意:DFA一般不能对保证串中字符a与字符b相等,如anbna^nb^n不是正则语言,通过后面学习知道它是上下无关语言。但是它能表示一个很特殊的串,即串中01和10子串个数相等,它等价于串以相同的字符开始和结尾。(可以把01和10想象成波形图中的下升与下降,现在下升段与下降段相等,那么开始与结尾的值一定相等,同为0或同为1),DFA如图。
计算理论学习笔记(一)

非确定性有穷自动机(NFA)

NFA与DFA的不同:

  1. 一入多出。NFA中一个状态对于每个符号可能有0个,1个或多个转换的箭头。而DFA中每一个状态对于每个符号有唯一的转换箭头(状态转换)
  2. 加入空漂。NFA的输入字符比DFA多了一个ϵ\epsilon,即空漂。
    计算理论学习笔记(一)

定义

计算理论学习笔记(一)
与DFA的定义同为五元组,但仍存在一定差异。Σ\Sigma中新增了ϵ\epsilonδ\delta的映射结果属于状态集的幂集,即一入多出,同一个符号,可能对应多个状态转换。

注意:由于NFA加入非确定性,一个输入产生了多条路径,只要求所有路径中至少有一条路径能到达接受状态即可,这点与DFA也有所不同。

DFA与NFA的等价性。

首先DFA是特殊的NFA,即一入一出,没有空漂的NFA。
下面主要是将一个NFA转换成与之对应的DFA。
计算理论学习笔记(一)
已知DFA A={Q,Σ,δ,q0,F}DFA\space A = \lbrace Q,\Sigma, \delta, q_0, F\rbrace,现在要构造出一台与之对应的NFA B={Q,Σ,δ,q0,F}NFA\space B = \lbrace Q^{\prime},\Sigma^{\prime}, \delta^{\prime}, q_0^{\prime}, F^{\prime}\rbrace
首先原来的DFA有n个状态,那NFA有2n2^n个状态(即状态的组合)Q={Q000,Q100,,Q111}Q^{\prime} = \lbrace Q_{00\dots0}, Q_{10\dots0},\cdots,Q_{11\dots1}\rbraceΣ\Sigma^{\prime}很简单就为{0,1}\lbrace0,1\rbraceδ\delta^{\prime}要随QQ^{\prime}相应的改变,多个状态经过相同的输入的结果要进行位与,最后接受态FF^{\prime}含有2n12^{n-1}即只是含q1q_1即可(第一个二进制位为1)。这样就构造出一台DFA与NFA对应。
即证DFA与NFA是等价的。

NFA证正则语言的并、连接、星号运算为封闭的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uPuheDn8-1578217863559)(http://onwaier.com/wp-content/uploads/2020/01/22d15579c085b4a803186360f11cc93a.png)]
证明并运算,加入一个新的起始态,然后空漂到两台DFA的接受态即可。连接运算,将M1M_1中接受态全转为非接受态,然后将其空漂到M2M_2的起始态。星号运算,首先加入一个新的起始态(也是接受态)空漂到M1M_1的起始态,然后再将M1M_1的所有接受态空漂到新加入的起始态即可。

正则表达式(RE)

定义

计算理论学习笔记(一)

NFA转成RE

计算理论学习笔记(一)
利用法则:用力拉首尾,拓扑变形,以星换圈,以并换多路,逐步减少内态。最后得到就是RE。具体可以参考书上46页的2张图。

RE转成NFA

计算理论学习笔记(一)
从最小的子表达式到大一点的子表达式逐步建立,直到获得关于原始表达式的NFA.
所以NFA与RE是等价的.

DFA,NFA与RE三者的关系

三者关系如图所求.
计算理论学习笔记(一)

泵引理

定义

计算理论学习笔记(一)

应用泵引理证明非正则语言

上述定义是一个正则语言的必要不充分条件,即如果一个语言是正则语言,则它一定满足泵引理。如果不满足泵引理,一定不是正则语言。

注意:

  1. 泵引理只能用来证明非正则语言,不能证正则语言。
  2. 泵引理只能将“相等”抽成“不等”,“是”抽成“不是”,不能反过来。可能先利用正则语言的交,并,补运算是封闭的,先进行转换。

下面是一些例子
计算理论学习笔记(一)
计算理论学习笔记(一)
另外证明1n21^{n^2}或者12p1^{2^p}这种形式语言,可以在序列中相邻两串长度间隔在不能增大作文章,因为长度间隔的离散性,一定不能满足任意抽取均能满足原语言。

笔记教材及答案

github地址