1. 字符串排序在 word RAM 下达到 O(n · √log log n) 而非 Ω(n log n) 的原因。
字符串排序在 word RAM 模型下为什么能达到 O(n·√log log n) 而非受制于 Ω(n log n) 的比较下界?
- word RAM 模型与比较模型的区别
- 基数排序/前缀排序突破比较下界
- 整数排序的下界与字符串排序
比较排序的 Ω(n log n) 下界建立在“只能比较元素”的模型上。字符串在 word RAM 模型下可按字符/字节做基数排序、前缀排序(如后缀数组的排序、快速傅里叶或后缀排序),利用字的位运算并行处理多个字符,从而突破比较下界。整数排序在 word RAM 下可达到 O(n√log log n)(Han 等),字符串可利用其作为子程序对后缀/前缀排序,得到同样界。字符串排序不用比较模型,而是把字符放入字中并行处理,因此下界不再适用。
关键区别是“比较模型”与“word RAM 算术模型”。word RAM 的字长 w=Θ(log n) 允许用位运算同时处理多个字符,把排序降为整数操作,从而获得比 Ω(n log n) 更低的界。