当前位置: 首页>編程日記>正文

形式语言与自动机总结

形式语言与自动机总结

形式语言与自动机总结

1.绪论

形式语言定义

自动机:具有离散输入输出的数学模型

对应关系

非限定性语言 ---------- 图灵机

上下文有关语言 ---------- 线性有界自动机

上下文无关语言 ---------- 下推式自动机

正则语言 ---------- 有限自动机

2.语言及文法

字符串运算

字符串:简称为‘字’或者‘串’,是由字母表T中字符构成的有限序列

连接

取头字符,取尾部,子串匹配

逆:字符串倒置:w1=a1a2a3–>w1上有一横=a3a2a1

幂运算:自身连接 ,T0={ε}

闭包(*,+):*闭包包括{ε},+闭包不包括

语言:

注意:L1={ε}和L2={}=Φ不一样,前者是只有一个空句子的语言,后者是空语言

语言的积

L1={ ab , ba },L2={ aa , bb };则L1L2={abaa,abbb,baaa,babb};L1L2 ≠ L2L1.

语言的幂

自身连接

文法定义

四元组G={N,T,P,S}

L(G)是文法生成的句子

N:非终结符的有限集合

T: 终结符的有限集合

P: 生成式的有限集合

S: 起始符,SN

文法分类:

0型文法

无限制

1型文法

​ α–>β,其中|α|<|β|, β∈(N∪T)+,α∈(N∪T)*N+(N∪T)*,即意味着左边必须至少有一个起始符,右边可以起始也可以不起始,但右边长度必须不小于左边长度。对应语言:上下文有关语言

2型文法

​ A–>α,A∈N,α∈(N∪T)*,即意味着左边必须是一个起始符,右边无限制,但长度不小于1(满足1型文法)。对应语言:上下文无关语言

3型文法/正则文法

​ 右线性文法:

​ A–>wB 或 A–>w A,B∈N,w∈T*.

​ 左线性文法:

​ A–>Bw 或 A–>w A,B∈N,w∈T*.

​ 对应语言:正则语言

3.1确定的有限自动机DFA

五元组 = ( Q , T , δ , q0 , F )

Q x T --> Q.

切记:不管是转移图还是转移表表示DFA时,都要注意初始状态和终止状态。初始状态前有箭头,终止状态 有双圈。

被DFA接受的字符串必须在输入结束后能够使DFA状态达到终止

格局

包括信息:当前状态q,待输入字符串w. 两者构成的瞬时描述 ( q , w )

初始格局:( q0 , w )

终止格局: ( q , ε ), q∈F

在这里插入图片描述

设计有限自动机:

多个例子

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 不确定有限自动机:NFA

五元组:NFA M = ( Q , T , δ , q0 , F )

其中δ = Q x T -->2Q

DFA是特殊的NFA ,NFA转化DFA:

子集构造法

列表法 进行,注意以下几点:

表中的状态集合要在中括号中。例:[ p ],[ q , r ];

表中的起始状态要加箭头,终止状态要加星号*

最后的图中状态集合要在大括号中。例:{ q }, { q , r },同时外加圆圈,终止状态双重圆圈

3.3 ε-NFA

五元组:NFA M = ( Q , T , δ , q0 , F )

其中δ = Q x( T ∪{ ε }) --> 2Q

ε闭包

ε-CLOSURE或ECLOSE,定义为从q经过所有的ε路径可到达状态,包括q自身

状态子集的ε-闭包:ε-CLOSURE( I ) = ∪ε-CLOSURE( q ),q∈I

Ia定义:对于状态子集 I ⊆ Q,任意 a ∈ T,Ia = ε-CLOSURE( δ ( I , a ) ) .

定义P = δ ( I , a ):P是从I中的所有状态经过一条标a的边可以到达的状态集合

计算δ’ ( q0 , a ):

δ’ ( q0 , a ) = ε-CLOSURE{ δ [ δ’ ( q0 , ε ) , a ] }

​ = ε-CLOSURE{ δ [ ε-CLOSURE(q0) , a ] } //先求一个q0的ε-闭包,再将其闭包后的结果全部经过一个a形成的集 合,再将其集合中的元素全部进行ε-闭包得到集合即为最终答案。

构造ε-NFA自动机

在这里插入图片描述

ε-NFA自动机格局

在这里插入图片描述

ε-NFA转化NFA

ε闭包法:

在这里插入图片描述

一个一个找,从起始状态开始将ε路径跳过(空跳),比如从X跳到A,那么A接受1到B,就可以看成X接受1到B,既然X可以空跳经过G,那么讨论完X之后就不再讨论G。

在这里插入图片描述

3.4 正则集和正则式

正则集

字母表上一些特殊形式的字符串集合

{ε} , Φ , {a}都是正则集

正则式

用类似代数表达式的方法表示正则语言

ε , Φ , a(a∈T)都是正则式

运算:作用于语言上的代数运算

若A,B为正则式,L{ A } , L{ B }为正则集

联合:A+B 或者 L { A } ∪ L { B } 或者的关系,若之后没有*闭包运算,则A,B不能共存,每次只出现一个

连接:AB 或者 L{ A } · L{ B } 顺序的关系

星闭包:A* 或者 L(A)*

算数符优先级:* 大于 · 大于 +

正则式的性质

L+一定不包含ε吗?不一定,如果L中包含ε,那么L+也可以包含ε.

与闭包有关的定律

(a*)*=a*, a*=a+a*, L+=LL*=L*L, L*=L+∪{ε}

右线性文法与正则式

两者等效

文法 S --> aS, S --> a

对应正则式 a+ = a*a

从右线性文法导出正则式:

求解规则

设x=αx+β,α∈T*,β∈(N∪T)*,x∈N,则x的解为x=α*β

求解方法

将右线性文法的生成式写成联立方程,将所有的大写字母当作未知数求解

3.5 正则集与右线性文法

正则集<==>右线性文法产生的语言

已知正则集,求右线性文法:

例1

设正则集L为含有两个相继a和两个相继b的由a和b组成的所有字符串集合,构造产生L的右线性文法

步骤:

先得出正则式

提炼核心内容:必须有aa和bb,所以可能是aabb,bbaa。

确定其余部分:(a+b)*

得出正则式:(a+b)*aa(a+b)*bb(a+b)* + (a+b)*bb(a+b)*aa(a+b)*

根据正则式得出右线性文法
分解规则

需要从左侧开始分解

对于aX的形式,可以转化为S–>aX

对于(a+b)X的形式,可以转化为S–>aX|bX

对于a*的形式,可以转化为S–>aS

逐步分解

首先,对(a+b)*(相当于提公因式),有S–>aS|bS

然后,对于剩下的aa(a+b)*bb(a+b)*和bb(a+b)*aa(a+b)*,因为是两部分相加得到,所以有S–>aaA|bbB

其中,A = (a+b)*bb(a+b)*,B = (a+b)*aa(a+b)*

先研究A,对于(a+b)*,有A–>aA|bA

剩下bb(a+b)*,有A–>bbC,其中C=(a+b)*

所以C–>aC|bC|ε

同理,B–>aB|bB|aaC

得出答案

S–>aS|bS|aaA|bbB

A–>aA|bA|bbC

B–>aB|bB|aaC

C–>aC|bC|ε

3.7 正则表达式与有限自动机的关系

从DFA构造正则表达式

状态消去法

消去的是中间状态,即除了起始和终止都要消去

最终得到的正则表达式为每一终态对应的正则表达式之和

消去规则

在这里插入图片描述

例1

在这里插入图片描述

例2

在这里插入图片描述

从正则式构造等价ε-NFA

归纳构造过程

对于R+S:

在这里插入图片描述

对于RS

在这里插入图片描述

对于R*

在这里插入图片描述

例子

在这里插入图片描述

3.8 右线性语言与有限自动机

由右线性文法G定义的语言必然能被一个NFA M所接受。即L(G) = L(M)

构造与右线性文法等价的有限自动机

例1

设有右线性文法G=({S, B} , {a, b} , P , S),其中 P:S–>aB B–>aB|bS|a, 试着构造与G等价的有限自动机M

答题步骤

构造NFA M

M = ( Q , T , δ , q0 , F ) ,

将Q , T , q0 , F 全部表明清楚

注意Q中要多一个H作为终止状态: Q = { S, B, H },T = { a, b }, q0 = S, F = { H }

构造转换函数δ

每个产生式都对应一个δ

对 S–>aB,有 δ(S,a) = {B}

对 B–>aB,有 δ(B,a) = {B}

对 B–>bS,有 δ(B,b) = {S}

对 B–>a, 有 δ(B,a) = {H}

注意

构造δ时,只有在形如S–>aB时能使用,即右边不能超过两个字母表中字母。如果出现S–>abB,则必须新构造一个状态,使得S–>aC, C–>bB.

3.9-3.10右线性语言的性质

DFA极小化

等价状态

DFA M = ( Q , T , δ , q0 , F ) , 对于任意两个状态q1q2∈Q和每个w∈T*,若有:(q1 , w)|-*(q,ε)<==>(q1 , w)|-*(q,ε)且q∈F,则称q1与q2等价,记作q1≡q2

不可达状态

不存在任何w∈T*,能够使(q0 , w)|-*(q,ε),则称 q∈Q 为不可达状态

最小化

若DFA M不存在互为等价状态和不可达状态,则称 DFA M 为最小化的

最小化算法–填表法
确定不可达状态

将不可达状态删除

区别终态

终态与非终态不可能为等价状态

合并等价态

划分结果时,互为等价态的状态集是用打大括号括起来,最后得出新的状态集合时,每个等价态只用一个状态表示,最后的状态集合每个状态都用中括号括起来

例子
在这里插入图片描述

在这里插入图片描述

泵浦定理

设L是正则集,存在常数K,对字符串w∈L且 | w | >= n,则 w 可以写成 w1w0w2 ,其中 | w1w0 | <= n,| w0 | > 0,对于所有的 i >= 0 ,有 w1w0iw2∈L。//所以 w0 一定是在字符串的前n个字符中找。

例1

求证L={ak| k >= 1}不是正则集

回答规范

假设L是正则集,取足够大的整数n,w = an。有| w |=| w1w0w2 | = n平方 >= n。

因为 | w1w2 | <= n,| w0 | > 0,若取 i = 2,则 的情况为| w1w0w0w2 |=| w |+| w0 |, | w | = n平方, 0 < | w0 | <= n, 所以 n平方 < | w | + | w0 | <= n平方+n < (n+1)平方,所以不满足w = a的n2次方(串长不是整数平方),所以与假设冲突。

像这个例子是使用了类似于逻辑归纳法的方式来进行反证的。看下一个例子

例2

L={ w | w中0和1的个数相等 }不是正则集

在证明这个L时,我们选取了 0n1n这样一个特殊条件来进行判断,在判断不是正则集后即可将L全部否定。

右线性语言的封闭性

L1和L2是右线性语言,则LI∪L2,L1L2,L1*,L1的补集(就是在L1上面画横杠)L1∩L2都是右线性语言。

双向有限自动机

读入一个字符以后,读头可以:左移右移不动

形式定义:2DFA M = ( Q , T , σ , q0 , F )

设有w1qw2 w1– 已输入串 q–当前状态 w2–待输入串

σ(q,am+1)=(p,R)//R说明右移 格局描述:a1 a2 … am q am+1… |- a1 a2 … am am+1 q am+2

σ(q,am+1)=(p,L)//L说明右移 格局描述:a1 a2 … am q am+1… |- a1 a2 … am-1 q am

2DFA 接受的字符串集合:{w | q0w |-* wq , q∈F }

确定的双向有限自动机

不能不动

有输出的有限自动机

米兰机 摩尔机

定义: 输出字符与输入字符及状态有关 输出字符仅与状态有关

形式定义: (Q , T , R , σ , g , q0)

​ T 有限输入字母表 R 有限输出字母表 σ 转换函数 Q×T–>Q q0 初始状态

​ g 输出函数 Q×T–>R g 输出函数 Q–>R

在这里插入图片描述


https://www.fengoutiyan.com/post/14819.html

相关文章:

  • 自动机和形式语言
  • 形式语言与自动机导论
  • 形式语言与自动机理论引论答案
  • 形式语言与自动机考试
  • 形式语言学与自动机原理
  • 自动机理论
  • 形式语言与自动机理论
  • 形式语言与自动机难吗
  • 鏡像模式如何設置在哪,圖片鏡像操作
  • 什么軟件可以把圖片鏡像翻轉,C#圖片處理 解決左右鏡像相反(旋轉圖片)
  • 手機照片鏡像翻轉,C#圖像鏡像
  • 視頻鏡像翻轉軟件,python圖片鏡像翻轉_python中鏡像實現方法
  • 什么軟件可以把圖片鏡像翻轉,利用PS實現圖片的鏡像處理
  • 照片鏡像翻轉app,java實現圖片鏡像翻轉
  • 什么軟件可以把圖片鏡像翻轉,python圖片鏡像翻轉_python圖像處理之鏡像實現方法
  • matlab下載,matlab如何鏡像處理圖片,matlab實現圖像鏡像
  • 圖片鏡像翻轉,MATLAB:鏡像圖片
  • 鏡像翻轉圖片的軟件,圖像處理:實現圖片鏡像(基于python)
  • canvas可畫,JavaScript - canvas - 鏡像圖片
  • 圖片鏡像翻轉,UGUI優化:使用鏡像圖片
  • Codeforces,CodeForces 1253C
  • MySQL下載安裝,Mysql ERROR: 1253 解決方法
  • 勝利大逃亡英雄逃亡方案,HDU - 1253 勝利大逃亡 BFS
  • 大一c語言期末考試試題及答案匯總,電大計算機C語言1253,1253《C語言程序設計》電大期末精彩試題及其問題詳解
  • lu求解線性方程組,P1253 [yLOI2018] 扶蘇的問題 (線段樹)
  • c語言程序設計基礎題庫,1253號C語言程序設計試題,2016年1月試卷號1253C語言程序設計A.pdf
  • 信奧賽一本通官網,【信奧賽一本通】1253:抓住那頭牛(詳細代碼)
  • c語言程序設計1253,1253c語言程序設計a(2010年1月)
  • 勝利大逃亡英雄逃亡方案,BFS——1253 勝利大逃亡
  • 直流電壓測量模塊,IM1253B交直流電能計量模塊(艾銳達光電)
  • c語言程序設計第三版課后答案,【渝粵題庫】國家開放大學2021春1253C語言程序設計答案
  • 18轉換為二進制,1253. 將數字轉換為16進制
  • light-emitting diode,LightOJ-1253 Misere Nim
  • masterroyale魔改版,1253 Dungeon Master
  • codeformer官網中文版,codeforces.1253 B
  • c語言程序設計考研真題及答案,2020C語言程序設計1253,1253計算機科學與技術專業C語言程序設計A科目2020年09月國家開 放大學(中央廣播電視大學)
  • c語言程序設計基礎題庫,1253本科2016c語言程序設計試題,1253電大《C語言程序設計A》試題和答案200901
  • 肇事逃逸車輛無法聯系到車主怎么辦,1253尋找肇事司機