“对外存中的比较排序,在两层外存模型中假设 $N M\ge2B$、只有一个磁盘($P=1$),内部内存容纳 $M$ 个不可拆分的原子记录,一次 I/O 搬运 $B$ 个记录,且内部计算免费。对…”
形式陈述
Aggarwal–Vitter 外存模型把数据分置于两层:内部存储可容纳
在比较模型的标准参数范围内,外排的量级为
其中当
直觉
数组在 RAM 分析中连续读取
例子与边界
若
多路归并排序先在内存中形成大小约
该模型把跨层搬运单独计费,实际 CPU 时间和磁盘寻道延迟可在实现评估中另行测量。某些 cache-oblivious 结果还需要 tall-cache 假设,例如
推论与应用
外存分析为数据库索引、文件排序、图处理和科学计算提供统一成本语言。渐近记号在这里计的是块传输而非指令;同一算法可以拥有良好的 CPU 时间却产生糟糕的 I/O 模式。缓存无关模型保留分层传输的分析目标,却要求算法不显式读取
模型还提醒实现者区分“顺序工作量”和“数据移动量”。把循环常数优化到更小,无法弥补访问顺序导致的额外块传输;只有重排计算、分块或改变数据布局,才能触及 I/O 复杂度的主项。
参考资料
- Alok Aggarwal and Jeffrey S. Vitter, “The Input/Output Complexity of Sorting and Related Problems,” Communications of the ACM 31(9), 1988, pp. 1116–1127.
- Jeffrey S. Vitter, Algorithms and Data Structures for External Memory, Now Publishers, 2008, Chs. 2–3.