4.1 证明语言的非正则性
“泵引理”是正则语言的一个必要条件: 如果一个语言是正则的, 则一定满足泵引理.
4.1.1 正则语言的泵引理
定理 5 (正则语言的泵引理 (Pumping Lemma)). .
如果语言 L 是正则的, 那么存在正整数 N, 它只依赖于 L, 对 ∀w ∈ L, 只要 |w|≥ N, 就可以将 w 分为三部分 w = xyz 满足: 1. y 6= ε (|y| > 0); 2. |xy|≤ N; 3. ∀k ≥ 0, xykz ∈ L
4.1.2 泵引理的应用 **
→证明语言非正则!!!**
4.1.3 泵引理只是必要条件
即“正则 ⇒ 泵引理成立”, 所以“¬ 泵引理成立 ⇒¬ 正则”.
只能用来证明某个语言非正则!
4.2.1 并/连接/闭包
4.2.2 补
定理 7 (补运算封闭性). 如果 L 是 Σ 上的正则语言, 那么 L = Σ∗−L 也是正则的.
注意 使用这种方法求正则语言的补时, DFA 不能有缺失状态.
定理8
定理 9 (交运算封闭性)
如果 L 和 M 是正则语言, 那么 L∩M 也是正则语言.
证明:
定理 10 (差运算封闭性).
如果 L 和 M 都是正则语言, 那么 L−M 也是正则的
证明: L−M = L∩M.
定理 12 (同态的封闭性).
若 L 是字母表 Σ 上的正则语言, h 是 Σ 上的同态, 则 h(L) 也是正 则的.
• 当 E = F + G 时:
h(L(F + G))
= h(L(F)∪L(G))
= h(L(F))∪h(L(G))
= L(h(F))∪L(h(G))
= L(h(F) + h(G))
= L(h(F + G))
• 当 E = FG 时:
h(L(E))
= h(L(F)L(G))
= h(L(F))h(L(G))
= L(h(F))L(h(G))
= L(h(F)h(G))
= L(h(FG))
= L(h(E))
逆同态 (Inverse homomorphism)
定义. 若 h 是字母表 Σ 到 Γ 的同态, 且 L 是 Γ 上的语言, 那么使 h(w) ∈ L 的 w (w ∈ Σ∗) 的集合, 称为语言 L 的 h 逆, 记为 h−1(L), 即 h−1(L) = {w ∈ Σ∗ | h(w) ∈ L}.
定理 13 (逆同态的封闭性).
如果 h 是字母表 Σ 到 Γ 的同态, L 是 Γ 上的正则语言, 那么 h−1(L) 也是正则语言.
正则语言, 或任何语言, 典型的 3 个判定问题:
4.3.1 空性, 有穷性和无穷性
定理 14. 具有 n 个状态的有穷自动机 M 接受的集合 S:
4. S 是非空的, 当且仅当 M 接受某个长度小于 n 的串;
5. S 是无穷的, 当且仅当 M 接受某个长度为 m 的串, n ≤ m < 2n.
所以,对于正则语言:
• 存在算法, 判断其是否为空, 只需检查全部长度小于 n 的串;
• 存在算法, 判断其是否无穷, 只需检查全部长度由 n 到 2n−1 的串
4.3.2 等价性
证明:
4.4.1 DFA 状态的等价性
定义.
DFA A = (Q,Σ,δ,q0,F) 中两个状态 p 和 q, 对∀w ∈ Σ∗ : ˆ δ(p,w) ∈ F ⇔ ˆ δ(q,w) ∈ F, 则称这两个状态是等价的, 否则称为可区分的.
• 等价性只要求 ˆ δ(p,w) 和 ˆ δ(q,w) 同时在或不在 F 中, 而不必是相同状态
4.4.2 填表算法与 DFA 最小化
填表算法
递归寻找 DFA 中全部的可区分状态对:
定理 16. 如果填表算法不能区分两个状态, 则这两个状态是等价的
DFA 最小化
根据等价状态进行分组,后进行简化