软件设计师考试 - 有限自动机
软件设计师考试 - 有限自动机
在程序语言的编译过程中,有限自动机基本是每次必考的内容。
一、编译过程
在编译原理中,确定有限自动机(DFA)是词法分析的核心工具。它就像一个严格的“导航员”,在字符的迷宫中为我们指引方向,帮助识别代码中的模式,比如变量名、数字或关键字。本文将从生活中的比喻入手,逐步深入到形式化定义和应用。

二、有限自动机
如下图:
说明:双圈代表的是结束点,表示“出口”
DFA 是一个五元组 M=(S,Σ,δ,S0,Z):
1) S 是一个有限集,每个元素为一个状态
2) Σ 是一个有穷字母表,每个元素为一个输入字符
3) δ 是转换函数:是一个单值对照
4) S0,属于S,是其唯一的初态
5) Z 是一个终态集(可空)
有限状态自动机可以形象地用状态转换图表示,设有限状态自动机:
DFA = ({S,A,B,C,f},{1,0},δ,S,{f}),
其中:
δ(S,0)=B,(S,1)=A, δ(A,0)=f,δ(A,1)=C, δ(B,0)=C,δ(B,1)=f, δ(C,0)=f, δ(C,1)=f
有限自动机能够识别的串:从初态出发可以到达终态且停留在终态。
三、DFA和NFA的区别
1. 确定的有限自动机(DFA):当一个状态面对一个输入符号的时候,所转换到的是一个唯一确定的状态。

2. 不确定的有限自动机(NFA):当一个状态面对一个输入符号的时候,它所转换到的可能不只一个状态,可以是一个状态集合。

3. NFA 跟 DFA 区别
DFA(确定有限自动机)的特点是: 对任意状态 q 和输入符号 a,都存在唯一确定的下一状态。
而 NFA(不确定有限自动机)的特点是:对任意状态 q 和输入符号 a,其转移结果是一个状态集合,例如 δ(q, a) = {q1, q2},即可能有多个下一状态,甚至没有下一状态(也可以包含 ε 空转移)。
四、常考题型
1. 给出字符串,根据给定的有限自动机判断是否能推导出来
2. 给出有限自动机,判断可识别的字符串
如下图:

参考链接:https://juejin.cn/post/7488917367918592040

浙公网安备 33010602011771号