反阿克曼函数
概述
定义
快速增长函数
快速增长函数的递归定义
对整数 ,定义 如下:
其中 表示 的 次复合。
前几层的展开
| 含义 | ||
|---|---|---|
| 线性函数 | ||
| 指数函数 | ||
| ( 个 2) | 2 的幂塔,高度 | |
| 幂塔的幂塔…,增长速度已无法用常规记号表达 | ||
| 远超任何可想象的计算 |
反阿克曼函数 的定义
反阿克曼函数
直观理解: 是使 超过 的最小层数 。由于 随 增长得极其快, 随 增长得极其慢。
核心性质
数值表
| 的范围 | 说明 | |
|---|---|---|
| 1 | ||
| 2 | ||
| 3 | ||
| 4 | ||
| 5 | 需要的 大到无法想象 |
关键事实
对所有实际可能的输入规模,。即使 是一个宇宙中原子数量的指数级, 仍然不超过 4。 已经是一个天文数字(远超可观测宇宙中的原子数 ),而 更是完全无法用任何物理量来比拟的。
单调性
单调性
是一个非递减函数:若 ,则 。
与常数的关系
实践意义
由于 对所有实际 成立,在工程实践中:
- (实际中)
- 可以安全地将并查集的每次操作视为
- 但在理论分析中,必须保留 以保证严谨性
定理19.14:O(m α(n)) 上界
定理 19.14
证明方法:使用势能方法。
证明思路概述:
-
势能函数定义:为每个节点 定义势能 ,基于 的秩和层数 。核心思想是将节点按秩分为不同的”级别”(level),级别越高势能越大。
-
关键引理:对每个级别 ,证明在该级别上发生的”代价高昂”的 FIND-SET 操作次数有上界。具体地,级别 上的节点被作为 FIND-SET 路径上的非根节点访问的次数不超过某个与 相关的量。
-
总代价上界:将所有级别的代价相加,利用 的快速增长性质,得到总代价 。
详细的证明过程见 CLRS 第4版 Section 19.4,使用了较为复杂的势能函数和分层分析技术。
下界
Fredman & Saks 1989 下界
任何基于比较的并查集实现(仅通过比较元素来决定操作),在 cell-probe 模型下,每次操作的最坏均摊代价为 。
这意味着 是最优的——不存在渐近更快的基于比较的并查集实现。
直观理解
可以将 理解为一个”增长速度的层级体系”:
- :加法级别(线性增长)
- :乘法级别(指数增长)
- :幂塔级别
- :幂塔的迭代级别
- 每升一级,增长速度发生质变
就是问:“要达到 这个增长水平,需要用到第几层?“答案是:几乎总是只需要前几层。这就像问”要数到 ,需要用到几位十进制数?“——答案是 ,增长极其缓慢。
第21章:最小生成树
Kruskal算法的总运行时间 O(E lg V)(排序)+ O(E α(V))(并查集操作)。由于 α(V) ≤ 4 对所有实际 V 成立,并查集部分实际上是线性时间。α(V) 出现在 Kruskal 的总时间界 O(E α(V)) 中,是并查集操作序列的均摊复杂度。