形式语言与自动机之语言识别机器——有穷状态自动机
2012-06-28 08:35
288 查看
有穷状态自动机的物理模型
![](http://my.csdn.net/uploads/201206/24/1340530512_5171.png)
有穷状态自动机(finite automaton,FA)
M=(Q,∑,δ,q0,F)
Q——状态的非空有穷集合。"q∈Q,q称为M的一个状态(state)。
∑——输入字母表(Input alphabet)。输入字符串都是∑上的字符串。
q0——q0∈Q,是M的开始状态(initial state),也可叫做初始状态或者启动状态。
δ——状态转移函数(transition function),有时候又叫做状态转换函数或者移动函数。δ:Q×∑®Q,对"(q,a)∈Q×∑,δ(q,a)=p表示:M在状态q读入字符a,将状态变成p,并将读头向右移动一个带方格而指向输入字符串的下一个字符。
F——FÍQ,是M的终止状态(final state)集合。"q∈F,q称为M的终止状态,又称为接受状态(accept state)。
下面是一个有穷状态自动机
M2=({q0,q1,q2,q3},{0,1,2},δ2,q0,{q2})
δ2(q0,0)= q1,δ2(q1,0)= q2
δ2(q2,0)= q1,δ2(q3,0)= q3
δ2(q0,1)= q3,δ2(q1,1)= q3
δ2(q2,1)= q3,δ2(q3,1)= q3
δ2(q0,2)= q3,δ2(q1,2)= q3
δ2(q2,2)= q3,δ2(q3,2)= q3
![](http://my.csdn.net/uploads/201206/24/1340530624_8810.gif)
确定的有穷状态自动机
由于对于任意的q∈Q,a∈∑,δ(q,a)均有确定的值,所以,将这种FA称为确定的有穷状态自动机(deterministic
finite automaton,DFA)
例1:构造一个DFA,它接受的语言为{x000y|x,y∈{0,1}*}
q0——M的启动状态;
q1——M读到了一个0,这个0可能是子串“000”的第1个0;
q2——M在q1后紧接着又读到了一个0,这个0可能是子串“000”的第2个0;
q3——M在q2后紧接着又读到了一个0,发现输入字符串含有子串“000”;因此,这个状态应该是终止状态。
δ(q0,1)= q0——M在q0读到了一个1,它需要继续在q0 “等待”可能是子串“000”的第1个0的输入字符0;
δ(q1,1)= q0——M在刚刚读到了一个0后,读到了一个1,表明在读入这个1之前所读入的0并不是子串“000”的第1个0,因此,M需要重新回到状态q0,以寻找子串“000”的第1个0;
δ(q2,1)= q0——M在刚刚发现了00后,读到了一个1,表明在读入这个1之前所读入的00并不是子串“000”的前两个0,因此,M需要重新回到状态q0,以寻找子串“000”的第1个0;
δ(q3,0)= q3——M找到了子串“000”,只用读入该串的剩余部分。
δ(q3,1)= q3——M找到了子串“000”,只用读入该串的剩余部分。
M=({q0,q1,q2,q3},{0,1},{ (q0,0)= q1,δ(q1,0)= q2,δ(q2,0)= q3,δ(q0,1)= q0,δ(q1,1)= q0,δ(q2,1)= q0,δ(q3,0)= q3,δ(q3,1)= q3},q0,{q3})
![](http://my.csdn.net/uploads/201206/24/1340530917_5496.png)
DFA图:
![](http://my.csdn.net/uploads/201206/24/1340530694_7421.gif)
不确定的有穷状态自动机(non-deterministic finite automaton ,NFA)
M是一个五元组
M=(Q,∑,δ,q0,F)
Q、∑、q0、F的意义同DFA。
δ:Q×∑®2Q,对"(q,a)∈Q×∑,δ(q,a)=
{p1,p2,…,pm}表示M在状态q读入字符a,可以选择地将状态变成p1、或者p2、…、或者pm,并将读头向右移动一个带方格而指向输入字符串的下一个字符。
接受{x|x∈{0,1}*,且x含有子串00或11}的NFA对应的移动函数定义表。
![](http://my.csdn.net/uploads/201206/24/1340530959_6941.png)
NFA状态函数表
![](http://my.csdn.net/uploads/201206/24/1340531023_8021.png)
NFA和DFA之间是可以相互转换的:
例 2将所示的NFA对应的DFA
![](http://my.csdn.net/uploads/201206/24/1340530959_6941.png)
NFA的
![](http://my.csdn.net/uploads/201206/24/1340531110_8330.png)
![](http://my.csdn.net/uploads/201206/24/1340531132_1278.png)
带空移动的不确定的有穷状态自动机(non-deterministic finite automaton with ε-moves,ε-NFA)
ε-NFA转换为NFA
![](http://my.csdn.net/uploads/201206/24/1340531194_8098.png)
![](http://my.csdn.net/uploads/201206/24/1340531212_8356.png)
转换得到的NFA
![](http://my.csdn.net/uploads/201206/24/1340530512_5171.png)
有穷状态自动机(finite automaton,FA)
M=(Q,∑,δ,q0,F)
Q——状态的非空有穷集合。"q∈Q,q称为M的一个状态(state)。
∑——输入字母表(Input alphabet)。输入字符串都是∑上的字符串。
q0——q0∈Q,是M的开始状态(initial state),也可叫做初始状态或者启动状态。
δ——状态转移函数(transition function),有时候又叫做状态转换函数或者移动函数。δ:Q×∑®Q,对"(q,a)∈Q×∑,δ(q,a)=p表示:M在状态q读入字符a,将状态变成p,并将读头向右移动一个带方格而指向输入字符串的下一个字符。
F——FÍQ,是M的终止状态(final state)集合。"q∈F,q称为M的终止状态,又称为接受状态(accept state)。
下面是一个有穷状态自动机
M2=({q0,q1,q2,q3},{0,1,2},δ2,q0,{q2})
δ2(q0,0)= q1,δ2(q1,0)= q2
δ2(q2,0)= q1,δ2(q3,0)= q3
δ2(q0,1)= q3,δ2(q1,1)= q3
δ2(q2,1)= q3,δ2(q3,1)= q3
δ2(q0,2)= q3,δ2(q1,2)= q3
δ2(q2,2)= q3,δ2(q3,2)= q3
![](http://my.csdn.net/uploads/201206/24/1340530624_8810.gif)
确定的有穷状态自动机
由于对于任意的q∈Q,a∈∑,δ(q,a)均有确定的值,所以,将这种FA称为确定的有穷状态自动机(deterministic
finite automaton,DFA)
例1:构造一个DFA,它接受的语言为{x000y|x,y∈{0,1}*}
q0——M的启动状态;
q1——M读到了一个0,这个0可能是子串“000”的第1个0;
q2——M在q1后紧接着又读到了一个0,这个0可能是子串“000”的第2个0;
q3——M在q2后紧接着又读到了一个0,发现输入字符串含有子串“000”;因此,这个状态应该是终止状态。
δ(q0,1)= q0——M在q0读到了一个1,它需要继续在q0 “等待”可能是子串“000”的第1个0的输入字符0;
δ(q1,1)= q0——M在刚刚读到了一个0后,读到了一个1,表明在读入这个1之前所读入的0并不是子串“000”的第1个0,因此,M需要重新回到状态q0,以寻找子串“000”的第1个0;
δ(q2,1)= q0——M在刚刚发现了00后,读到了一个1,表明在读入这个1之前所读入的00并不是子串“000”的前两个0,因此,M需要重新回到状态q0,以寻找子串“000”的第1个0;
δ(q3,0)= q3——M找到了子串“000”,只用读入该串的剩余部分。
δ(q3,1)= q3——M找到了子串“000”,只用读入该串的剩余部分。
M=({q0,q1,q2,q3},{0,1},{ (q0,0)= q1,δ(q1,0)= q2,δ(q2,0)= q3,δ(q0,1)= q0,δ(q1,1)= q0,δ(q2,1)= q0,δ(q3,0)= q3,δ(q3,1)= q3},q0,{q3})
![](http://my.csdn.net/uploads/201206/24/1340530917_5496.png)
DFA图:
![](http://my.csdn.net/uploads/201206/24/1340530694_7421.gif)
不确定的有穷状态自动机(non-deterministic finite automaton ,NFA)
M是一个五元组
M=(Q,∑,δ,q0,F)
Q、∑、q0、F的意义同DFA。
δ:Q×∑®2Q,对"(q,a)∈Q×∑,δ(q,a)=
{p1,p2,…,pm}表示M在状态q读入字符a,可以选择地将状态变成p1、或者p2、…、或者pm,并将读头向右移动一个带方格而指向输入字符串的下一个字符。
接受{x|x∈{0,1}*,且x含有子串00或11}的NFA对应的移动函数定义表。
![](http://my.csdn.net/uploads/201206/24/1340530959_6941.png)
NFA状态函数表
![](http://my.csdn.net/uploads/201206/24/1340531023_8021.png)
NFA和DFA之间是可以相互转换的:
例 2将所示的NFA对应的DFA
![](http://my.csdn.net/uploads/201206/24/1340530959_6941.png)
NFA的
![](http://my.csdn.net/uploads/201206/24/1340531110_8330.png)
![](http://my.csdn.net/uploads/201206/24/1340531132_1278.png)
带空移动的不确定的有穷状态自动机(non-deterministic finite automaton with ε-moves,ε-NFA)
ε-NFA转换为NFA
![](http://my.csdn.net/uploads/201206/24/1340531194_8098.png)
![](http://my.csdn.net/uploads/201206/24/1340531212_8356.png)
转换得到的NFA
![](http://my.csdn.net/uploads/201206/24/1340531262_7766.png)
相关文章推荐
- 形式语言与自动机之语言识别机器——下推自动机
- nlp-形式语言与自动机-ch07-自动分词、命名实体识别与词性标注
- nlp-形式语言与自动机-ch03
- nlp-形式语言与自动机-ch10-统计机器翻译
- nlp-形式语言与自动机-ch06-概率图模型
- 形式语言与自动机理论——上下无关语言
- 自然语言理解——NLP中的形式语言自动机
- 形式语言与自动机 --- 上下文无关语言 & 下推自动机
- 读《统计自然语言处理》——形式语言与自动机【未看完】
- Windows操作系统为什么能够识别不同的CPU所用的机器语言???
- 形式语言与状态机
- 计算理论研习资料搜集一——自动机与形式语言
- 有穷状态自动机
- 形式语言与自动机笔记
- 形式语言与自动机
- 形式语言与自动机中的7大算法
- 形式语言与自动机_笔记整理(三)_图灵机与递归语言、递归可枚举语言
- nlp-形式语言与自动机-ch08-句法分析
- 构造该正规式的有穷状态自动机
- 不看形式语言与自动机了