首页 > 编程知识 正文

自动机理论是词法分析的理论基础,有穷自动机进行词法分析实验

时间:2023-05-04 04:11:26 阅读:189940 作者:338

举一个例子

在上图中,

sigma表示机器人能识别的所有不同字符的集合。 =a,b Sigma={a,b }=a,b

s是状态集,这里只有三个状态,所以s={ 0,1,2 }

q 0 q_0 q0是初始状态,一般约定只有单向箭头的一边所指的节点是初始状态。 q 0 q_0 q0 =0

f是结束状态或接收状态,在本图中被表示为双圈。 f={1}{2}

{(q0,a ) gt; q 1,) q 0,b ) gt; q 0,) q 1,a ) gt; q 2,) q 1,b ) gt; 问题1,(问题2,a )

− > q 2 , ( q 2 , b ) − > q 2 } lbrace (q_0, a) -> q_1, (q_0, b) -> q_0, (q_1, a) -> q_2, (q_1, b) -> q_1, (q_2, a) -> q_2, (q_2, b) -> q_2 rbrace {(q0​,a)−>q1​,(q0​,b)−>q0​,(q1​,a)−>q2​,(q1​,b)−>q1​,(q2​,a)−>q2​,(q2​,b)−>q2​}
是所有的映射构成的一个集合。

那么什么样的串可以被接受?接受的意思就是处于起始状态,给定一个输入串S,根据转移函数δ进行状态转移,最后到达了F总结状态,这样的串S就可以被接受。

再举个例子


转移函数:
{ ( q 0 , a ) − > { q 0 , q 1 } , lbrace (q_0, a) -> lbrace q_0, q_1rbrace, {(q0​,a)−>{q0​,q1​},
( q 0 , b ) − > { q 1 } , (q_0, b) -> lbrace q_1rbrace, (q0​,b)−>{q1​},
( q 1 , b ) − > { q 0 , q 1 } } (q_1, b) -> lbrace q_0, q_1rbrace rbrace (q1​,b)−>{q0​,q1​}}
对于存在一种状态,给定的一个字符的转移函数是不确定,可以得到一个集合,如上式中的第一个和第三个集合,我们称这样的状态机是非确定状态自动机(NFA)。如果转移函数所有的结果都是一个确定的值,是单集合元素,就像上一个例子一样,这样的状态机就是确实有限状态自动机(DFA)。

NFA 和 DFA 在接受的时候有很大的差别。

如该例中, q 0 q_0 q0​状态在a状态后可以得到 q 0 q_0 q0​或 q 1 q_1 q1​两种状态,如果是 q 0 q_0 q0​那就不能进入终结状态F,不能被接受,而选择 q 1 q_1 q1​时可以被接受。所以我们对NFA定义,只要在多种走法中最终有一种走法可以被接受就是可以被接受。所以该例可以被接受。

一般对于这种是否可以接受的判断,我们常常会先将 NFA 转化为 DFA 再进行判断。

NFA 和 DFA 的小结 确定状态有限自动机 DFA 对任意的字符,最多有一个状态可以转移 非确定的有限状态自动机 NFA 对任意的字符,有多余一个状态可以转移 DFA的实现


DFA其实是一个有向图,我们在这里用邻接矩阵对其进行了表示,并且终结符一般画上圈

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。