复杂性理论-c++中两点之间的最小距离
complexity theory - minimum distance between 2 points in c++
我有m个位置(x,y坐标)。
我有n个寻找离给定点p(x,y)最近的地方的请求;(最小欧氏距离)
如何解决O(n*m)以下的问题,其中n是请求数,m是位置数?我可以使用欧几里得距离的平方,但它仍然是n*m。
尝试kd树。高性能库实现可以在这里找到。
注意:我指的是一个近似近邻搜索,它针对高维进行了优化。对于您的应用程序来说,这可能有些过头了。
编辑:
对于2d-kd树,构建时间将为O(m*log(m)),查询时间将为0(n*sqrt(m)。如果您的查询数n超过log(m),那么这最终应该是对天真解决方案的净胜利。
库意味着您不必实现它,因此复杂性不应该成为问题。
如果您想推广到高维极快的查询,请查看位置敏感哈希。
有趣。为了减少n的影响,我想知道在遇到和处理每个请求时保存结果是否会有所帮助。一个聪明的结果表可能会在解决后续请求时缩短计算sqrt(x2+y2)的需要。
最近邻问题,嗯?我发现Robert Sedgewick标准书在这些情况下非常有用。他还描述了"最近的邻居搜索"。
相关文章:
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- int(c) 和 c-'0' 之间的区别。C++
- 在cuda线程之间共享大量常量数据
- 在c代码之间共享数据的最佳方式
- Mix_Init和Mix_OpenAudio SDL之间的区别是什么
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 用C++程序计算圆锥体的体积、球体的体积、八边形的面积和两点之间的距离
- 找到两点之间的中点
- 在C++中计算两点之间的角度,得到了奇怪的结果
- 使用Opencv/c++在Stream中的两点之间绘制aline
- 如何知道数组中两点之间的单元格数
- 如何有效地计算两点之间的角度
- 如何使用两点和步骤 c++ 之间的元素初始化向量
- 查找二维数组中两点之间的距离
- 尝试在c++中找到(x,y)坐标系中两点之间的最短路径.误差11db
- C++检测两点之间的碰撞,并在发生碰撞时从法线上反弹
- 复杂性理论-c++中两点之间的最小距离
- 我怎么做两点之间的碰撞检查呢?(c++)
- 查找两点之间的距离