给定一组点和半径。在距离小于的地方找到数量更多的点的复杂性。例如最大化?
蛮力算法将遍历每个点并计算距离小于r的点的数量。这将导致\ mathcal {O}(n ^ 2)的复杂性。
有没有更好的方法?
您是否看过四叉树和二进制空间分区树?我希望他们会提供一种在实践中更有效的算法,尽管我不知道最坏情况下的渐近运行时间可能是多少。
—
DW
(
—
灰胡子,2015年
ball
标题的中心是否必须来自集合?)一个想法可能是,估计半径与到最近邻居的平均距离相比是否较小,或与直径的数量级相比(并考虑针对这些极端的方法) (小r的平面扫描)和之间的宽间隔)。
球的中心应该是但是如果有一个更好的算法在没有这种情况的情况下,我也会感兴趣。
—
曼努埃尔·
对于未知的球程计数问题,它看起来似乎比算法要快。但是,如果您可以接受一个不精确的答案,则可以通过一组方向不同的正方形近似一个磁盘。对于每个方向,您都必须构建一个范围树(en.wikipedia.org/wiki/Range_tree),该树将允许您以时间(k计算一个正方形内的所有点。-一些结果点)。
—
HEKTO
@HEKTO您是否建议构建一个成本为以查询点是否位于一个成本为的矩形中?然后遍历所有点以计算近似球中还有多少其他点?这可能有效,但是这种数据结构所需的内存是多少?会低于吗?
—
曼努埃尔·2015年