Lecture 7
DFA 的优化¶
Defintion
设 \(D = (Q,\Sigma,\delta,q_0,F)\),定义 \(Q\) 上的关系
\[p \sim q \Leftrightarrow \left( \forall w \in \Sigma^* \delta^*(p, w) \in F \Leftrightarrow \delta^*(q,w) \in F \right)\]
可以验证,这个关系为等价关系。
我们在这个 DFA 状态集关于等价关系的商集上构造一个 DFA。
Filling table¶
- 若 \(p\) 为终态,\(q\) 为非终态,则标记 \(p\) 和 \(q\) 为可区别的
- 设 \(p\) 和 \(q\) 为可区别的,若状态 \(r\) 和 \(s\) 通过输入符号 \(a\) 可以分别转移到 \(p\) 和 \(q\),则 \(r\) 和 \(s\) 也标记为可区别的。
最优的 DFA¶
DFA 的优化
- 删除从初态不可到达的状态及与其相关的边,设所得到的 DFA 为 \(A = (Q ,\Sigma,\delta,q_0,F)\)
- 使用填表法找出所有等价的状态偶对
- 根据 2 的计算结果找出状态集合的商集,作为新的状态集合
Theorem
通过上述算法构造的 DFA 是最优的。
证明思路大概是反设有一个更优的自动机,在构造的并自动机之中。
- 初态是不可区分的
- 若两个状态是不可区分的,则它们的后继状态也是不可区分的
- \(M\)(原来的自动机)的任一状态至少与 \(N\)(新的自动机)的一个状态是不可区分的
再由鸽巢原理得到矛盾。
CFG 与 CFL¶
Cfg
上下文无关文法定义为一个四元组 \(G = (V,T,S,P)\)
分别表示:变量、终结符、开始变量、产生式
规约和推导¶
- 自底向上的推理,称为递归推理,递归推理的过程也称为规约
- 自顶向下的推理,称为推导
Defintion
- 最左推导:推导过程的每一步总是替换出现在最左边的非终结符,用 \(\Overrightarrow{lm}\)表示
- 最右推导:推导过程的每一步总是替换出现在最右边的非终结符,用\(\Overrightarrow{rm}\)表示
- 设 \(G = (V,T,S,P)\) 是一个 CFG,\(\alpha \in \lbrace V \cup T \rbrace^*\) 为 \(G\) 的一个句型,若 \(\alpha \in T^*\) 称 \(\alpha\) 为一个句子
语法分析树¶
对于一个 CFG \(G = (V,T,S,P)\),语法分析树满足下列条件
- 每个内部结点由一个非终结符标记
- 每个叶节点或为一个变量,或为一个终结符,或由 \(\epsilon\) 来标记,当标记为 \(\epsilon\) 时,它是其父节点唯一的子节点
- 若一个内部结点标记为 \(A\),而其子节点从左至右分别标记为 \(X_1,X_2\cdots X_k\),则 \(A \to X_1X_2\cdots X_k\) 为 \(P\) 中的一个产生式。
将语法分析树中的每个叶节点按从左至右的次序连接起来,得到一个 \(\lbrace V \cup T\rbrace^T\) 中的字符串,称为该语法树的产物。
\(G\) 的每个句型都是某个根结点为 \(S\) 的分析树的产物;这些分析树中,有些树的产物为句子,所有这些分析树的产物构成了 \(G\) 的语言
规约推导和语法分析树之间的关系¶
Theorem
设 CFG \(G = (V,T,S,P)\),TFAE
- 字符串 \(w \in T^*\) 可以规约到非终结符 \(A\)
- \(A\) 可以推导到 \(w\)
- \(A\) 可以通过最左推导推导到 \(w\)
- \(A\) 可以通过最右推导推导到 \(w\)
- 存在一个根结点为 \(A\) 的语法分析树,其产物为 \(w\)