Last updated on
NFA 转 DFA
NFA
δ(p,0)={q}δ(p,1)=Θδ(q,0)={q}δ(q,1)={q,r}δ(r,0)=Θδ(r,1)=Θ
DFA
δ((q,r),0)={q}δ((q,r),1)={q,r}
ϵ NFA 转 无 ϵ NFA
ϵ-闭包:每个状态的 ϵ-闭包定义为此状态
仅接受空串能够到达的状态的集合(包括该状态自身)。
δ(q,a)=ϵ闭包(δ(q,a))
由 DFA 构造正则表达式
状态消去法:消去状态,让转移条件是正则表达式。
DFA 的化简
状态等价:两个状态接受相同的串能在最后达到同一终止状态,
则两状态等价。
填表法
-
按照非终结符和终结符画出第一批不等价状态
-
如果两个状态能通过相同的输入到达两个不等价状态,
则这两个状态也不等价
-
重复第 2 步,最后剩下的几组即为等价状态,将每组分别写为
新的状态,如:[a, b]
有输出的有限自动机
米兰机
“输出在边上“
摩尔机
“输出在状态节点上”
从摩尔机构造等价米兰机
“把输出从节点按照箭头反方向写到边上”
泵引理
定理:设 L 是正则集,存在常数 n,
对字符串 ω∈L 且 ∣ω∣≥n,
则 ω 可以写成 ω0ω1ω2,
其中 ∣ω1ω0∣≤n, ∣ω0∣>0,
且对所有的 i≥0 有 ω1ω0iω2∈L。
用泵引理证明某个语言不是正则语言
证明方法:反证法。假设这个语言是正则语言,使用泵浦引理。
如果发现了某个i使循环体循环i次之后得到的串不满足语言要求,
则这个语言不是正则语言
(因为正则语言循环体循环任意次都满足要求)。