2
复杂度分析中平方根概念的著名示例
有许多算法和数据结构利用了在k = \ sqrt n处获得最小值的想法。常见的例子包括max{k,n/k}max{k,n/k}\max \left\{k, n/k\right\}k=n−−√k=nk=\sqrt n 婴儿步长巨步算法,用于计算O(\ sqrt n)中的离散对数O(n−−√)O(n)O(\sqrt n), O(n−−√)O(n)O(\sqrt n)时间和O(n)O(n)O(n)内存中的静态2D正交范围计数, 在O(\ sqrt [k] n)中具有EXTRACT-MIN O(n−−√k)O(nk)O(\sqrt[k] n)并且在O(1)中具有 DECREASE-KEY的优先级队列O(1)O(1)O(1), 在多项式时间内使用O(n−−√)O(n)O(\sqrt n)颜色为3色图着色, 仅举几个。 尽管此类算法通常不是最佳算法,但它们易于为学生所理解,并且可以快速证明幼稚的边界不是最佳算法。同样,由于缓存友好性(不考虑缓存无关紧要的技术),有时平方根思想数据结构比其基于二叉树的数据结构更实用。这就是为什么我在教学时会对此话题给予极大关注的原因。 我对这种更独特的示例感兴趣。因此,我正在寻找任何分析都基于平方根概念的(最好是优雅的)算法,数据结构,通信协议等。它们的渐近性不一定是最佳的。