带不带空边(ε边)的NFA间具有等价性
根据RE(正则表达式)构造NFA ε对应的NFA
字母表Σ中符号a对应的NFA
案例:
NFA转换为DFA NFA与DFA的对比
DFA与NFA的等价性
move运算(和字母表(输入字符)有关)
千万记住,move(I,a)运算的结果 J a J_a Ja?只是一个中间结果,想要得到转换表中的 I a I_a Ia?,还必须要再次执行ε运算对于其他字母表中的字母(例如b,c,d,…),也是类似的流程
字母状态转换表中的Ia,Ib,Ic,…取决于文法的字母表总符号的个数
一个容易出错/疏漏的地方在于,被执行ε运算的状态(集)本身也要加入到ε计算的结果集合中,
或者说,本身集合中的元素至少要加入到ε-的结果集合中)(因为,我们允许经过的ε的弧数为0)
状态转换表
转换表实例1
DFA是NFA的特例
例子 2 没有ε边的
文章插图
当然,新的状态集合来自于状态转换表中的非空状态集,可以单独将他们整理出来,得到以下的DFA状态转换图
从带有ε-边的NFA到DFA的转换
需要注意的是,终止状态的判断,转换为DFA的每次新产生的一个状态都需要判断该状态(集合)中是否含有NFA的终止态(之一)
例子3: 识别无符号数的DFA
分析完输入符号集后,将状态集合中的每个状态分别尝试这些可能的输入,在最多的情况下,产生的新状态集可达到x*y个
容易出错的两个方面
例子4
例子5
可以围绕这FA的各个状态节点,将出边标出
回顾转移函数的定义
收获五元组
【编译原理_NFA->DFA 子集法】在计算子集的时候,可以将过程用表格的形式记录,这会方便于整理转换函数的总结
- 投影直角三角形法求空间线段实长
- Python with 工作原理、装饰器、回收机制、内存管理机制、拷贝、作用域等
- python3编译成exe运行_python3
- 九 《嵌入式系统原理与应用》 | ADC 知识梳理
- 信息安全:VPN 技术原理与应用.
- VPN是什么、类型、使用场景、工作原理
- 嵌入式系统原理与应用入门
- android----R8混淆编译
- 《欧几里德算法》原理及应用
- 华为HCIA进阶笔记:DHCPv6 原理与配置