1. Handout 4B: Solutions to Practice Problems

📜 原文
📖 逐步解释
∑ 公式拆解
💡 数值示例
⚠️ 易错点
📝 总结
🎯 存在目的
🧠 直觉心智模型
💭 直观想象

11. Handout 4B: Solutions to Practice Problems

1.1. 问题 1: 语言 $L_1$

11.1. $L_{1}=\left\{0^{n} 1^{m} \mid n \neq m\right\}$

📜 [原文1]

$L_{1}=\left\{0^{n} 1^{m} \mid n \neq m\right\}$。这可以通过所有三种方法证明是非正则的,尽管在这种情况下,泵引理是最复杂的,而其他方法更简单。

📖 [逐步解释]

这段话首先定义了一个语言 $L_1$。这个语言由一串 0 后面跟着一串 1 组成。它的核心约束条件是:0 的数量(表示为 $n$)不等于 1 的数量(表示为 $m$)。

然后,它提出了一个论点:语言 $L_1$ 是一个非正则语言正则语言是指可以用有限自动机(DFA 或 NFA)识别的语言。非正则语言则不能。直观地想,有限自动机的“记忆”是有限的,它无法记住一个任意大的数字。而要判断 $n$ 是否等于 $m$,机器需要精确地“计数”0 的数量,然后用这个计数值去比对 1 的数量。当 $n$ 和 $m$ 可以是任意大的数时,这超出了有限自动机的能力范围。

最后,这段话预告了将使用三种不同的数学工具来证明 $L_1$ 的非正则性

  1. 泵引理(Pumping Lemma):一个用于证明语言非正则的经典反证法工具。
  2. 正则语言的封闭性(Closure Properties):利用正则语言在某些运算(如交集并集补集)下是封闭的这一特性来构造矛盾
  3. Myhill-Nerode 定理:一个更强大、更根本的工具,通过考察语言的等价类数量来判断其是否正则

它还特别指出,对于 $L_1$ 这个特定的例子,泵引理的证明过程最为复杂,而另外两种方法则相对直接和简单。

💡 [数值示例]

让我们看几个字符串的例子来理解 $L_1$:

  • 示例 1 (属于 $L_1$): 字符串 00111。这里,0 的数量 $n=2$,1 的数量 $m=3$。因为 $2 \neq 3$,所以这个字符串属于 $L_1$。
  • 示例 2 (属于 $L_1$): 字符串 11。这里,0 的数量 $n=0$,1 的数量 $m=2$。因为 $0 \neq 2$,所以这个字符串属于 $L_1$。
  • 示例 3 (不属于 $L_1$): 字符串 0011。这里,0 的数量 $n=2$,1 的数量 $m=2$。因为 $n = m$,违反了 $n \neq m$ 的条件,所以这个字符串不属于 $L_1$。
  • 示例 4 (不属于 $L_1$): 字符串 0101。这个字符串的格式不是“一串 0 后面跟着一串 1”,它违反了 $0^n 1^m$ 的结构要求,所以它不属于 $L_1$(甚至不在我们考虑的范围内)。
  • 示例 5 (不属于 $L_1$): 空字符串 $\epsilon$。这里 $n=0, m=0$。因为 $n=m$,所以 $\epsilon \notin L_1$。
⚠️ [易错点]
  1. 格式错误: 学生常常忘记检查字符串的格式。$L_1$ 中的字符串必须是 $0^n 1^m$ 的形式,即所有的 0 必须出现在所有的 1 之前。像 10010 这样的字符串都不在 $L_1$ 中,因为它们的格式不对。
  2. 与 $\{0^n 1^n\}$ 的补集混淆: $L_1$ 并不是 $\{0^n 1^n \mid n \geq 0\}$ 这个著名非正则语言补集。$L_1$ 的全集是 $L_{all} = \{0^m 1^n \mid m, n \geq 0\}$。所以 $L_1$ 是 $L_{all}$ 中排除了 $n=m$ 情况的部分。而 $\{0^n 1^n\}$ 的补集(在 $\{0,1\}^*$ 中)则包含像 010 这样格式错误的字符串,但 $L_1$ 不包含。
  3. 边界情况:
  4. 当 $n=0$ 时,字符串是 $1^m$ ($m \neq 0$)。例如 1, 111 都在 $L_1$ 中。
  5. 当 $m=0$ 时,字符串是 $0^n$ ($n \neq 0$)。例如 0, 00 都在 $L_1$ 中。
  6. 空字符串 $\epsilon$ ($n=0, m=0$) 不在 $L_1$ 中。
📝 [总结]

本节介绍了待证明的语言 $L_1 = \{0^n 1^m \mid n \neq m\}$,并指出它是一个非正则语言。同时,它预告了将要使用的三种证明方法(泵引理封闭性Myhill-Nerode定理),并提示了泵引理在本例中的复杂性。

🎯 [存在目的]

这部分的存在是为了引入一个典型的非正则语言案例,并以此为载体,展示和对比不同的证明技术。它作为一个引子,为后续详细的数学证明铺平了道路,并引导读者思考不同证明方法的优劣和适用场景。

🧠 [直觉心智模型]

要判断一个字符串是否在 $L_1$ 中,我们需要一个计数器。当读到 0 时,计数器增加;当读到 1 时,计数器减少。如果读完字符串后,计数器的值不为零,则字符串在 $L_1$ 中。一个有限自动机的状态数量是有限的,它无法表示一个无限增长的计数值。因此,它无法处理任意大的 $n$ 和 $m$,也就无法可靠地判断 $n \neq m$。

💭 [直观想象]

想象一个天平,左边放 0,右边放 1。我们的任务是检查天平最后是否不平衡。我们有一堆 0 和一堆 1,必须先把所有的 0 都放上去,然后再把所有的 1 都放上去。一个有限自动机就像一个眼神不好、只有有限记忆力的人。如果只给他几个砝码(状态),他可以记住“左边比右边多/少 1 个或 2 个”。但如果给他成千上万个 0,他无法记住精确的数量,也就无法在之后放 1 的时候判断最终是否平衡。因此,他无法完成这个任务。

11.2. 泵引理证明

📜 [原文2]

泵引理证明:

首先,我们展示一种应用泵引理的错误方式(一次失败的尝试)。

给定 $p$ 是泵引理保证的泵长度,假设我们选择简单的字符串 $w=0^{p} 1^{p+1}$。

根据泵引理,我们可以将 $w$ 写为 $w=x y z$,其中:

  • 对于所有 $i \geq 0$,$x y^{i} z \in L_{1}$,
  • $|x y| \leq p$,
  • $|y|>0$(即 $y$ 是非空的,且只能由 0 组成,因为 $w$ 的前 $p$ 个字符全是 0)。

通过我们对 $w$ 的选择,我们知道对于某个 $k>0$,$y=0^{k}$。当我们对子串 $y$ 进行 $i$ 次泵送时,这会引入 $i-1$ 个额外的 $y$ 副本(因为原始单词已经包含了一个 $y$ 副本)。因此,字符串变为 $x y^{i} z=0^{p+k(i-1)} 1^{p+1}$。为了得出 $L_{1}$ 不是正则的结论,我们需要证明存在 $i$ 使得生成的字符串不在该语言中,即 $p+k(i-1)=p+1$。如果我们知道 $k=1$,我们可以选择 $i=2$。然而,我们不能假设 $k=1$ —— 我们只知道 $1 \leq k \leq p$。因此,如果例如 $k=2$,我们得到 $p+k(i-1) \neq p+1$(无论我们选择什么 $i$),所以该字符串仍然具有 $0^{n} 1^{m}$ 的形式且 $n \neq m$,这意味着它仍在语言中。

因此,泵送这个选择的字符串不会导致与泵引理产生矛盾,所以让我们尝试一个不同的字符串选择。

📖 [逐步解释]

这部分内容是一个教学性的演示,它展示了一个在使用泵引理时常见的错误。泵引理是一个反证法工具,其逻辑是:

  1. 假设语言 $L$ 是正则的。
  2. 那么,存在一个泵长度 $p$。
  3. 我们(证明者)选择一个足够长的字符串 $w \in L$ (长度 $|w| \ge p$)。
  4. 对手(泵引理)将 $w$ 分割成 $xyz$,并遵循三个规则:
    • $|xy| \le p$ (分割点在前部)
    • $|y| > 0$ (中间部分非空)
    • 对于所有 $i \ge 0$,$xy^iz \in L$ (可以任意“泵送”$y$)
  5. 我们的目标是,通过选择一个合适的 $i$(通常不是 1),使得泵送后的字符串 $xy^iz$ 在语言 $L$ 中,从而产生矛盾。如果能做到,就说明最初的假设是错的,$L$ 非正则

这段文字的精髓在于,它选择了一个看似合理的字符串 $w=0^p 1^{p+1}$,并展示了为什么这个选择是失败的。

  • 选择的字符串: $w=0^p 1^{p+1}$。这个字符串在 $L_1$ 中,因为 0 的数量 ($p$) 不等于 1 的数量 ($p+1$)。它的长度是 $2p+1$,也满足 $\ge p$ 的要求。
  • 对手的分割: 根据规则 $|xy| \le p$ 和 $w$ 的结构,xy 部分必须完全由 0 组成。又因为 $|y|>0$,$y$ 必须是至少一个 0,即 $y=0^k$ for $1 \le k \le p$。
  • 泵送: 泵送后的字符串是 $0^{p+(i-1)k}1^{p+1}$。
  • 寻找矛盾: 我们的目标是找到一个 $i \ge 0$ 使得泵送后的字符串在 $L_1$ 中。一个字符串不在 $L_1$ 中只有一种可能(在格式正确的前提下):0 的数量等于 1 的数量。所以,我们需要找到 $i$ 使得 $p+(i-1)k = p+1$。
  • 失败点: 这个方程化简为 $(i-1)k = 1$。因为 $i$ 和 $k$ 都必须是正整数,这个方程唯一的整数解是 $i-1=1$ 且 $k=1$,即 $i=2, k=1$。
  • 如果对手恰好选择 $k=1$ (即 $y='0'$),那么我们选择 $i=2$,泵出的字符串是 $0^{p+1}1^{p+1}$,0 和 1 的数量相等,不在 $L_1$ 中,我们就成功制造了矛盾
  • 但是,我们无法控制对手!对手可以选择任何满足 $1 \le k \le p$ 的 $k$。如果对手选择 $k=2$ 呢?方程就变成了 $(i-1)2 = 1$,这没有整数解 $i$。这意味着,如果 $k=2$,无论我们怎么泵送(选择任何 $i$),0 的数量将是 $p+2(i-1)$,这个数永远不可能等于 $p+1$。泵送后的字符串将永远在 $L_1$ 中,我们无法制造矛盾

因为我们必须找到一个对所有可能的分割都有效的矛盾,而对于 $w=0^p 1^{p+1}$,我们至少有一种分割(例如 $k=2$)无法导出矛盾,所以这次证明尝试失败了。

💡 [数值示例]
  • 示例 1 (失败的尝试): 假设泵长度 $p=4$。我们选择 $w=0^4 1^5$ (000011111)。这个字符串在 $L_1$ 中。
  • 对手可以将 $w$ 分割成 $x, y, z$。根据 $|xy| \le 4$ 和 $|y|>0$,$y$ 必须是 $0^k$ 且 $1 \le k \le 4$。
  • 如果对手选择 $y=0$ ($k=1$): $x=000, z=11111$。我们选择 $i=2$ 来泵送。$xy^2z = 000(0)^2 11111 = 0^5 1^5$。这个字符串有 5 个 0 和 5 个 1,不在 $L_1$ 中。矛盾
  • 但是,如果对手选择 $y=00$ ($k=2$): $x=00, z=0011111$。我们需要找到一个 $i$ 使得 0 的总数等于 5。泵送后的 0 的数量是 $4+(i-1)2$。方程是 $4+2(i-1)=5$,即 $2(i-1)=1$。$i-1=0.5$,$i=1.5$。这不是整数!我们找不到合适的 $i$ 来制造矛盾
  • 因为我们无法保证在对手的所有选择下都能制造矛盾,所以我们对 $w$ 的选择是错误的。
⚠️ [易错点]
  1. 误解“我选择”和“对手选择”: 使用泵引理就像一场游戏。我们(证明者)选择字符串 $w$,对手(引理)选择如何分割 $w$ (在规则内)。我们的策略必须对对手的所有合法选择都有效。在这个失败的例子中,我们的策略只对 $k=1$ 有效,对 $k=2$ 就无效了。
  2. 忘记 $k$ 是未知的: 我们不能假设 $y$ 的长度 $k$ 是某个特定值(比如 1)。我们只能利用 $1 \le |y| \le p$ 这个范围信息。
  3. 目标混乱: 我们的目标是泵出一个不在语言中的字符串。对于 $L_1$,这意味着要泵出一个 0 和 1 数量相等的字符串。
📝 [总结]

这部分通过一个具体的反例,生动地展示了在使用泵引leem时选择初始字符串 $w$ 的重要性。一个不明智的选择(如 $w=0^p 1^{p+1}$)可能导致无法在所有情况下都制造出矛盾,从而使证明失败。它强调了证明者必须考虑对手(引理)所有可能的合法分割。

🎯 [存在目的]

此处的目的不是为了证明,而是为了教学。它通过展示一个常见的错误,帮助学生更深刻地理解泵引理证明的对抗性本质,并强调了选择一个“好”的字符串 $w$ 的必要性。这个“好”的字符串应该具有某种结构,使得无论对手如何在前 $p$ 个字符内划分 $y$,我们都能通过泵送来破坏语言的属性。

🧠 [直觉心智模型]

我们想让天平平衡。我们有一个初始不平衡的天平($p$ 个 0 和 $p+1$ 个 1)。对手从左边的 0 中拿走一小把 $k$ 个($y=0^k$)。现在我们有能力把这一小把 0 加回去任意多次(泵送 $i$ 次)。我们的目标是通过加 0,让左边的总数等于右边的 $p+1$。如果对手拿走 $k=1$ 个,我们加一次($i=2$)就够了。但如果对手拿走 $k=2$ 个,我们无论加多少次($i$ 必须是整数),0 的总数都是偶数增量,永远无法从 $p$ 变成 $p+1$。我们的策略失败了。

💭 [直观想象]

想象你在玩一个游戏,目标是让一根绳子断掉。绳子 ($w$) 的初始状态是 $0^p1^{p+1}$。对手(引理)在绳子的前 $p$ 段(都是 0)中选择一小段 $y=0^k$ 作为“薄弱点”。你(证明者)可以通过复制这个薄弱点 $i$ 次来“拉伸”绳子。绳子断掉的条件是 0 的数量等于 1 的数量。如果你选择的绳子 $w=0^p1^{p+1}$,对手选了 $y=00$ ($k=2$) 作为薄弱点。你每次拉伸,增加的都是偶数个 0,0 的总数永远是 $p, p+2, p+4, ...$ 或者 $p-2, p-4, ...$。你永远无法让 0 的总数精确地等于 $p+1$。所以这条绳子,在这种情况下,你拉不断。你需要换一根初始设计得更好的绳子。


📜 [原文3]

相反,让我们选择字符串 $w=0^{p} 1^{p+p!}$。这个字符串在 $L_{1}$ 中,因为 $p \neq p+p!$。

现在,我们应用泵引理。对于任何将 $w=x y z$ 写入的方式,其中 $|x y| \leq p$ 且 $|y|>0$,必须满足对于某个 $k>0$,$y=0^{k}$。目标是泵送 $y$ 以实现相同数量的 0 和 1。如果我们泵送 $y$ $i$ 次并考虑 $w^{\prime}=x y^{i} z=0^{p+(i-1) k} 1^{p+p!}$,我们必须选择 $i$ 使得:

$$ (i-1) k+p=p+p! $$

这是可行的,因为 $p!$ 可以被任何 $k>0$ 整除,这确保了通过选择合适的 $i$(即 $i=p!/ k+1$),我们可以使 0 和 1 的数量相等,即生成的字符串不再属于 $L_{1}$。因此,我们得出结论 $L_{1}$ 不是正则的。$\square$

📖 [逐步解释]

这是泵引理证明的正确版本。这里的关键在于选择了一个更巧妙的字符串 $w$。

  1. 选择字符串: 我们选择 $w = 0^p 1^{p+p!}$。
    • $p!$ (p 的阶乘) 定义为 $p \times (p-1) \times \dots \times 1$。
    • 这个字符串在 $L_1$ 中,因为 $p$ 永远不等于 $p+p!$ (由于 $p! \ge 1$ for $p \ge 1$)。
    • 它的长度是 $2p+p!$,对于 $p \ge 1$,这个长度大于 $p$。
  2. 对手的分割: 同样,根据 $|xy| \le p$ 和 $|y|>0$,$y$ 必须是 $0^k$ 的形式,其中 $k$ 是一个整数,满足 $1 \le k \le p$。
  3. 寻找矛盾的目标: 我们要泵送 $y$,使得泵送后的字符串 $w'$ 中 0 的数量等于 1 的数量。
    • $w$ 中 0 的数量是 $p$。
    • $w$ 中 1 的数量是 $p+p!$。
    • 泵送 $i$ 次后, $y=0^k$ 被复制了 $i$ 次,总共增加了 $(i-1)k$ 个 0。
    • $w'$ 中 0 的数量是 $p + (i-1)k$。
    • 我们的目标是令:$p + (i-1)k = p+p!$。
  4. 解决矛盾: 上述方程简化为 $(i-1)k = p!$。
    • 我们需要找到一个整数 $i \ge 0$ 来满足这个方程。
    • 解出 $i$:$i-1 = \frac{p!}{k}$,所以 $i = \frac{p!}{k} + 1$。
  5. 证明可行性:
    • 我们不知道 $k$ 是多少,但我们知道 $1 \le k \le p$。
    • 一个关键的数学事实是:$p!$ (p的阶乘) 定义为 $p \times (p-1) \times \dots \times k \times \dots \times 1$。因此,$p!$ 必然能被 $1$ 到 $p$ 之间的任何整数 $k$ 整除。
    • 所以,$\frac{p!}{k}$ 必然是一个整数。
    • 因此,$i = \frac{p!}{k} + 1$ 也必然是一个整数。
    • 同时,因为 $k \ge 1$,$p! \ge 1$,所以 $i \ge 2$,满足 $i \ge 0$ 的条件。
  6. 得出结论: 我们已经证明,无论对手选择哪个 $k$ ($1 \le k \le p$),我们总能找到一个对应的整数 $i = \frac{p!}{k} + 1$。当使用这个 $i$ 进行泵送时,得到的字符串 $w'$ 拥有 $p+p!$ 个 0 和 $p+p!$ 个 1。这个 $w'$ 因为 0 和 1 数量相等而不属于 $L_1$。

这与泵引理的第三条规则(所有 $xy^iz$ 都必须在 $L_1$ 中)产生了矛盾

因此,我们最初的假设“$L_1$ 是正则的”是错误的。结论:$L_1$ 非正则

∑ [公式拆解]
  • 公式:

$$ (i-1) k+p=p+p! $$

  • 拆解:
  • $p$: 初始字符串中 0 的数量。
  • $k$: 泵送块 $y$ 的长度,即 $y=0^k$。我们只知道 $1 \le k \le p$。
  • $i$: 泵送的次数。这是我们要选择的数。
  • $p+(i-1)k$: 泵送后新字符串中 0 的总数。初始有 $p$ 个,每泵送一次增加一个 $y$ ($k$ 个 0),总共泵送 $i$ 次,所以净增加 $(i-1)k$ 个 0。
  • $p+p!$: 初始字符串中 1 的数量。
  • 等式: 我们试图通过调整 $i$ 来让新字符串中的 0 的数量等于 1 的数量,从而构造出不在 $L_1$ 中的字符串。
  • 推导:
  1. 从 $(i-1)k + p = p+p!$ 开始。
  2. 两边同时减去 $p$:$(i-1)k = p!$。
  3. 两边同时除以 $k$ (因为 $|y|>0$,所以 $k \ge 1$, $k \neq 0$): $i-1 = \frac{p!}{k}$。
  4. 两边同时加 1: $i = \frac{p!}{k} + 1$。

这个推导出的 $i$ 就是我们用来制造矛盾的武器。

💡 [数值示例]
  • 示例 1: 假设泵长度 $p=4$。我们选择字符串 $w = 0^4 1^{4+4!} = 0^4 1^{4+24} = 0^4 1^{28}$。
  • 对手必须选择 $y=0^k$ 且 $1 \le k \le 4$。
  • 如果对手选 $k=2$ ($y=00$): 我们的目标是让 0 的数量变成 28。方程是 $4 + (i-1)2 = 28$,即 $2(i-1)=24$,$i-1=12$,$i=13$。这是一个合法的整数。我们泵送13次,得到字符串 $0^{28}1^{28}$,它不在 $L_1$ 中。矛盾
  • 如果对手选 $k=3$ ($y=000$): 我们的目标是让 0 的数量变成 28。方程是 $4 + (i-1)3 = 28$,即 $3(i-1)=24$,$i-1=8$,$i=9$。这也是一个合法的整数。我们泵送9次,得到字符串 $0^{28}1^{28}$,它不在 $L_1$ 中。矛盾
  • 如果对手选 $k=4$ ($y=0000$): 我们的目标是让 0 的数量变成 28。方程是 $4 + (i-1)4 = 28$,即 $4(i-1)=24$,$i-1=6$,$i=7$。这也是一个合法的整数。我们泵送7次,得到字符串 $0^{28}1^{28}$,它不在 $L_1$ 中。矛盾
  • 无论对手怎么选 $k$ (只要 $1 \le k \le 4$),我们总能找到一个 $i = 24/k + 1$ 来制造矛盾
⚠️ [易错点]
  1. $p!$ 的作用: 学生可能不理解为什么突然引入阶乘 $p!$。关键在于 $p!$ 是一个“万能公倍数”,它可以被 $1$ 到 $p$ 之间的任何整数整除。这保证了无论对手选择的 $k$ 是多少,我们总能把 $p!$ 分成整数份。
  2. $i$ 必须是整数: 泵送次数 $i$ 必须是 $\ge 0$ 的整数。如果求出的 $i$ 是分数或负数,则证明失败。这里 $i = p!/k + 1$ 保证了 $i$ 是一个大于1的整数。
  3. $i=0$ 的情况 (pump down): 我们也可以选择 $i=0$。此时 0 的数量是 $p-k$。我们需要 $p-k = p+p!$,即 $-k = p!$。这是不可能的,因为 $k$ 和 $p!$ 都是正数。所以向下泵送在这里没有帮助。
📝 [总结]

通过巧妙地选择字符串 $w=0^p 1^{p+p!}$,我们利用了阶乘的性质。无论泵引理如何在前 $p$ 个 0 中选择子串 $y=0^k$,我们总能计算出一个整数泵送次数 $i = p!/k + 1$,使得泵送后的字符串中有 $p+p!$ 个 0,恰好等于 1 的数量。这使得新字符串 $xy^iz$ 不在 $L_1$ 中,从而与泵引理的结论相矛盾,证明了 $L_1$ 非正则

🎯 [存在目的]

这部分旨在展示一个泵引理的“标准”且成功的应用。它与前一部分的失败尝试形成鲜明对比,突出了构造一个能够“抵抗”对手所有合法选择的字符串 $w$ 的重要性。$p!$ 的使用是解决这类“计数”问题的经典技巧。

🧠 [直觉心智模型]

我们还是想让天平平衡。这次我们更有策略。我们放了 $p$ 个 0 在左边,放了 $p+p!$ 个 1 在右边。对手还是从左边的 $p$ 个 0 里拿走一小把 $k$ 个。我们的目标是把 0 的数量从 $p$ 变成 $p+p!$,也就是说,我们需要增加 $p!$ 个 0。我们手上有 $k$ 个 0 一把的砝码,需要加多少次才能凑够 $p!$ 个?答案是 $p!/k$ 次。因为 $k$ 是 $1$ 到 $p$ 之间的数,$p!$ 保证能被 $k$ 整除。所以我们总能凑出整数次。加上原来的一次,总共泵送 $i=p!/k + 1$ 次,天平就精确地平衡了。

💭 [直观想象]

想象一条非常长的绳子 ($w = 0^p 1^{p+p!}$),它的“断裂点”是 0 和 1 数量相等。对手在前 $p$ 段中截取了一小段 $y=0^k$ 作为“可拉伸”的部分。我们知道,要让绳子断裂,我们需要增加 $p!$ 个 0。我们每次拉伸,会增加 $k$ 个 0。因为 $p!$ 这个数字的特性,它就像一个“万能胶水”,无论你撕下的碎片 $k$ 有多大(在 $1$ 到 $p$ 范围内),$p!$ 都能被 $k$ 整除。所以我们总能精确地计算出需要拉伸 $p!/k$ 次,来补足 $p!$ 个 0 的长度,使绳子达到断裂点。我们的策略成功了。

1.2. 通过封闭性证明

📜 [原文4]

为了导出矛盾,假设语言 $L_{1}=\left\{0^{m} 1^{n} \mid m \neq n\right\}$ 是正则的,那么,我们知道它的补集 $L_{1}^{c}$ 也是正则的,因为正则语言补运算下是封闭的。我们考虑以下两个语言:$L_{\text {eq }}=\left\{0^{n} 1^{n} \mid n \geq 0\right\}$。这是具有相等数量 0 和 1 的字符串语言,我们从课堂上知道它不是正则的。另一方面,$L_{\text {all }}=\left\{0^{m} 1^{n} \mid m, n \geq 0\right\}$,它包含所有由任意数量的 0 后跟任意数量的 1 组成的字符串,是正则的(同样,我们在课上证明了这一点)。

我们可以将 $L_{\text {eq }}$ 表示为

$$ L_{e q}=L_{1}^{c} \cap L_{all} $$

由于正则语言交集运算下是封闭的,$L_{\text {eq }}$ 也将是正则的,但我们知道它不是,因此这导致了矛盾。因此,我们的假设是不正确的,$L_{1}$ 不可能是正则的。

📖 [逐步解释]

这个证明方法比泵引理更简洁,它利用了正则语言封闭性质。封闭性意味着,对正则语言进行某些运算(如并集交集补集、连接、星号闭包等),其结果仍然是正则语言

该证明的逻辑是一个经典的反证法:

  1. 假设 $L_1$ 是正则的:这是我们要推翻的起点。
  2. 应用封闭性
    • 正则语言补集运算是封闭的。如果 $L_1$ 正则,那么它的补集 $L_1^c$ 也必须是正则的。
    • $L_1$ 的补集是什么?$L_1^c$ 包含了所有在 $L_1$ 中的字符串。这包括两种情况:
  3. 引入已知语言
    • $L_{eq} = \{0^n 1^n \mid n \ge 0\}$: 这是我们课堂上已经证明过的是非正则的语言。
    • $L_{all} = \{0^m 1^n \mid m, n \ge 0\}$: 这是一个正则语言。它的正则表达式01
  4. 构造关系: 证明的核心是展示如何通过已知的正则操作从我们假设的正则语言构造出已知的非正则语言
    • 观察 $L_1^c \cap L_{all}$:
    • $L_1^c$ 包含所有 $m=n$ 的 $0^m 1^n$ 字符串,以及所有格式错误的字符串。
    • $L_{all}$ 包含所有格式正确的 $0^m 1^n$ 字符串。
    • 这两者的交集,就会过滤掉所有格式错误的字符串,只剩下那些格式正确(来自 $L_{all}$)且满足 $m=n$(来自 $L_1^c$)的字符串。
    • 这正是 $L_{eq}$ 的定义!所以 $L_{eq} = L_1^c \cap L_{all}$。
  5. 推导出矛盾
    • 我们假设 $L_1$ 是正则的。
    • 那么 $L_1^c$ 也是正则的(补集封闭性)。
    • $L_{all}$ 是已知的正则语言
    • 正则语言交集运算也是封闭的。所以 $L_1^c \cap L_{all}$ 必须是正则的。
    • 这意味着 $L_{eq}$ 必须是正则的。
    • 但这与我们已知的“$L_{eq}$ 是非正则的”这个事实相矛盾
  6. 得出结论: 矛盾的根源在于我们最初的假设。因此,假设“$L_1$ 是正则的”是错误的。结论:$L_1$ 非正则
∑ [公式拆解]
  • 公式:

$$ L_{e q}=L_{1}^{c} \cap L_{all} $$

  • 拆解:
  • $L_{eq}$: $\{0^n 1^n \mid n \ge 0\}$,一个已知的非正则语言
  • $L_1$: $\{0^m 1^n \mid m \neq n\}$,我们假设它是正则的。
  • $L_1^c$: $L_1$ 的补集。如果 $L_1$ 正则,它也正则。它包含所有满足 $m=n$ 的 $0^m 1^n$ 字符串,以及所有不符合 $0^*1^*$ 格式的字符串。
  • $L_{all}$: $\{0^m 1^n \mid m, n \ge 0\}$,即正则表达式 01 所描述的语言,这是一个已知的正则语言
  • $\cap$: 交集运算。正则语言在此运算下是封闭的。
  • 推导:
  • 一个字符串 $w$ 在 $L_{eq}$ 中
  • $\iff w$ 的形式是 $0^n 1^n$ 且 $n \ge 0$。
  • $\iff$ ($w$ 的形式是 $0^m 1^n$ 且 $m=n$) 并且 ($w$ 的形式是 $0^k 1^j$ for some $k,j \ge 0$)
  • $\iff$ ($w \in L_1^c$ 且 $w$ 的格式是 $0^*1^*$) 并且 ($w \in L_{all}$)
  • $\iff w \in L_1^c \cap L_{all}$
  • 所以,等式 $L_{eq} = L_1^c \cap L_{all}$ 成立。
💡 [数值示例]

让我们通过逻辑流程来看:

  1. 假设: IsRegular(L1) 为真。
  2. 属性: IsRegular(L) $\implies$ IsRegular(L^c)。所以 IsRegular(L1^c) 为真。
  3. 已知: IsRegular(L_all) 为真 (因为 $L_{all}$ 的正则表达式01)。
  4. 属性: IsRegular(A) and IsRegular(B) $\implies$ IsRegular(A \cap B)
  5. 应用: IsRegular(L1^c)IsRegular(L_all) 都为真,所以 IsRegular(L1^c \cap L_all) 必须为真。
  6. 推导: 我们证明了 $L_{eq} = L_1^c \cap L_{all}$。所以 IsRegular(L_eq) 必须为真。
  7. 已知: 但我们从课堂上学到 IsRegular(L_eq) 为假!
  8. 矛盾: 我们得出了 IsRegular(L_eq) 既为真又为假的结论。
  9. 结论: 唯一的错误在于第一步的假设。所以 IsRegular(L1) 为假。

[易錯点与边界情况]

  • 忘记 $L_{all}$: 如果只考虑 $L_1^c$,会得到 $L_{eq} \cup \{\text{strings not of form } 0^m1^n\}$。这个集合不是 $L_{eq}$。与 $L_{all}$ 求交集是至关重要的一步,它起到了“格式过滤器”的作用,精确地分离出了 $L_{eq}$。
  • 对已知事实不熟悉: 此方法依赖于两个“已知”:$L_{eq}$ 是非正则的,以及 $L_{all}$ 是正则的。如果对这两个基础事实不确定,就无法构建证明。
  • 混淆语言和运算: 要清楚地区分语言本身(如 $L_1, L_{eq}$)和对语言的操作(如补集 $^c$, 交集 $\cap$)。
📝 [总结]

该证明通过反证法,假设 $L_1$ 是正则的。然后利用正则语言补集交集运算下的封闭性,结合一个已知的正则语言 $L_{all}$,构造出了著名的非正则语言 $L_{eq}$。这导出了“$L_{eq}$ 既是正则的又是非正则的”这一矛盾,从而证明了最初的假设是错误的,$L_1$ 必须是非正则的。

🎯 [存在目的]

这部分展示了一种比泵引理更优雅、更强大的证明技巧。它不涉及复杂的字符串构造和分类讨论,而是站在一个更高的抽象层次上,通过语言之间的代数关系来推导结论。这体现了数学中“利用已知结果证明新问题”的思想。

🧠 [直觉心智模型]

这就像在证明“独角兽($L_1$)”存在。

  1. 假设:独角兽是真实存在的动物($L_1$ 是正则的)。
  2. 推理
    • 我们知道“非独角兽”($L_1^c$) 也将是一种真实存在的动物(补集封闭性)。
    • 我们知道“所有有蹄类动物”($L_{all}$) 是一个真实的动物类别(正则的)。
    • 我们还知道“马”($L_{eq}$)是一种不存在神话生物(非正则的)。
    • 我们发现,一个动物是“马”的充要条件是,它既是“非独角兽”,又是“有蹄类动物”。($L_{eq} = L_1^c \cap L_{all}$)
    • 因为“非独角兽”和“有蹄类动物”都是真实存在的动物类别,它们的交集(“马”)也必须是真实存在的动物类别(交集封闭性)。
  3. 矛盾:我们的推理表明“马”是真实存在的,但这与我们已知的“马是不存在的神话生物”相矛盾
  4. 结论:最初的假设“独角兽是真实存在的动物”一定是错的。
💭 [直观想象]

想象有一个“正则语言俱乐部”,这个俱乐部有两条铁律:

  1. 如果你是会员 ($L$ is regular),那么不在你名单上的人组成的新团体 ($L^c$) 也有资格成为会员。
  2. 如果两个团体 ($A, B$) 都是会员,那么同时属于这两个团体的人组成的新团体 ($A \cap B$) 也有资格成为会员。

我们想知道 $L_1$ 这个团体有没有资格入会。我们假设它有。

  1. 那么根据第一条铁律,$L_1^c$ 也有资格。
  2. 我们知道 $L_{all}$ (正则表达式 01 的团体) 早就是会员了。
  3. 根据第二条铁律, $L_1^c \cap L_{all}$ 这个新团体也有资格入会。
  4. 但我们发现 $L_1^c \cap L_{all}$ 就是 $L_{eq}$ 这个团体。
  5. 而 $L_{eq}$ 是俱乐部黑名单上的头号人物,明文规定永远不能入会(已知的非正则语言)。
  6. 这就产生了矛盾:一个被禁止入会的人,通过规则的推导,获得了入会资格。
  7. 这说明我们最初的假设——“$L_1$ 有资格入会”——是错误的。

1.3. 通过 Myhill-Nerode 定理证明

📜 [原文5]

我们只需要证明在 $\sim_{L_{1}}$ 下存在無限多个等价类。我们声称字符串 $0^{q}, q \geq 0$ 都是彼此可区分的。设 $q \neq r$,我们只需要证明 $0^{q} \not \nsim_{L_{1}} 0^{r}$。取 $z=1^{q}$ 作为区分扩展。注意 $0^{q} 1^{q} \notin L_{1}$ 但 $0^{r} 1^{q} \in L_{1}$。因此,对于所有 $p, r \geq 0$,$0^{p} \not \sim_{L_{1}} 0^{r}$,所以 $\sim_{L_{1}}$ 有无限多个等价类。因此,根据 Myhill-Nerode,$L_{1}$ 不是正则的。

📖 [逐步解释]

这是第三种证明方法,使用了 Myhill-Nerode 定理。这个定理提供了一个判断语言是否正则的充要条件。

Myhill-Nerode 定理的核心思想是等价关系 $\sim_L$。对于一个语言 $L$,如果两个字符串 $x$ 和 $y$ 在后面无论追加任何相同的字符串 $z$ 后,得到的新字符串 $xz$ 和 $yz$ 的“命运”总是相同(即要么都属于 $L$,要么都不属于 $L$),我们就说 $x$ 和 $y$ 是不可区分的,记为 $x \sim_L y$。

  • 可区分: 如果能找到至少一个字符串 $z$(称为区分扩展),使得 $xz$ 和 $yz$ 一个在 $L$ 中,另一个不在,那么 $x$ 和 $y$ 就是可区分的,记为 $x \not\sim_L y$。
  • 等价类: 所有相互不可区分的字符串构成一个等价类
  • 定理内容: 一个语言 $L$ 是正则的,当且仅当由关系 $\sim_L$ 产生的等价类数量是有限的。这个数量也恰好是识别 $L$ 的最小 DFA 的状态数。

这个证明的策略是:找到一个无限的字符串集合,并证明这个集合中的任意两个不同的字符串都是相互可区分的。如果能做到,就说明每个字符串都至少属于一个不同的等gaoj类,从而证明等价类的数量是无限的。

  1. 选择无限集合: 我们选择集合 $S = \{0^q \mid q \ge 0\} = \{\epsilon, 0, 00, 000, \dots\}$。这是一个无限集。
  2. 证明互相可区分: 我们需要证明,对于 $S$ 中的任意两个不同的字符串,比如 $0^q$ 和 $0^r$ (假设 $q \neq r$),它们都是可区分的
  3. 寻找区分扩展:
    • 取两个不同的前缀:$x = 0^q$ 和 $y = 0^r$。
    • 我们需要找到一个后缀 $z$,使得 $xz$ 和 $yz$ 的命运不同。
    • 证明中选择 $z = 1^q$。
  4. 验证:
    • 将 $z$ 追加到 $x$ 后面:$xz = 0^q 1^q$。在这个字符串中,0 的数量和 1 的数量相等 ($q=q$)。根据 $L_1$ 的定义 ($n \neq m$),$0^q 1^q$ 不属于 $L_1$。
    • 将 $z$ 追加到 $y$ 后面:$yz = 0^r 1^q$。在这个字符串中,0 的数量是 $r$,1 的数量是 $q$。因为我们一开始就假设了 $q \neq r$,所以这个字符串属于 $L_1$。
  5. 得出结论: 我们找到了一个区分扩展 $z=1^q$,它使得 $0^q z \notin L_1$ 而 $0^r z \in L_1$。这证明了 $0^q$ 和 $0^r$ 是可区分的 ($0^q \not\sim_{L_1} 0^r$)。
  6. 推广: যেহেতু $q$ 和 $r$ 是任意两个不同的非负整数,这意味着集合 $S = \{\epsilon, 0, 00, 000, \dots\}$ 中的每一个字符串都与其他所有字符串可区分。因此,它们必须属于不同的等价类
  7. 应用定理: 因为我们找到了一个无限的、两两可区分的字符串集合,所以 $\sim_{L_1}$ 关系必然有无限个等价类。根据 Myhill-Nerode 定理,如果等价类数量是无限的,则语言非正则
💡 [数值示例]
  • 示例 1: 让我们证明 00000可区分的
  • 这里 $q=2, r=3$。
  • 我们选择区分扩展 $z = 1^q = 11$。
  • $x z = 0011$。0 的数量是 2,1 的数量是 2。数量相等,所以 $0011 \notin L_1$。
  • $y z = 00011$。0 的数量是 3,1 的数量是 2。数量不等,所以 $00011 \in L_1$。
  • 因为一个结果在语言内,一个不在,所以 00000可区分的
  • 示例 2: 让我们证明 00000可区分的
  • 这里 $q=1, r=4$。
  • 我们选择区分扩展 $z = 1^q = 1$。
  • $x z = 01$。0 的数量是 1,1 的数量是 1。数量相等,所以 $01 \notin L_1$。
  • $y z = 00001$。0 的数量是 4,1 的数量是 1。数量不等,所以 $00001 \in L_1$。
  • 00000可区分的
⚠️ [易错点]
  1. 区分扩展的选择: 这里的技巧是选择一个能“暴露”前缀信息的后缀。选择 $z=1^q$ 是因为它把“$x$ 有 $q$ 个 0”这个信息用作了判断标准。如果选择 $z=1^r$,则 $xz = 0^q1^r \in L_1$,$yz=0^r1^r \notin L_1$,同样可以证明。但必须固定一个。
  2. 与DFA状态的联系: 每个等价类都对应最小 DFA 的一个状态。这个证明直观上说明了为什么 DFA 需要无限个状态。DFA 读完 $0^q$ 后,必须记住“我刚刚读了 $q$ 个 0”,以便后面读 1 时进行比较。由于 $q$可以是任何非负整数,DFA 就需要无限种记忆,即无限个状态。
  3. 不要混淆 $q$ 和 $r$: 在选择 $z=1^q$ 时,这个 $q$ 是与 $x=0^q$ 绑定的。对于 $y=0^r$,我们追加的仍然是 $1^q$,而不是 $1^r$。区分扩展 $z$ 对于要比较的两个字符串 $x$ 和 $y$ 必须是同一个
📝 [总结]

Myhill-Nerode 证明通过构造一个无限的字符串集合 $\{0^q \mid q \ge 0\}$,并证明其中任意两个不同的元素 $0^q$ 和 $0^r$ 都是可区分的(通过追加后缀 $1^q$),来表明语言 $L_1$ 存在无限个等价类。根据 Myhill-Nerode 定理,这直接意味着 $L_1$ 不是一个正则语言

🎯 [存在目的]

这部分展示了证明非正则性的最强大的方法。Myhill-Nerode 定理不仅能证明非正则性,还能揭示语言内在的结构复杂性(即需要多少“记忆”/状态)。这个证明比泵引理更根本,因为它直接触及了正则语言与有限状态之间的核心关系。

🧠 [直觉心智模型]

想象一个自动机是一个信息处理节点。当它读完一个前缀 $x$ 后,它进入某个状态。这个状态就是它对 $x$ 的“全部记忆”。如果两个前缀 $x$ 和 $y$ dẫn đến同一个状态,意味着自动机认为它们是“等价的”,即它无法区分 $x$ 和 $y$。我们的证明显示,对于 $L_1$,前缀 000000... 每一个都必须被自动机记作不同的东西,因为它对后续的输入(比如 111111...)有不同的反应需求。因此,需要无限种不同的记忆,即无限个状态。

💭 [直观想象]

把自动机的状态想象成一个个不同颜色的桶。每读完一个前缀字符串,你就把这个字符串放进一个桶里。规则是:如果两个字符串放进了同一个桶,那么无论你往这两个字符串后面接上任何相同的尾巴,它们最终的“成品”必须同属于 $L_1$ 或同不属于 $L_1$。

我们的证明找到了一个无限的字符串集合 $S=\{\epsilon, 0, 00, \dots\}$。我们证明了,你不能把 00000 放在同一个桶里。为什么?因为如果你把尾巴 11 接上去,00 11 (不在$L_1$) 和 000 11 (在$L_1$) 命运不同,这违反了同桶规则。同理,任何两个 $0^q$ 和 $0^r$ ($q \neq r$)都不能放在同一个桶里。因此,你需要无限个桶来装下集合 $S$ 中的所有字符串。而一个有限自动机只有有限个桶,所以它无法胜任。

1.4. 问题 2: 语言 $L_2$

14.1. $L_{2}=\left\{w w \mid w \in\{a, b\}^{*}\right\}$

📜 [原文6]

$L_{2}=\left\{w w \mid w \in\{a, b\}^{*}\right\}$

泵引理证明:

为了导出矛盾,假设 $L_{2}$ 是正则的,并设 $p$ 为泵长度

我们选择字符串 $w=a^{p} b a^{p} b$,它在该语言中。根据泵引理,$w$ 可以被分成 3 部分,$w=x y z$,使得 $|x y| \leq p$,$|y|>0$,且对于所有 $i \geq 0$,$x y^{i} z \in L_{2}$。由于 $w$ 的前 $p$ 个字符是 $a$,所以必须有 $y=a^{k}$,其中 $1 \le k \le p$(原文中 $0 \le k \le p$ 是一个小笔误,应为 $1 \le k \le p$ 因为 $|y|>0$)。

设 $i=3$。新的字符串是 $w^{\prime}=x y^{i} z=a^{p+2 k} b a^{p} b$,它不在该语言中。我们得出了一个矛盾,因此 $L_{2}$ 不是正则的。

📖 [逐步解释]

这部分证明语言 $L_2 = \{ww \mid w \in \{a, b\}^*\}$ 是非正则的。这个语言由任意一个 $\{a, b\}$ 上的字符串 $w$ 和它自身的精确拷贝连接而成。例如 abab, aaaa, ababaabab 都在 $L_2$ 中。直觉上,为了验证一个字符串是否为 $ww$ 形式,机器需要读完前半部分,记住它,然后精确匹配后半部分。这需要无限的记忆力。

该证明使用了泵引理

  1. 假设 $L_2$ 是正则的: 开始反证法。
  2. 泵长度: 根据假设,存在一个泵长度 $p$。
  3. 选择字符串: 我们选择 $w = a^p b a^p b$。
    • 这个字符串属于 $L_2$ 吗?是的。它是由子串 $w' = a^p b$ 和它自身的拷贝组成的,即 $(a^p b)(a^p b)$。
    • 它的长度是 $2p+2$,当 $p \ge 1$ 时,长度大于 $p$。
  4. 对手的分割: 泵引理保证可以将 $w$ 分割为 $xyz$,满足:
    • $|xy| \le p$
    • $|y| > 0$
    • $xy^iz \in L_2$ for all $i \ge 0$.
  5. 分析分割:
    • 字符串 $w$ 的开头是 $p$ 个 $a$。
    • 因为 $|xy| \le p$,所以 $x$ 和 $y$ 字符串必须完全位于这开头的 $p$ 个 $a$ 之中。
    • 因为 $|y|>0$,$y$ 必须是至少一个 $a$。
    • 所以,$y$ 的形式是 $a^k$,其中 $1 \le k \le p$。
    • $x$ 的形式是 $a^{p-k-j}$,$z$ 的形式是 $a^j b a^p b$ 的一部分,但更具体的写法是 $x=a^{p_1}, y=a^k, z=a^{p_2}ba^pb$ 其中 $p_1+k+p_2=p$。
  6. 泵送并寻找矛盾:
    • 原文选择泵送 $i=3$。(泵送 $i=2$ 或 $i=0$ 也可以)。
    • 泵送后的字符串 $w' = xy^3z$。
    • 原来的 0 的数量是 $p = p_1+k+p_2$。泵送后,y 被复制了 3 次,所以 0 的数量变成了 $p_1+3k+p_2 = p+2k$。
    • 所以 $w' = a^{p+2k} b a^p b$。
    • 现在我们来判断 $w'$ 是否还在 $L_2$ 中。$L_2$ 的字符串必须是 $u u$ 的形式,这意味着它的长度必须是偶数,并且前半部分和后半部分完全一样。
    • $w'$ 的长度是 $(p+2k)+1+p+1 = 2p+2k+2$。这是一个偶数。
    • 它的前半部分是 $u_1 = a^{p+k+1}$ (这里原文的分析 $a^{p+2k} b a^{p} b$ 是对整个字符串的描述,为了检查 $uu$ 形式,我们需要将其对半分。它的长度是 $2p+2k+2$,所以中点在第 $p+k+1$ 个字符之后)。前半部分的长度是 $p+k+1$。
    • $w' = a^{p+2k} b a^p b$。前半部分 $u_1$ 是 $a^{p+k+1}$。后半部分 $u_2$ 是 $a^{k-1}ba^pb$。
    • $u_1$ 只包含 $a$,$u_2$ 包含 $b$。显然 $u_1 \neq u_2$。
    • 更简单的分析:$w'$ 的形式是 $a..ab a..ab$。第一个 $b$ 出现在第 $p+2k+1$ 个位置。而 $w$ 的中点在第 $p+1$ 个位置。泵送后,第一个 $b$ 的位置移动了,但第二个 $b$ 的位置没动。这破坏了对称结构。$a^{p+2k} b a^{p} b$ 无法写成 $uu$ 的形式。
    • 因此,$w'$ 不在 $L_2$ 中。
  7. 结论: 我们找到了一个 $i=3$,使得 $xy^iz \notin L_2$。这与泵引理的要求相矛盾。因此,最初的假设是错误的,$L_2$ 非正则
💡 [数值示例]
  • 示例: 设泵长度 $p=3$。
  • 我们选择字符串 $w = (a^3b)(a^3b) = aaabaaab$。
  • 对手必须在前 3 个 $a$ 中选择 $y$。假设对手选择 $y=aa$ ($k=2$)。那么 $x=a, z=abaaab$。
  • 我们选择泵送 $i=2$。
  • $w' = xy^2z = a(aa)^2 abaaab = a(aaaa)abaaab = aaaaaabaaab$。
  • $w'$ 的长度是 10。它的中点在第 5 个和第 6 个字符之间。
  • 前半部分是 aaaaa
  • 后半部分是 baaab
  • 显然 aaaaa $\neq$ baaab。所以 $w' \notin L_2$。矛盾达成。
  • 如果我们泵送 $i=0$ (向下泵送)。
  • $w''=xz=a(abaaab)=aabaaab$。
  • $w''$ 的长度是 7,是奇数。任何 $uu$ 形式的字符串长度都是偶数,所以 $w''$ 肯定不在 $L_2$ 中。矛盾也达成了。
⚠️ [易错点]
  1. 字符串选择: 选择 $w=a^p a^p = a^{2p}$ 是一个错误的选择。因为如果对手选择 $y=aa$ ($k=2$),那么泵送后 $xy^iz = a^{2p+2(i-1)}$。这是一个偶数长度的全 $a$ 字符串,总能写成 $u u$ 的形式($u=a^{p+i-1}$)。这样就无法导出矛盾。选择 $w=a^p b a^p b$ 的巧妙之处在于引入了一个“分隔符” $b$,使得对前半部分的任何改动都很容易破坏与后半部分的对称性。
  2. 泵送 $i$ 的选择: 通常 $i=0$ 或 $i=2$ 是最容易导出矛盾的选择。$i=0$ 会缩短字符串, $i=2$ 会增长字符串。这两种操作都很容易破坏需要精确匹配的结构。原文选择 $i=3$ 也能达到目的。
📝 [总结]

该证明通过精心构造字符串 $w=a^p b a^p b$,利用泵引理对字符串前部的泵送操作,破坏了 $w$ 原有的 $u u$ 对称结构。泵送后的字符串 $a^{p+2k} b a^p b$ 不再能表示为两个相同子串的连接,从而证明了 $L_2$ 非正则

🎯 [存在目的]

这部分展示了如何应用泵引理来证明一个需要“自我匹配”的语言的非正则性。关键在于选择的字符串要包含一个“锚点”(如此处的 $b$),使得对一部分的修改能被轻易地检测出来。

[直觉心z智模型]

自动机需要验证字符串的后半部分是否与前半部分完全相同。这意味着,当它读完前半部分 $w$ 时,它必须以某种方式“完整地记住” $w$ 的全部信息。由于 $w$ 可以是任意长、任意复杂的字符串,而有限自动机的状态(记忆)是有限的,所以它不可能记住所有可能的 $w$。因此,它无法完成这个任务。

💭 [直观想象]

想象你在检查一长串DNA序列是否是“回文双螺旋”结构(即 $ww$ 的形式)。你是一个只有有限视力范围(状态有限)的检查员。你从头开始看,当你看到中点时,你必须回头看,或者已经记住了前半段的所有细节,才能和后半段一一比对。如果DNA序列非常非常长(超过你的记忆极限),你肯定会忘记前半段的内容,从而无法做出准确的判断。$L_2$ 就是这样的语言,它要求无限的记忆力。

14.2. 通过 Myhill-Nerode 定理证明

📜 [原文7]

考虑 $\{a, b\}^{*}$ 中两个不相等的字符串 $w \neq s$。设 $z=w$,使得 $w z=w w \in L$ 且 $s w \notin L$。我们已经为 $w$ 和 $s$ 找到了一个区分扩展,这意味着 $w$ 和 $s$ 对于 $L_{2}$ 是成对可区分的。

由于 $w$ 和 $s$ 是任意选择的,任何一对不相等的字符串都必须是成对可区分的。因此,每个字符串必须形成它自己的等gaoj类。因为有无限多个字符串,所以必须有无限多个等gaoj类。根据 Myhill-Nerode 定理,这意味着 $L_{2}$ 不是正则的。

📖 [逐步解释]

这个证明比泵引理更直接,也更深刻。它直接攻击了正则语言有限等价类的核心性质。

  1. 目标: 证明 $L_2$ 有无限个等价类
  2. 策略: 证明在字母表 $\{a,b\}^*$ 上,任意两个不同的字符串 $w$ 和 $s$ ($w \neq s$) 都是可区分的。如果能做到这一点,那么每个字符串都自成一个等价类,而 $\{a,b\}^*$ 中的字符串是无限多的,所以等价类也是无限多的。
  3. 选择任意两个不同字符串: 设 $w, s \in \{a,b\}^*$ 且 $w \neq s$。
  4. 寻找区分扩展:
    • 我们选择 $z=w$ 作为区分扩展
    • 将 $z$ 追加到第一个字符串 $w$ 后面:得到 $wz = ww$。根据 $L_2$ 的定义,这个新字符串属于 $L_2$。
    • 将 $z$ 追加到第二个字符串 $s$ 后面:得到 $sz = sw$。因为 $s \neq w$,所以这个新字符串不满足 $uu$ 的形式,因此它不属于 $L_2$。
  5. 得出结论: 我们找到了一个区分扩展 $z=w$,它成功地区分了 $w$ 和 $s$。一个追加后在语言里,一个不在。
  6. 推广: 由于我们的选择 $w$ 和 $s$是任意的,这个逻辑适用于 $\{a,b\}^*$ 中任何一对不同的字符串。例如,ab 是可区分的,ababa 是可区分的,等等。
  7. 应用定理: 既然 $\{a,b\}^*$ 中无限多的字符串两两之间都是可区分的,那么 $\sim_{L_2}$ 关系必然有无限个等价类。根据 Myhill-Nerode 定理,$L_2$ 非正则
💡 [数值示例]
  • 示例: 让我们证明字符串 ababa可区分的
  • 这里 $w$=ab,$s$=aba
  • 我们选择区分扩展 $z=w=$ab
  • $wz = $ ab + ab = abab。这是 (ab)(ab) 的形式,所以 $abab \in L_2$。
  • $sz = $ aba + ab = abaab。这个字符串的长度是 5 (奇数),不可能写成 $uu$ 的形式。所以 $abaab \notin L_2$。
  • 因为一个结果在语言内,一个不在,ababa可区分的。它们必须属于不同的等价类
⚠️ [易错点]
  1. 逻辑的普遍性: 这个证明的威力在于它的普遍性。它没有像泵引理那样选择一个特定的字符串,而是直接对所有不相等的字符串对进行论证。
  2. 区分扩展的依赖性: 注意,区分扩展 $z$ 是依赖于 $w$ (或 $s$) 的。对于 ababa,我们用了 $z=$ ab。对于 aabb,我们可以用 $z=$ aa 来区分它们 (aaaa $\in L_2$, bbaa $\notin L_2$)。这没有问题,只要对每一对 $(w, s)$,我们能找到至少一个区分扩展即可。
  3. $sw \notin L$ 的理由: 为什么我们如此确定 $sw \notin L_2$ 只要 $s \neq w$?因为 $L_2$ 的定义要求两个部分完全一样。如果 $s$ 和 $w$ 本身就不同,把它们拼在一起 $sw$ 就不可能满足这个要求。唯一的例外是如果 $s$ 和 $w$ 都是空串 $\epsilon$,但我们前提是 $s \neq w$。
📝 [总结]

Myhill-Nerode 证明通过展示任意两个不同的字符串 $w$ 和 $s$ 都可以被后缀 $z=w$ 所区分,断定 $L_2$ 的每一个字符串都构成一个独立的等价类。由于存在无限多个字符串,因此存在无限多个等价类,根据Myhill-Nerode 定理,$L_2$ 非正则

🎯 [存在目的]

这部分再次展示了 Myhill-Nerode 定理的强大和优雅。它提供了一个比泵引理更简洁、更具洞察力的视角来理解为什么 $L_2$ 是非正则的。它直接揭示了该语言的内在复杂性:需要区分无限多种不同的前缀。

🧠 [直觉心智模型]

一个 DFA 在读完一个前缀 $w$ 后,必须进入一个状态,这个状态封装了所有关于 $w$ 的“未来可能性”的信息。对于 $L_2$ 来说,这个状态必须能唯一地识别出 $w$ 本身,以便在未来遇到 $w$ 的拷贝时进行匹配。如果两个不同的前缀 $w$ 和 $s$ 进入了同一个状态,意味着 DFA 已经“忘记”了它们的区别。但我们的证明显示,可以通过追加 $w$ 来“揭穿”DFA的遗忘:$ww$ 会被接受,$sw$ 会被拒绝。所以 $w$ 和 $s$ 必须进入不同的状态。因为有无限个不同的 $w$,所以需要无限个状态。

💭 [直观想象]

想象一个配钥匙的商店。每个前缀字符串 $w$ 是一把独特的钥匙。要打开 $L_2$ 这扇门,你需要插入两把完全一样的钥匙,一把接一把 ($ww$)。DFA 是一个锁匠,他只有一个小盒子(有限状态)来存放他刚刚检查过的第一把钥匙的“模具”。

我们的证明说:任何两把不同的钥匙,比如 ababa,都必须制作出不同的模具。为什么?因为如果锁匠为它们制作了同一个模-A,然后我们递给他第二把钥匙 ab。对于 ab+ab,锁匠用模具-A比对,通过了。对于 aba+ab,锁匠也用同一个模具-A去比对,他也必须说通过(因为他已经忘了第一把是ab还是aba了)。但abaab是错的钥匙组合!所以,为了不出错,锁匠必须为每一把独一无二的钥匙都准备一个独一无二的模具。世界上有无限种钥匙,所以锁匠需要无限个模具。他的小盒子装不下,所以他开不了这家店(DFA无法识别 $L_2$)。

1.5. 问题 3: 语言 $L_3$

15.1. $L_{3}=\left\{1^{2^{n}} \mid n \geq 0\right\}$

📜 [原文8]

$L_{3}=\left\{1^{2^{n}} \mid n \geq 0\right\}$

泵引理证明:

为了导出矛盾,假设 $L_{3}$ 是正则的。设 $p$ 为泵长度

考虑 $w=1^{2^{p}}$。$w \in L_{3}$ 且其长度为 $|w|=2^{p}>p$(这可以通过归纳法对任何 $p>0$ 进行证明)。根据泵引理,$w$ 可以被分成 3 部分,$w=x y z$,使得 $|x y| \leq p$,$|y|>0$,且对于所有 $i \geq 0$,$x y^{i} z \in L_{3}$。那么这些部分必须具有以下形式:$x=1^{a}$,$y=1^{b}$ 和 $z=1^{c}$,其中 $a+b+c=2^{p}$,$a+b \leq p$ 且 $b>0$。

设 $i=2$。新的字符串是 $w^{\prime}=x y^{i} z=1^{a} 1^{2 b} 1^{c}$。因此,$\left|w^{\prime}\right|=a+2b+c = (a+b+c)+b = 2^{p}+b$。我们知道 $b>0$,并且我们知道 $b \leq a+b \leq p$,所以 $b \leq p$。因此 $2^p < |w'| = 2^p+b \le 2^p+p$。因为 $p \ge 1$, $p < 2^p$ (对于 $p \ge 1$)。所以我们有 $2^p+p < 2^p+2^p = 2 \cdot 2^p = 2^{p+1}$。

综合起来,$2^{p}<\left|w^{\prime}\right|<2^{p+1}$。由于 $w^{\prime}$ 的长度严格地介于两个连续的 2 的幂之间,所以 $w^{\prime}$ 的长度不可能是 2 的幂,因此 $w^{\prime}$ 不在该语言中。这是一个矛盾,所以 $L_{3}$ 不是正则的。

(原文中不等式的推导可以更清晰地写作这样)

📖 [逐步解释]

这部分证明语言 $L_3 = \{1^{2^n} \mid n \ge 0\}$ 是非正则的。这个语言的字符串只由 '1' 组成,其长度必须是 2 的幂 (e.g., $1^1, 1^2, 1^4, 1^8, \dots$)。

证明使用了泵引理

  1. 假设 $L_3$ 是正则的
  2. 泵长度: 存在一个泵长度 $p$。
  3. 选择字符串: 我们选择 $w = 1^{2^p}$。
    • 这个字符串在 $L_3$ 中,因为它的长度是 $2^p$ (取 $n=p$)。
    • 它的长度 $|w| = 2^p$。我们需要确保 $2^p \ge p$。对于所有 $p \ge 1$,$2^p > p$ 这个不等式都成立 (可以通过数学归纳法证明)。所以字符串足够长。
  4. 对手的分割: $w$ 被分割为 $xyz$。
    • $w$ 完全由 '1' 组成,所以 $x,y,z$ 都只能是 '1' 的字符串。设 $|x|=a, |y|=b, |z|=c$。
    • 规则:$a+b+c = 2^p$ (总长), $|xy| = a+b \le p$ (分割点靠前), $|y|=b > 0$ (泵送部分非空)。
  5. 泵送并寻找矛盾:
    • 我们选择泵送 $i=2$ (向上泵送一次)。
    • 新字符串 $w' = xy^2z$。
    • 新字符串的长度 $|w'| = |x| + 2|y| + |z| = a+2b+c = (a+b+c) + b = 2^p + b$。
  6. 分析新长度:
    • 我们要证明 $|w'|$ 不可能是 2 的幂。
    • 我们知道 $b > 0$ (根据 $|y|>0$),所以 $2^p+b > 2^p$。
    • 我们还知道 $b \le a+b \le p$ (根据 $|xy| \le p$),所以 $b \le p$。
    • 因此,新长度 $|w'| = 2^p+b \le 2^p+p$。
    • 下一个 2 的幂是 $2^{p+1}$。我们来比较 $2^p+p$ 和 $2^{p+1}$。
    • $2^{p+1} = 2 \times 2^p = 2^p + 2^p$。
    • 因为我们知道 $p < 2^p$ (对于 $p \ge 1$),所以 $2^p+p < 2^p+2^p = 2^{p+1}$。
    • 把这些不等式串起来,我们得到:$2^p < |w'| \le 2^p+p < 2^{p+1}$。
    • 这个不等式链说明 $|w'|$ 的值严格地卡在两个连续的 2 的幂 ($2^p$ 和 $2^{p+1}$) 之间。
    • 因此,$|w'|$ 本身不可能是 2 的幂。
  7. 结论: 泵送后的字符串 $w'$ 不在 $L_3$ 中。这与泵引理的要求($xy^2z$ 必须在 $L_3$ 中)相矛盾。所以原始假设是错误的,$L_3$ 非正则
💡 [数值示例]
  • 示例: 假设泵长度 $p=4$。
  • 我们选择字符串 $w = 1^{2^4} = 1^{16}$。
  • 对手必须在前 4 个 '1' 中选择 $y$。$y=1^b$ 且 $1 \le b \le 4$。
  • 假设对手选择 $y=111$ ($b=3$)。那么 $x=1, z=1^{12}$。
  • 我们泵送 $i=2$。
  • 新字符串 $w' = xy^2z$。它的长度是 $|w'| = |w| + b = 16+3=19$。
  • 19 不是 2 的幂($2^4=16, 2^5=32$)。所以 $w' \notin L_3$。矛盾
  • 无论对手选择 $b=1, 2, 3, 4$ 中的哪一个,新长度都会是 $17, 18, 19, 20$。这些都不是 2 的幂。我们总能制造矛盾
⚠️ [易错点]
  1. $|w| \ge p$ 的证明: 虽然在考试中可以直观地认为 $2^p \ge p$,但在严谨的证明中,这本身也需要一个(简单的)归纳证明。对于 $p=0$, $2^0=1 \ge 0$。对于 $p \ge 1$,假设 $2^k > k$,那么 $2^{k+1}=2 \cdot 2^k > 2k = k+k \ge k+1$。
  2. 关键不等式 $p < 2^p$: 整个证明的核心在于泵增的部分 $b$ 不够大,无法使长度达到下一个 2 的幂。$b \le p$,而从 $2^p$ 到 $2^{p+1}$ 的“距离”是 $2^p$。只要 $p < 2^p$,增加的 $b$ 就永远无法跨越这个鸿沟。
  3. 泵送 $i=0$: 如果向下泵送,$|w'|=2^p-b$。我们有 $0 < b \le p$。所以 $2^p-p \le |w'| < 2^p$。对于 $p \ge 2$,$2^{p-1} < 2^p-p$。所以 $2^{p-1} < |w'| < 2^p$,$|w'|$ 也不是2的幂。所以向下泵送同样有效。
📝 [总结]

该证明通过选择一个长度为 2 的幂($2^p$)的字符串,利用泵引理增加其长度。增加的长度 $b$ 被限制在 $1 \le b \le p$。由于从一个 2 的幂 $2^p$ 到下一个 $2^{p+1}$ 的增长速度远远超过 $p$,泵送后的字符串长度 $2^p+b$ 会“卡”在两个连续的 2 的幂之间,从而使其不属于 $L_3$,导出矛盾

🎯 [存在目的]

这部分展示了如何处理长度具有指数增长规律的语言。它强调了分析“增长差距”的重要性。语言中合法字符串的长度 ($2^n$) 之间的间隔增长得非常快,而泵引理能带来的长度变化 ($b \le p$) 却是线性的,跟不上指数增长的步伐。

🧠 [直觉心智模型]

一个有限自动机无法进行乘法或指数运算。它只能通过循环来“加法”地计数。$L_3$ 的字符串长度序列是 $1, 2, 4, 8, 16, \dots$。这些数字之间的间隔越来越大。一个 DFA 循环一次(对应泵送一次)只会增加固定的长度 $k$。它无法实现这种“下一次的跳跃距离是上一次的两倍”的指数级增长模式。

💭 [直观想象]

想象你在一条数轴上跳跃,但你只能落在标有 $2^n$ 的石头上(1, 2, 4, 8, ...)。你有一双“泵引理”鞋,它允许你每次跳跃后,再额外向前“挪”一小步,挪动的距离 $b$ 是有限的($b \le p$)。

你现在站在了 $2^p$ 这块石头上。下一块合法的石头在 $2^{p+1}$。两者之间的距离是 $2^p$。你的鞋子最多只能让你额外挪 $p$ 步。只要 $p$ 小于 $2^p$ (对于 $p \ge 1$ 总是成立),你就无论如何也挪不到下一块石头 $2^{p+1}$ 上。你只会掉进 $2^p$ 和 $2^{p+1}$ 之间的空隙里。这就产生了矛盾

15.2. 通过 Myhill-Nerode 定理证明

📜 [原文9]

只要证明 $L_{3}$ 中的任何两个字符串都有一个区分扩展就足够了,因为有无限多个这样的字符串,所以这意味着有无限数量的等价类

对于任何非负整数 $m<n$,设 $x=1^{2^{m}}$ 且 $y=1^{2^{n}}$。字符串 $z=1^{2^{m}}$ 是一个区分扩展。我们可以看到 $x z=1^{2^{m}+2^{m}}=1^{2^{m+1}} \in L_{3}$ 而 $y z=1^{2^{n}+2^{m}}$。但是 $m<n$ 意味着 $2^{m}<2^{n}$ 且 $2^{m}+2^{n}<2^{n}+2^{n}=2^{n+1}$。因为 $2^{n}<|y z|= 2^{m}+2^{n}<2^{n+1}$,所以 $y z$ 不在该语言中。由于 $x z \in L_{3}$ 且 $y z \notin L_{3}$,它们对于 $L_{3}$ 是成对可区分的。

这对 $L_{3}$ 中的所有字符串对都成立,因此在 $\sim_{L_{3}}$ 下必须有无限多个等价类。那么根据 Myhill-Nerode 定理,$L_{3}$ 不是正则的。

📖 [逐步解释]

这个证明再次使用了 Myhill-Nerode 定理。策略是选取 $L_3$ 语言自身这个无限集合,并证明其中任意两个不同的字符串都是可区分的

  1. 目标: 证明 $L_3$ 有无限个等价类
  2. 选择无限集合: 我们选择 $S = L_3 = \{1^{2^n} \mid n \ge 0\} = \{1^1, 1^2, 1^4, \dots\}$。
  3. 证明互相可区分:
    • 取 $S$ 中任意两个不同的字符串,设为 $x=1^{2^m}$ 和 $y=1^{2^n}$。不失一般性,假设 $m < n$。
  4. 寻找区分扩展:
    • 证明中选择 $z=1^{2^m}$ 作为区分扩展 (即,选择两个字符串中较短的那一个作为后缀)。
  5. 验证:
    • 将 $z$ 追加到 $x$ 后面:$xz = 1^{2^m} 1^{2^m}$。新字符串的长度是 $2^m + 2^m = 2 \times 2^m = 2^{m+1}$。因为 $m+1$ 是一个整数,所以这个长度是 2 的幂。因此,$xz \in L_3$。
    • 将 $z$ 追加到 $y$ 后面:$yz = 1^{2^n} 1^{2^m}$。新字符串的长度是 $2^n + 2^m$。
  6. 分析新长度 $2^n + 2^m$:
    • 因为 $m < n$,所以 $2^m < 2^n$。
    • 所以,我们有不等式 $2^n < 2^n + 2^m$。
    • 同时,我们有 $2^n + 2^m < 2^n + 2^n = 2 \times 2^n = 2^{n+1}$。
    • 将不等式串联:$2^n < |yz| < 2^{n+1}$。
    • 这个长度 $|yz|$ 严格地卡在两个连续的 2 的幂之间,所以它本身不可能是 2 的幂。因此,$yz \notin L_3$。
  7. 得出结论: 我们找到了一个区分扩展 $z=1^{2^m}$,它使得 $xz \in L_3$ 而 $yz \notin L_3$。这证明了 $1^{2^m}$ 和 $1^{2^n}$ 是可区分的
  8. 推广: যেহেতু $m$ 和 $n$ 可以是任意两个不同的非负整数,这表明 $L_3$ 中所有的字符串都是两两可区分的
  9. 应用定理: $L_3$ 是一个无限集,且其中元素两两可区分,这意味着必然存在无限个等价类。根据 Myhill-Nerode 定理,$L_3$ 非正则
💡 [数值示例]
  • 示例: 让我们证明 $1^4$ 和 $1^{16}$ 是可区分的
  • 这里 $x = 1^{2^2}$ ($m=2$),$y=1^{2^4}$ ($n=4$)。$m < n$。
  • 我们选择区分扩展 $z=x=1^4$。
  • $xz = 1^4 1^4 = 1^8$。因为 $8=2^3$,所以 $xz \in L_3$。
  • $yz = 1^{16} 1^4 = 1^{20}$。20 不是 2 的幂($2^4=16, 2^5=32$)。所以 $yz \notin L_3$。
  • 因为一个结果在语言内,一个不在,$1^4$ 和 $1^{16}$ 是可区分的
⚠️ [易错点]
  1. 选择 $z$: 这里的 $z$ 必须对 $x$ 和 $y$ 都相同。选择 $z=1^{2^m}$ 是一个精妙的选择,因为它恰好能将 $x$ 的长度“补全”到下一个 2 的幂,但对于 $y$ 则会产生一个“中间”长度。
  2. 不等式 $m<n$: 这个前提是关键。它保证了 $2^m$ 和 $2^n$ 是不同的 2 的幂,并且 $2^m$ 是较小的那一个。这使得 $2^n + 2^m$ 的和大于 $2^n$ 但小于 $2^{n+1}$。
📝 [总结]

Myhill-Nerode 证明通过选取 $L_3$ 语言自身作为无限集合,并证明其中任意两个不同的字符串 $1^{2^m}$ 和 $1^{2^n}$ 都可以被后缀 $1^{2^m}$ (取较短者) 所区分。这表明 $L_3$ 存在无限个等价类,因此根据 Myhill-Nerode 定理,$L_3$ 非正则

🎯 [存在目的]

这部分展示了 Myhill-Nerode 定理在处理具有特定数学结构(如 2 的幂)的语言时的威力。它再次说明,该定理能从“需要多少记忆”的角度,对语言的正则性给出深刻的判断。

🧠 [直觉心智模型]

DFA 在读完前缀 $1^{2^m}$ 后,需要进入一个状态。这个状态必须“知道”它需要再来 $2^m$ 个 '1' 才能达到下一个合法长度 $2^{m+1}$。而当它读完前缀 $1^{2^n}$ 后,它需要进入另一个状态,这个状态必须“知道”它需要再来 $2^n$ 个 '1' 才能达到 $2^{n+1}$。由于对于每个不同的 $m$,所需的“补全”数量都不同,所以机器必须为每个 $1^{2^m}$ 都准备一个独一无二的状态。因此需要无限个状态。

💭 [直观想象]

想象你在爬一座梯子,但梯子的横档(合法长度)分布在高度 $1, 2, 4, 8, 16, \dots$ 的位置。你 ($x=1^{2^m}$) 正站在高度 $2^m$ 的横档上。你的朋友 ($y=1^{2^n}$) 站在更高的 $2^n$ 横档上。现在,你们俩都必须再向上爬同样的高度 $z=2^m$。

你爬了 $2^m$ 高度后,总高度是 $2^m+2^m=2^{m+1}$,你正好到达了上一级横档,安全!

你的朋友爬了 $2^m$ 高度后,总高度是 $2^n+2^m$。因为他本来就比你高 ($n>m$),他现在的位置在 $2^n$ 和 $2^{n+1}$ 之间。他悬在空中,没有踩到横档,不安全!

因为你们俩面对同样的挑战(爬 $z$ 高度)却得到了不同的结果(一个安全一个不安全),说明你们俩的初始位置($x$ 和 $y$)是本质不同的,不能被有限自动机视为“相同状态”。因为有无限个这样的初始位置,所以需要无限个状态。

1.6. 问题 4: 语言 $L_4$

16.1. $L_{4}=\left\{c^{n} w \mid n \geq 0, w \in\{a, b\}^{*}, \text{ 且如果 } n \text{ 是奇数则 } w=w^{R}\right\}$

📜 [原文10]

对于字母表 $\{a, b, c\}$,定义

$$ L_{4}=\left\{c^{n} w \mid n \geq 0, w \in\{a, b\}^{*}, \text{ 且如果 } n \text{ 是奇数则 } w=w^{R}\right\} $$

这是一个满足泵引理的非正则语言示例 —— 因此我们不能使用泵引理来证明非正则性(不会产生矛盾)。下面我们详细阐述这一点,然后展示使用我们见过的另外两种方法的两个替代解决方案。

📖 [逐步解释]

这部分定义了一个更为复杂的语言 $L_4$。它的结构依赖于前缀 c 的数量的奇偶性。

  • 结构: 字符串由两部分组成:前缀 $c^n$($n$ 个 $c$)和后缀 $w$(由 $a,b$ 组成)。
  • 条件:
  • 如果 $n$ 是偶数(包括 $n=0$),对 $w$ 没有任何要求。任何 $\{a,b\}^*$ 上的字符串 $w$ 都是可以的。
  • 如果 $n$ 是奇数,则 $w$ 必须是一个回文(palindrome),即 $w$ 从前向后读和从后向前读是一样的 ($w=w^R$)。

接着,它抛出了一个非常重要的结论:$L_4$ 是一个非正则语言,但它却满足泵引理的条件。这意味着我们无法使用泵引理来证明它的非正则性。这是泵引理的一个局限性:泵引理正则语言的必要非充分条件。即:

  • 如果一个语言是正则的,它一定满足泵引理
  • 如果一个语言不满足泵引理,它一定非正则的。
  • 如果一个语言满足泵引理,它可能正则的,也可能非正则的。$L_4$ 就是后者的例子。

最后,预告了将首先解释为什么泵引理会失效,然后用 Myhill-Nerode 定理封闭性来证明其非正则性

💡 [数值示例]
  • 示例 1 (属于 $L_4$, n 偶数): ccab。这里 $n=2$ (偶数),$w=`ab`。因为 $n$ 是偶数,对 $w$ 没有要求,所以字符串在 $L_4$ 中。
  • 示例 2 (属于 $L_4$, n=0): abba。这里 $n=0$ (偶数),$w=`abba`。在 $L_4$ 中。
  • 示例 3 (属于 $L_4$, n 奇数): caba。这里 $n=1$ (奇数),$w=`aba`。因为 $w=aba 是一个回文,所以字符串在 $L_4$ 中。
  • 示例 4 (不属于 $L_4$, n 奇数): cabc。这里 $n=1$ (奇数),$w=`abc`。因为 $w=abc 不是一个回文 ($w^R=`cba`$),所以字符串不在 $L_4$ 中。
  • 示例 5 (属于 $L_4$, n 奇数): ccc。这里 $n=3$ (奇数),$w=\epsilon$ (空串)。空串是回文,所以 ccc 在 $L_4$ 中。
⚠️ [易错点]
  1. 条件依赖: 最大的易错点是忘记检查 $n$ 的奇偶性。对 $w$ 的要求是条件性的。
  2. $w$ 的字母表: $w$ 只能由 $a$ 和 $b$ 组成。像 caca 这样的字符串不符合 $c^n w$ 的结构,因为 $w$ 中包含了 $c$。
  3. $n=0$: 这是一个偶数。所以任何 $\{a,b\}^*$ 上的字符串(前面没有 $c$)都属于 $L_4$。
  4. $w=\epsilon$: 空字符串是回文。所以对于任何奇数 $n$,$c^n$ 都在 $L_4$ 中。对于任何偶数 $n$,$c^n$ 也都在 $L_4$ 中。所以,任何 $c^n$ ($n \ge 0$) 都在 $L_4$ 中。
📝 [总结]

本节引入了一个特殊的语言 $L_4$,其规则根据前缀 $c$ 的数量的奇偶性而变化。它作为一个重要的反例,说明了泵引理的单向性——满足泵引理并不能保证一个语言是正则的。

🎯 [存在目的]

$L_4$ 的存在是为了深化学生对正则语言理论的理解,特别是泵引leem的局限性。它迫使我们使用更强大的工具(如 Myhill-Nerode封闭性)来处理这类更微妙的语言,展示了理论工具箱中不同工具的威力和适用范围。

🧠 [直觉心智模型]

一个 DFA 看到 $c$ 时可以切换它的“模式”。比如它有一个状态表示“接下来要检查回文”,另一个状态表示“接下来什么都不用检查”。

  1. 读 $c$:在“检查”和“不检查”模式之间切换。
  2. 如果最后停在“不检查”模式,它接受任何 $a,b$ 序列。这部分是正则的 ($c^{even}(a|b)^*$)。
  3. 如果最后停在“检查”模式,它需要验证 $w$ 是不是回文。我们知道检查回文需要无限记忆。

$L_4$ 本质上是两个语言的并集:$L_{even} = \{c^{2k}w \mid k \ge 0, w \in \{a,b\}^*\}$ 和 $L_{odd} = \{c^{2k+1}w \mid k \ge 0, w \in \{a,b\}^*, w=w^R\}$。$L_{even}$ 是正则的,但 $L_{odd}$ 是非正则的。一个正则和一个非正则语言的并集非正则的。这个直觉将在“通过封闭性证明”中被严格化。

💭 [直观想象]

想象一个有两种模式的门禁系统。

  1. 偶数模式:如果你按门铃(输入 $c$)偶数次,门禁系统进入“放松”模式。接下来任何人(字符串 $w$)都可以通过。
  2. 奇数模式:如果你按门鈴奇数次,门禁进入“严格”模式。接下来通过的人 ($w$) 必须是“对称”的(回文),比如一个左右完全对称的机器人。

这个门禁系统的一部分功能(严格模式)需要非常高级的识别技术(无限记忆),所以整个系统不是一个简单的有限自动机。然而,泵引理这个“质检员”却可能被欺骗,下面将解释原因。

16.2. 为什么泵引理无法得出矛盾

📜 [原文11]

首先,我们将证明该语言满足泵引理,尽管它不是一个正则语言。我们需要证明存在一个泵数 $p$,使得对于任何字符串 $w' \in L_{4}, |w'| \geq p$,我们永远无法通过泵引理导出矛盾。将泵数设置为 $p=2$。我们需要证明对于任何 $|c^{n} w| \geq 2$ 的字符串 $c^{n} w \in L_{4}$,都存在一种划分 $c^{n} w=x y z$,其中 $|x y| \leq 2, |y| \geq 1$,使得对于任何 $i \geq 0, x y^{i} z \in L_{4}$。

情况 1:$n$ 是奇数。那么,$w$ 是一个回文。取划分 $x=\epsilon, y=c, z=c^{n-1}w$。显然 $|x y|=1 \leq 2$ 且 $|y|=1 \geq 1$。注意,对于任何 $i \geq 0, x y^{i} z=c^{i} c^{n-1} w=c^{n+i-1} w$。如果 $n+i-1$ 是偶数,我们显然有 $x y^{i} z \in L_{4}$;如果 $n+i-1$ 是奇数,由于 $w$ 是回文,我们同样有 $x y^{i} z \in L_{4}$。

情况 2:$n$ 是偶数。设置 $x=\epsilon, y=c^{n} w$ 的前两个字符(这些字符存在,因为 $|c^{n} w| \geq 2$),$z=$ 字符串的剩余部分。如果 $n=0$,那么 $x, y, z \in \{a, b\}^{*}$,因此对于任何 $i \geq 0, x y^{i} z \in \{a, b\}^{*}$。因此,由于 $x y^{i} z$ 不以 $c$ 开头,它以偶数个 $c$ 开头(0个),所以 $x y^{i} z \in L_{4}$。如果 $n \neq 0$,那么 $n \geq 2$,因此 $y=c^{2}$。因此,对于任何 $i \geq 0, x y^{i} z=c^{n+2(i-1)} w$,其中 $w \in\{a, b\}^{*}$。但请注意,由于 $n$ 是偶数,$n+2(i-1)$ 始终是偶数,因此 $x y^{i} z \in L_{4}$。

在任何一种情况下,我们都有一种划分 $c^{n} w=x y z$,使得对于任何 $i \geq 0, x y^{i} z \in L_{4}$。因此,泵引理对 $L_{4}$ 成立。

注意,满足泵引理的 $L_{4}$ 并不能告诉我们 $L_{4}$ 是否是正则的。接下来我们使用两种替代方法证明它不是正则的。

📖 [逐步解释]

这部分的核心是证明 $L_4$ 满足泵引理,从而说明泵引理无法用于证明其非正则性。这里的角色发生了转换:我们不再是试图制造矛盾的“攻击者”,而是扮演“防御者”,为泵引理找到一个永远不会导致矛盾的划分方案。

我们将泵长度设为 $p=2$。我们需要为任何长度 $\ge 2$ 的 $w' \in L_4$ 找到一个“安全”的划分。

令 $w' = c^n w$。

情况 1: $n$ 是奇数

  • 此时 $w$ 是一个回文。字符串是 $c^n w$。
  • 我们选择的划分是:$x=\epsilon$ (空串),$y=c$ (第一个 $c$),$z=c^{n-1}w$ (余下部分)。
  • 这个划分满足泵引leem的前两个条件:$|xy|=1 \le p=2$,$|y|=1>0$。
  • 现在泵送 $y$:新字符串是 $xy^iz = \epsilon c^i (c^{n-1}w) = c^{n+i-1}w$。
  • 我们检查这个新字符串是否总在 $L_4$ 中:
  • 新的 $c$ 的数量是 $n' = n+i-1$。后缀 $w$ 保持不变。
  • 如果 $n'$ 是偶数:根据 $L_4$ 的定义,对后缀没有要求。新字符串 $c^{n'}w$ 属于 $L_4$。
  • 如果 $n'$ 是奇数:根据 $L_4$ 的定义,后缀必须是回文。我们的后缀 $w$ 本身就是一个回文(因为原始的 $n$ 是奇数)。所以新字符串 $c^{n'}w$ 属于 $L_4$。
  • 结论:无论泵送多少次,新字符串的 $c$ 个数要么是偶数(自动满足条件),要么是奇数(而后缀 $w$ 恰好是回文,也满足条件)。所以 $xy^iz$ 永远在 $L_4$ 中。矛盾无法产生。

情况 2: $n$ 是偶数

  • 此时对 $w$ 没有要求。
  • 子情况 2.1: $n=0$
  • 字符串是 $w$ (来自 $\{a,b\}^*$),长度 $\ge 2$。
  • 我们划分 $x=\epsilon$,$y$是 $w$ 的前两个字符,$z$ 是 $w$ 的剩余部分。$|xy|=2 \le p=2, |y|=2>0$。
  • 泵送后,新字符串 $xy^iz$ 仍然只包含 $a, b$。
  • 这个新字符串的 $c$ 的数量是 0,是偶数。根据 $L_4$ 定义,对后缀没有要求。所以新字符串永远在 $L_4$ 中。矛盾无法产生。
  • 子情况 2.2: $n \ge 2$ (偶数)
  • 字符串是 $c^n w$,长度 $\ge 2$。
  • 我们划分 $x=\epsilon$,$y=cc$ (前两个 $c$),$z=c^{n-2}w$。
  • 这个划分满足 $|xy|=2 \le p=2, |y|=2>0$。
  • 泵送 $y$:新字符串 $xy^iz = (cc)^i c^{n-2}w = c^{2i}c^{n-2}w = c^{n+2i-2}w = c^{n+2(i-1)}w$。
  • 新的 $c$ 的数量是 $n' = n+2(i-1)$。
  • 因为 $n$ 是偶数,$2(i-1)$ 也是偶数,所以 $n'$ 永远是偶数。
  • 根据 $L_4$ 定义,当 $c$ 的数量是偶数时,对后缀没有要求。所以新字符串永远在 $L_4$ 中。矛盾无法产生。

总结: 我们已经证明,对于 $L_4$ 中任何足够长的字符串,我们总能找到一种“安全”的泵送方式(通常是泵送开头的 $c$),使得泵送后的字符串永远不会违反 $L_4$ 的规则。因此,泵引理无法用来证明 $L_4$ 非正则

💡 [数值示例]
  • 情况 1 (n 奇数): $w' = caabbaac$ ($n=1$, $w=aabbaa$ 是回文)。$p=2$。
  • 我们划分 $x=\epsilon, y=c, z=aabbaa$。
  • 泵送 $i=3$:新串 $c^3aabbaa$。$n'=3$ 是奇数,后缀 $aabbaa$ 是回文。属于 $L_4$。
  • 泵送 $i=2$:新串 $c^2aabbaa$。$n'=2$ 是偶数,对后缀无要求。属于 $L_4$。
  • 泵送 $i=0$:新串 $aabbaa$。$n'=0$ 是偶数,对后缀无要求。属于 $L_4$。
  • 无法产生矛盾
  • 情况 2 (n 偶数): $w' = ccssab$ ($n=2$, $w=ab$)。$p=2$。
  • 我们划分 $x=\epsilon, y=cc, z=ab$。
  • 泵送 $i=3$:新串 $(cc)^3ab = c^6ab$。$n'=6$ 是偶数,对后缀无要求。属于 $L_4$。
  • 泵送 $i=0$:新串 $ab$。$n'=0$ 是偶数,对后缀无要求。属于 $L_4$。
  • 无法产生矛盾
⚠️ [易错点]
  1. 泵引理的本质: 泵引理是说“存在一种划分方式”。为了证明它成立,我们只需要为每种情况找到一种安全的划分方式即可。这和证明不成立时“必须对所有划分方式都导出矛盾”是相反的。
  2. 泵送位置: 这个证明的巧妙之处在于,我们总是在 $c$ 的部分进行泵送。这只会改变 $c$ 的数量的奇偶性,而不会触及 $w$ 部分的回文结构。泵引理的限制 $|xy| \le p$ 给了我们这个“只在前缀动手术”的机会。
📝 [总结]

这段文字通过对所有可能情况的 exhaustive case analysis,展示了对于语言 $L_4$,总能找到一种泵送方式(即泵送前缀 $c$)使得泵送后的字符串仍然留在 $L_4$ 中。这证明了 $L_4$ 满足泵引理,因此泵引理对 $L_4$ 无效,不能用它来证明 $L_4$ 的非正则性

🎯 [存在目的]

本节的存在是泵引理教学中的一个关键高级主题。它打破了初学者可能形成的“泵引理是万能的”这一错误印象,揭示了其局限性,并强调了Myhill-Nerode 定理封闭性等其他工具的不可或缺性。

🧠 [直觉心智模型]

泵引leem的弱点在于它只能在字符串的“局部”(前 $p$ 个字符)动手术。$L_4$ 的复杂性(回文校验)被“藏”在了字符串的后部 $w$ 中。我们的安全泵送策略,通过只修改更靠前的 $c$ 的数量,巧妙地规避了对 $w$ 部分的扰动。当 $c$ 的数量变为偶数时,对 $w$ 的回文要求就消失了,泵送自然安全。当 $c$ 的数量保持奇数时,$w$ 本身就是回文,所以也安全。泵引理这个“局部手术医生”无法触及语言复杂性的“病灶”。

💭 [直观想象]

想象一个“合法公民”($L_4$中的字符串)的判定规则。规则是:如果你的ID号($c$的数量)是奇数,你的指纹($w$)必须是左右对称的。如果ID号是偶数,指纹随便。

泵引理是一个检查员,他只能检查一个人的“ID号的前两位”($|xy| \le p=2$)。

  1. 对于ID号为奇数的人(如 c aabbaa),检查员选择修改ID号的第一个数字 c($y=c$)。他把 c 复制几次,ID号的奇偶性可能变了。如果ID号变成偶数,那太好了,规则说指纹随便,公民身份合法!如果ID号仍然是奇数,那也没关系,因为这个人的原始指纹 aabbaa 本来就是对称的,公民身份依然合法!
  2. 对于ID号为偶数的人(如 ccab),检查员选择修改ID号的前两位 cc($y=cc$)。他把 cc 复制几次,ID号每次增加偶数,所以永远是偶数。规则说指纹随便,所以公民身份永远合法!

检查员发现他无论怎么修改,都无法使一个合法公民变得“非法”。他只好无奈地报告:“根据我的检查方法,这个公民判定系统没有问题”。但他错了,因为他的检查方法有局限性。

16.3. 通过 Myhill-Nerode 定理证明

📜 [原文12]

我们需要证明在 $\sim_{L_{4}}$ 下存在无限多个等价类。我们声称字符串 $c a^{n}, n \geq 0$ 都是彼此可区分的。设 $n \neq m$,我们需要证明 $c a^{n} \not \nsim_{L_{4}} c a^{m}$。取 $z=b a^{n}$ 作为区分扩展。注意 $c a^{n} b a^{n} \in L_{4}$,因为 $a^{n} b a^{n}$ 是一个回文。然而,$c a^{m} b a^{n} \notin L_{4}$,因为 $c$ 出现了奇数次,而 $a^{m} b a^{n}$ 在 $m \neq n$ 时不是回文。因此,对于所有 $n \neq m; n, m \geq 0$,$c a^{n} \not \nsim_{L_{4}} c a^{m}$,因此 $\sim_{L_{4}}$ 有无限多个等价类。因此,根据 Myhill-Nerode,$L_{4}$ 不是正则的。

📖 [逐步解释]

这个证明回归到了更强大的 Myhill-Nerode 定理

  1. 目标: 证明 $L_4$ 有无限个等价类
  2. 策略: 找到一个无限的字符串集合,并证明其中任意两个不同的字符串都是相互可区分的
  3. 选择无限集合: 我们选择集合 $S = \{ca^n \mid n \ge 0\} = \{c, ca, caa, caaa, \dots\}$。这是一个无限集。
  4. 证明互相可区分:
    • 取 $S$ 中任意两个不同的字符串,设为 $x=ca^n$ 和 $y=ca^m$,其中 $n \neq m$。
  5. 寻找区分扩展:
    • 我们的目标是找到一个后缀 $z$,追加到 $x$ 和 $y$ 之后,使得一个结果在 $L_4$ 中,另一个不在。
    • 证明中选择 $z = b a^n$。这个选择非常巧妙,因为它试图用 $a^n$ 来“完成” $x=ca^n$ 的回文结构。
  6. 验证:
    • 将 $z$ 追加到 $x$ 后面:$xz = (ca^n)(ba^n) = c(a^n b a^n)$。
    • 分析这个新字符串:前缀是 $c^1$ (1是奇数)。后缀是 $w' = a^n b a^n$。
    • $w'$ 是回文吗?是的,它的逆 $ (a^n b a^n)^R = (a^n)^R b^R (a^n)^R = a^n b a^n = w'$。
    • 因为 $c$ 的数量是奇数,且后缀是回文,所以 $xz \in L_4$。
    • 将 $z$ 追加到 $y$ 后面:$yz = (ca^m)(ba^n) = c(a^m b a^n)$。
    • 分析这个新字符串:前缀是 $c^1$ (1是奇数)。后缀是 $w'' = a^m b a^n$。
    • $w''$ 是回文吗?不是。因为 $m \neq n$,$w''$ 的逆是 $a^n b a^m$,不等于 $w''$。
    • 因为 $c$ 的数量是奇数,但后缀不是回文,所以 $yz \notin L_4$。
  7. 得出结论: 我们找到了一个区分扩展 $z=ba^n$,它成功地区分了 $ca^n$ 和 $ca^m$。
  8. 推广和应用定理: 因为这适用于任何 $n \neq m$,所以集合 $S$ 中的所有字符串都是两两可区分的。这意味着存在无限个等价类。根据 Myhill-Nerode 定理,$L_4$ 非正则
💡 [数值示例]
  • 示例: 让我们证明 cacaa可区分的
  • 这里 $x=ca$ ($n=1$),$y=caa$ ($m=2$)。
  • 我们选择区分扩展 $z=ba^n=ba$。
  • $xz = (ca)(ba) = caba$。前缀是 $c^1$ (奇数),后缀是 aba,是回文。所以 $caba \in L_4$。
  • $yz = (caa)(ba) = caaba$。前缀是 $c^1$ (奇数),后缀是 aaba,不是回文。所以 $caaba \notin L_4$。
  • 因为一个结果在语言内,一个不在,cacaa可区分的

[易錯点与边界情况]

  • 前缀的选择: 为什么选择 $ca^n$ 而不是 $a^n$?因为 $L_4$ 的复杂性体现在 $n$ 为奇数的情况。通过在前面加上一个 $c$,我们把测试环境“锁定”在了需要检查回文的“严格模式”下。这使得我们可以利用回文非正则性来构造证明。
  • 区分扩展的选择: $z=ba^n$ 的选择是核心。$b$ 充当了回文的中心,而 $a^n$ 则是用来匹配前缀 $x$ 中的 $a^n$。
📝 [总结]

Myhill-Nerode 证明通过构造一个形如 $ca^n$ 的无限字符串集合,并使用后缀 $ba^n$ 作为区分扩展,成功证明了该集合中任意两个元素都是可区分的。这揭示了 $L_4$ 具有无限数量的等价类,从而根据 Myhill-Nerode 定理判定其为非正则语言

🎯 [存在目的]

本节展示了 Myhill-Nerode 定理如何成功地处理泵引理失效的情况。它绕过了“局部修改”的限制,从语言的全局结构(需要区分无限多的前缀状态)出发,给出了一个根本性的证明。

🧠 [直觉心智模型]

DFA 在读完前缀 $ca^n$ 后,必须进入一个状态。这个状态需要记住 $n$ 的值,因为它决定了什么样的后缀(比如 $ba^n$)可以与之构成一个合法的回文。由于 $n$ 可以是任意非负整数,DFA 需要无限种不同的“记忆”来存储所有可能的 $n$ 值。因此,需要无限个状态。

💭 [直观想象]

回到锁匠的比喻。这次,我们给锁匠一系列的钥匙,它们都有一个固定的前缀 c,后面跟着不同数量的齿 a^n(钥匙 ca, caa, caaa, ...)。规则是,如果第一把钥匙是 c... (奇数c),那么第二把钥匙必须能和第一把钥匙的后半部分 a^n 组合成一个中心对称的图案。

我们证明,锁匠不能为 cacaa 制作同一个模具。为什么?因为如果我们接着递给他第二把钥匙 ba

  1. ca + ba = cabaaba 是对称的,门开了。
  2. caa + ba = caabaaaba 不对称,门没开。

由于同一个模具对同一个后续钥匙产生了不同的结果,这是不允许的。所以 cacaa 必须有不同的模具。这个逻辑可以推广到所有 ca^n,因此需要无限个模具。

16.4. 通过封闭性证明

📜 [原文13]

或者,可以使用封闭性泵引理的组合来证明这一点。假设 $L_{4}$ 是正则的。设 $L_{5}=\left\{c w \mid w \in\{a, b\}^{*}\right\}$。不难证明 $L_{5}$ 是正则的(我们将此留作练习)。因此,由于正则语言交集运算下是封闭的,我们得到 $L_{r}=L_{4} \cap L_{5}$ 也是正则的。

然而,我们可以看到 $L_{r}=L_{4} \cap L_{5}=\left\{c w \mid w \in\{a, b\}^{*}, w=w^{R}\right\}$。

现在,我们可以使用泵引理来证明 $L_{r}$ 不可能是正则的(我们将此留作练习 —— 这与我们在课上证明回文语言不是正则的过程非常相似)。

我们证明了如果 $L_{4}$ 是正则的,那么 $L_{r}$ 就会是正则的,但我们知道 $L_{r}$ 不是正则的,所以我们得到了一个矛盾,并得出结论 $L_{4}$ 不是正则的。

📖 [逐步解释]

这个证明结合了封闭性泵引理,是一种“先简化,再攻击”的策略。

  1. 假设 $L_4$ 是正则的
  2. 引入一个简单的正则语言: 定义 $L_5 = \{cw \mid w \in \{a,b\}^*\}$。这个语言描述了所有以一个 c 开头,后面跟着任意 $a,b$ 字符串的语言。它的正则表达式c(a|b)*。因为它可以被正则表达式描述,所以 $L_5$ 是正则的。
  3. 应用封闭性:
    • 我们假设了 $L_4$ 是正则的。
    • 我们知道 $L_5$ 是正则的。
    • 正则语言交集运算下是封闭的。
    • 所以,它们的交集 $L_r = L_4 \cap L_5$ 也必须是正则的。
  4. 分析交集 $L_r$:
    • $L_4$ 的字符串是 $c^n w$,其中如果 $n$ 奇数则 $w$ 是回文,如果 $n$ 偶数则 $w$ 任意。
    • $L_5$ 的字符串是 $c^1 w$,即 $n$ 必须等于 1。
    • 那么,$L_4 \cap L_5$ 就是同时满足这两个条件的字符串。这意味着 $n$ 必须是 1。而 1 是一个奇数,所以 $L_4$ 对后缀 $w$ 的要求是 “$w$ 必须是回文”。
    • 因此,$L_r = \{cw \mid w \in \{a,b\}^*, w=w^R\}$。这个语言由一个 c 开头,后面跟着一个任意长度的 $a,b$ 回文组成。
  5. 攻击简化后的语言:
    • 现在我们有了一个更简单的语言 $L_r$,并且从逻辑上推断出如果 $L_4$ 正则则 $L_r$ 也正则
    • 接下来,我们证明 $L_r$ 是非正则的。这可以很容易地用泵引理证明(这几乎是证明回文语言非正则的标准练习)。
    • 证明 $L_r$ 非正则(简略):
    • 设 $p$ 为泵长度
    • 选字符串 $s = c a^p b a^p \in L_r$。
    • 泵引理要求泵送 $y$。因为 $|xy| \le p$,这里 $p$ 是 $L_r$ 的泵长度,但我们选的字符串 $s$ 的第一个字符是 $c$。如果我们选的泵长度 $p \ge 2$,那么泵送就会发生在 $a^p$ 上。
    • 选 $s = c a^p b a^p \in L_r$。$|s| = 2p+2$。假设 $p \ge 1$。
    • 根据泵引理,可分割 $s=xyz$。但 $|xy| \le p$ 这条规则是针对 $L_r$ 的泵长度 $p_r$ 的。
    • 让我们用标准的回文证明。令 $L_{pal} = \{w \mid w=w^R\}$。我们知道它是非正则的。$L_r = \{c\} \cdot L_{pal}$。一个正则语言和一个非正则语言的连接不一定是非正则的。所以这个论证需要更小心。
    • 回到原文的思路:用泵引理证明 $L_r = \{ca^pba^p\}$。设 $p_r$ 是 $L_r$ 的泵长度。选择 $s = c a^{p_r} b a^{p_r}$。$|s| > p_r$。$s \in L_r$。泵引理分割 $s=xyz$。因为 $|xy| \le p_r$,且 $s$ 以 $c$ 开头,如果 $p_r=1$,y只能是 $c$。泵送 $i=2$ 得到 $cc a^1 b a^1$,不在 $L_r$ 中。如果 $p_r > 1$,$y$ 会是 $a^k$。泵送后得到 $c a^{p_r+k} b a^{p_r}$,不再是回文。所以 $L_r$ 非正则
  6. 得出矛盾:
    • 我们的假设($L_4$ 正则) $\implies$ $L_r$ 正则
    • 我们独立的证明显示 $L_r$ 非正则
    • 这是一个矛盾
💡 [数值示例]
  1. 假设 $L_4$ 是正则的。
  2. 构造 $L_5 = c(a|b)*$。这是一个正则语言
  3. 交集: $L_r = L_4 \cap L_5$。
    • caba $\in L_4$ 且 caba $\in L_5$,所以 caba $\in L_r$。
    • ccab $\in L_4$ 但 ccab $\notin L_5$ (因为它有两个c),所以 ccab $\notin L_r$。
    • cabc $\notin L_4$ 且 cabc $\in L_5$,所以 cabc $\notin L_r$。
    • 经过检验,我们确认 $L_r = \{cw \mid w \text{ is a palindrome}\}$。
  4. 根据封闭性,$L_r$ 必须是正则的。
  5. 但是,我们通过泵引理(标准练习)可以证明 $L_r$ 是非正则的。例如,取字符串 $c a^p b a^p \in L_r$ (这里 $p$ 是 $L_r$ 的泵长度)。$|xy| \le p$ 意味着 $y$ 在第一个 $c$ 或者后面的 $a$ 上。如果 $p=1$, $y=c$, 泵成 $c^2...$ 不在 $L_r$ 中。如果 $p > 1$, $y=a^k$, 泵送会破坏回文结构。
  6. 这就产生了矛盾。因此,最初的假设 $L_4$ 是正则的是错误的。
⚠️ [易错点]
  1. 交集操作的理解: 必须准确地分析出 $L_4 \cap L_5$ 的结果是什么。关键是意识到 $L_5$ 将 $c$ 的数量 $n$ 强制锁定为 1,从而激活了 $L_4$ 中“后缀必须是回文”的条件。
  2. “留作练习”: 证明中把“$L_5$ 是正则的”和“$L_r$ 是非正则的”作为练习。在实际解题中,这两步是需要完整证明的。$L_5$ 很简单,有正则表达式 c(a|b)*。$L_r$ 的证明则是一个标准的泵引理应用。
📝 [总结]

该证明展示了一种强大的策略:如果一个语言 $L$ 太复杂,不好直接攻击,可以尝试通过与一个简单的正则语言进行交集并集等操作,将其“过滤”或“简化”成一个我们熟悉且更容易攻击的“核心”非正则语言 $L_r$。然后通过证明 $L_r$ 非正则,并利用封闭性,倒推出原始语言 $L$ 也必定是非正则的。

🎯 [存在目的]

本节的目的是展示封闭性质作为一个“预处理”工具的强大用途。它可以将一个复杂的问题转化为一个已知的或更简单的问题。这在证明非正则性时是一个非常高效和优雅的技巧,特别是当泵引leem直接应用很棘手时。

🧠 [直觉心智模型]

我们怀疑一个大组织 ($L_4$) 是非法的(非正则)。直接调查很困难,因为它有很多分支,有些是合法的($n$ 偶数),有些是非法的($n$ 奇数)。

我们的策略是:我们知道另一个完全合法的组织 $L_5$ (它的章程是“所有成员名字必须以c开头”)。我们去调查那些同时属于 $L_4$ 和 $L_5$ 的成员,组成一个新团体 $L_r$。

调查发现,$L_r$ 的所有成员都是 "c" + 一个回文名字。我们对回文名字的团体非常熟悉,早就知道它是一个非法组织(非正则)。

我们的逻辑是:如果 $L_4$ 是合法的,并且 $L_5$ 是合法的,那么它们的共同成员 $L_r$ 也应该是合法的(交集封闭性)。但我们发现 $L_r$ 是非法的。所以唯一的解释就是我们最初的假设错了:$L_4$ 本身就是一个非法组织。

💭 [直观想象]

想象 $L_4$ 是一锅成分复杂的汤,我们想证明它“有毒”(非正则)。直接化验整锅汤很麻烦(直接用泵引理)。

我们的方法是使用一个“过滤器”($L_5$),这个过滤器只允许“以胡萝卜丁(c)开头的分子”通过。我们知道这个过滤器本身是“干净”的($L_5$ 是正则的)。

我们将 $L_4$ 这锅汤通过过滤器,得到一碗清澈的汤 $L_r$。

我们发现,这碗过滤后的汤 $L_r$ 的成分是 “胡萝卜丁(c) + 对称的蛋白质分子(回文)”。我们对这种“对称蛋白质汤”有现成的毒性报告,知道它绝对有剧毒($L_r$ 是非正则的)。

推理过程:如果原来的汤 $L_4$ 是无毒的,经过一个干净的过滤器 $L_5$ 过滤后,得到的汤 $L_r$ 也应该是无毒的(封闭性)。但我们发现 $L_r$ 有剧毒。因此,唯一的结论是:原来的汤 $L_4$ 就含有毒素。

2行间公式索引

1. $(i-1) k+p=p+p!$

* 解释: 这是在对语言 $L_1$ 进行泵引理证明时,为构造矛盾而设立的目标方程。它旨在通过调整泵送次数 $i$,使得泵送后字符串中的 0 的数量(左侧)等于 1 的数量(右侧)。

2. $L_{e q}=L_{1}^{c} \cap L_{all}$

解释: 这是在通过封闭性证明 $L_1$ 非正则时构造的核心关系。它表明,著名的非正则语言 $L_{eq}$ (0和1数量相等) 可以通过对我们假设为正则的 $L_1$ 进行补集运算,再与已知的正则语言 $L_{all}$ (01*)进行交集运算得到。

3. $L_{4}=\left\{c^{n} w \mid n \geq 0, w \in\{a, b\}^{*}, \text{ 且如果 } n \text{ 是奇数则 } w=w^{R}\right\}$

* 解释: 这定义了一个复杂的语言 $L_4$,其后缀 $w$ 是否为回文取决于前缀 $c$ 的数量 $n$ 的奇偶性,该语言是泵引理失效的一个经典例子。

3行间公式索引

1. $(i-1) k+p=p+p!$

* 解释: 这是在对语言 $L_1$ 进行泵引理证明时,为构造矛盾而设立的目标方程。它旨在通过调整泵送次数 $i$,使得泵送后字符串中的 0 的数量(左侧)等于 1 的数量(右侧)。

2. $L_{e q}=L_{1}^{c} \cap L_{all}$

解释: 这是在通过封闭性证明 $L_1$ 非正则时构造的核心关系。它表明,著名的非正则语言 $L_{eq}$ (0和1数量相等) 可以通过对我们假设为正则的 $L_1$ 进行补集运算,再与已知的正则语言 $L_{all}$ (0\1\*)进行交集运算得到。

3. $L_{4}=\left\{c^{n} w \mid n \geq 0, w \in\{a, b\}^{*}, \text{ 且如果 } n \text{ 是奇数则 } w=w^{R}\right\}$

* 解释: 这定义了一个复杂的语言 $L_4$,其后缀 $w$ 是否为回文取决于前缀 $c$ 的数量 $n$ 的奇偶性,该语言是泵引理失效的一个经典例子。

[[END_OF_RESPONSE]]所有解释内容已全部输出完毕。