具有O(n / log(n))复杂度的算法

时间:2016-02-03 12:11:42

标签: algorithm asymptotic-complexity

有这种复杂性的着名算法吗?

我在考虑可能是一个跳过列表,其中节点的级别不是由硬币投掷的尾数确定的,而是使用从(1,log(n))时段随机生成的数字(均匀分布)确定节点的级别。这样的数据结构将具有复杂度为O(n / log(n))的find(x)操作(我认为至少)。我很好奇是否还有其他事情。

1 个答案:

答案 0 :(得分:0)

在使用the method of Four Russians时,看到运行时格式为O(n k / log n)或O(log n / log log n)的算法很常见加速现有算法。经典的四俄罗斯加速减少了在布尔矩阵上从O(n 2 )到O(n 2 / log n)的矩阵/矢量积的成本。用于两个长度为n的串上的序列比对的标准动态编程算法在时间O(n 2 )中运行,其可以减少到O(n 2 / log n)通过使用类似的技巧。

类似地,前缀奇偶校验问题 - 你需要在支持"翻转"时保持一系列布尔值。 "序列前缀的奇偶校验"通过使用Four-Russians加速,可以在时间O(log n / log log n)中解决操作。 (请注意,如果将运行时表示为k = log n的函数,则为O(k / log k)。