惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
WordPress大学
WordPress大学
云风的 BLOG
云风的 BLOG
Stack Overflow Blog
Stack Overflow Blog
MongoDB | Blog
MongoDB | Blog
腾讯CDC
V
V2EX
Martin Fowler
Martin Fowler
A
About on SuperTechFans
大猫的无限游戏
大猫的无限游戏
Blog — PlanetScale
Blog — PlanetScale
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
酷 壳 – CoolShell
酷 壳 – CoolShell
C
Check Point Blog
博客园 - 【当耐特】
Cisco Talos Blog
Cisco Talos Blog
The Hacker News
The Hacker News
K
Kaspersky official blog
Security Latest
Security Latest
H
Help Net Security
博客园_首页
美团技术团队
Spread Privacy
Spread Privacy
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
S
SegmentFault 最新的问题
G
Google Developers Blog
NISL@THU
NISL@THU
爱范儿
爱范儿
I
Intezer
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
N
News and Events Feed by Topic
P
Privacy International News Feed
Application and Cybersecurity Blog
Application and Cybersecurity Blog
S
Security @ Cisco Blogs
Schneier on Security
Schneier on Security
雷峰网
雷峰网
人人都是产品经理
人人都是产品经理
V
Vulnerabilities – Threatpost
W
WeLiveSecurity
P
Palo Alto Networks Blog
G
GRAHAM CLULEY
Hacker News: Ask HN
Hacker News: Ask HN
I
InfoQ
The Cloudflare Blog
F
Full Disclosure
SecWiki News
SecWiki News
宝玉的分享
宝玉的分享
N
Netflix TechBlog - Medium

博客园 - 欢乐豆123

软件设计师考试 - 排序算法 哈夫曼树以及哈夫曼编码 软件设计师案例题型 - DFD(数据流图) 软件设计师考试 - 二分查找 软件设计师考试 - Gantt图与PERT图(项目管理) 软件设计师考试 - 数据表示(原码、反码、补码、移码) 软件设计师考试 - 上午题型分析 软件设计师考试 - 下午题型分析 软件设计师考试-应用技术 内存溢出问题 常见的算法类型 排序算法的介绍 微信生态梳理 海明码介绍 Elasticsearch 实战:基于 function_score 的搜索与权重排序 Nexus的简单介绍以及如何上传自定义包 设计模式-桥接模式(Bridge Pattern) 设计模式简介 jmeter压测 sdkman-管理多个版本的JDK SpringBoot中使用Aop统一拦截MQ消息处理 项目管理流程以及规范 Java-泛型的使用
软件设计师考试 - 有限自动机
欢乐豆123 · 2026-06-26 · via 博客园 - 欢乐豆123

软件设计师考试 -  有限自动机

   在程序语言的编译过程中,有限自动机基本是每次必考的内容。

   一、编译过程

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

img_107

 二、有限自动机

 如下图:

image 

 说明:双圈代表的是结束点,表示“出口”

 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):当一个状态面对一个输入符号的时候,所转换到的是一个唯一确定的状态。

image

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

image

  3. NFA 跟 DFA 区别

  DFA(确定有限自动机)的特点是: 对任意状态 q 和输入符号 a,都存在唯一确定的下一状态。

  而 NFA(不确定有限自动机)的特点是:对任意状态 q 和输入符号 a,其转移结果是一个状态集合,例如 δ(q, a) = {q1, q2},即可能有多个下一状态,甚至没有下一状态(也可以包含 ε 空转移)。

  四、常考题型

  1. 给出字符串,根据给定的有限自动机判断是否能推导出来

  2. 给出有限自动机,判断可识别的字符串

  如下图:

img_117

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