【问题标题】:approximate nearest neighbors time complexity近似最近邻时间复杂度
【发布时间】:2016-10-14 15:57:11
【问题描述】:

我正在阅读这篇论文Product quantization for nearest neighbor search。

在第 5 页表 II 的最后一行,它给出了

复杂性 此表中给出用于搜索 k 个最小元素 是 n >> k 的平均复杂度,当 元素是任意排序的

这是n+klogkloglogn。

我想我们可以使用线性选择算法得到未排序的k个最近邻O(n),然后将这k个最近邻排序O(klogk),那么我们总共可以得到O(n+klogk)。但是loglogn 这个词是从哪里来的呢?

该论文为此提供了 TAOCP 书的参考,但我手头没有这本书,谁能为我解释一下?

【问题讨论】:

  • 这似乎只是一个糟糕的表格格式。 “找到 k 个最小距离”对于 SDC 是 n+k log k,对于 ADC 是 log log n。由于这些列彼此太近,因此您将它们一起阅读为n+k log k log log n
  • @user31264 谢谢!我也在考虑这个问题,但 log log n 时间复杂度对我来说更没有意义。
  • @user31264 and dontloo,你能看看我的question吗?

标签: algorithm search time-complexity nearest-neighbor quantifiers


【解决方案1】:

首先,表 II 报告了每个步骤的复杂性,因此您必须添加所有项来衡量 ADC 的复杂性。

在表格的最后一行,SDC 和 ADC 都是单一复杂度,即:

n + k log k log log n

该术语对应于选择算法的平均算法成本,我们使用该算法在一组 n 个变量中找到 k 个最小值,我们从 Donald Knuth 的书 [25] 中复制/粘贴。

我手上没有书,我无法检查,但听起来不错。


来自作者

【讨论】:

  • 谢谢,我不太确定在 ADC 的情况下它是如何变成 loglogn 的,你能解释一下吗?谢谢!
  • 查看我的更新@dontloo,这应该足够了,如果您有新问题,请发布一个新问题。 :)
  • 非常感谢您的澄清,这就是我感到困惑的地方,我只能理解n + k log k,这是我能得到的最接近这个公式的形式。无论如何,谢谢你,我想我会在本文的范围之外发布一个更清晰的问题。
  • 只是想知道你在哪里找到这个?你联系过作者吗?
  • 正如我在回答中所写,是的@dontloo! :)
猜你喜欢
  • 2021-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-06
  • 2016-10-07
  • 1970-01-01
  • 2014-02-23
相关资源
最近更新 更多