Skip to content

康托对角线论证

Cantor diagonal argument

通过在第 n 位偏离第 n 个候选对象构造未被枚举对象的方法。

条目类型
原则

形式陈述

康托对角线论证是一种反枚举构造,其标准形式如下。设 s0,s1,s2, 是任意一列无限二进制序列,其中每个 sn 都是函数 sn:N{0,1}。定义新序列 d:N{0,1}

d(n)=1sn(n).

则对每个 nd 在第 n 位与 sn 不同,故 dsn。于是任何以自然数为索引的列表都遗漏了 {0,1}N 中的某个元素,即不存在满射 N{0,1}N:全体无限二进制序列的集合不可数。

蓝色对角线格是第 n 行第 n 位;逐位翻转得到 d,使 d 在专属位置上不同于每个候选序列。

同一构造的抽象形式是 Cantor 定理:对任意集合 A,不存在满射 f:AP(A)。给定 f,令

D={aA:af(a)},

D=f(a0),则 a0Da0D,矛盾;故 D 不在 f 的像中,|P(A)|>|A|

直觉

论证的图像是一张无限表格:第 n 行写下第 n 个候选序列,然后沿对角线走,把第 n 行第 n 列的值翻转,拼出新序列 d。要保证 d 不等于表中任何一行,本不需要处处不同——每行只需一处不同即可,而对角线恰好给每一行"专门分配"了一个位置去制造差异,且这些位置互不冲突。这就是论证以线性的努力击败整张表格的原因:反驳第 n 个候选只花费第 n 位这一格。更深一层看,它是一种自指式构造:新对象的定义引用了"枚举本身",使得任何自称完备的枚举都被用来制造自己的反例。因此结论不是"这张表列错了",而是"任何表都必然遗漏"——量词落在所有枚举上。

例子与边界

具体走一遍:若表格前三行是 s0=0,0,0,s1=1,1,1,s2=0,1,0,,则 d 的前三位是 10=111=010=1;无论后面如何延续,d 已在第 0、1、2 位分别与这三行错开。由此立即得到实数不可数:{0,1}N 不可数,而它可单射入 [0,1](例如把序列读作三进制只用数字 0,2 的小数,避开进位歧义),故 [0,1]R 都是不可数集

边界之一是表示的歧义:若直接对十进制展开使用对角线,必须处理 0.4999=0.5000 这类双重表示——新数字与旧数字不同不等于新实数与旧实数不同。补救办法是规定翻转规则避开 09(例如一律在 4,5 之间切换),或改用上述二进制序列加保距编码。边界之二是"修改后的对象必须仍属于目标集合":把对角线用于证明某类对象不可枚举时,若翻转把对象带出该类,论证即失效。可计算性理论里这是真实的陷阱——全体部分可计算函数可以被有效枚举,对角线之所以不能直接反驳这一点,是因为对部分函数取"翻转"可能在未定义处无从翻转;只有对全函数的假想枚举,对角化才产生矛盾,由此得到的是"可计算全函数没有可计算的完备枚举"。

推论与应用

对角线论证是数学中少数被反复移植的证明模式。集合论中它给出 Cantor 定理 |P(A)|>|A|,从而由幂集迭代产生无穷多个越来越大的基数,也直接支撑基数层级的非平凡性;实数不可数是它的第一个历史应用。可计算性理论中,停机问题不可判定的证明就是对角线:假想的停机判定器被用来构造一个"在自己身上反着做"的程序。复杂性理论中,时间层级定理空间层级定理沿用同样的对角骨架,在相应的可构造性与资源间隙条件下证明更多资源确实能计算更多语言。这些应用共享同一个核心——自指式差异构造,与矩阵对角化无关;掌握"给每个候选分配一个专属位置并在该处偏离"这一模式,就能识别这些变体。

参考资料
  • Paul R. Halmos, Naive Set Theory, 1960; Dover reprint 2017,§26。
  • Daniel J. Velleman, How to Prove It: A Structured Approach, 3rd ed., Cambridge University Press, 2019,Ch. 7。
关系图谱5 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系