语法推理的局部搜索算法
1. 预备知识
为了让读者理解相关符号,这里先介绍一些关于自动机的知识。构建最小确定性有限自动机(DFA)的过程基于以下定义:对于每个集合 $X \subset \Sigma^ $,都关联一个确定性自动机 $A(X)$。其状态集 $Q(X) = {w^{-1}X: w \in \Sigma^ }$,初始状态是 $X$,最终状态集 $F(X) = {S \in Q(X): \epsilon \in S}$,转移函数 $\delta(S, a) = a^{-1}S$,$A(X)$ 是 $X$ 的最小自动机。
构建最小 DFA 的递归算法如下:
def build_minDFA(X):
Q = {X: s}
if epsilon in X:
F.add(s)
p = s
s = s + 1
for a in Sigma:
U = inverse(a, X)
if U:
if U in Q:
delta(p, a) = Q[U]
else:
delta(p, a) = build_minDFA(U)
return p
假设单词是随机的,该算法的平均运行时间 $T$ 可以这样评估:设 $n$ 是 $X$ 的基数,$k$ 是 $X$ 中最长单词的长度,$m$ 是 $\Sigma$ 中符号的数量。第 1 - 5 行的指令可以在 $O(kn)$ 时
超级会员免费看
订阅专栏 解锁全文
17

被折叠的 条评论
为什么被折叠?



