假设您有一个物体列表,并且每个物体都需要计算出最接近的物体才能拍摄。该对象具有x和y值。物体也在移动。 KD树仍然有用吗?我不确定,因为如果对象在移动,则必须继续创建此kd树。

我可以使用哪种算法来获得最佳速度(最好使用Big O)

最佳答案

k-d树是一种非常非常有效的数据结构,用于确定具有坐标的欧几里得空间中的最近邻居。
一个k-d树的生成问题将需要大量的对象(它是在O(n log²n)中生成的,因此几乎是线性时间,而对所有最近邻居的搜索也需要O(n log n),这也非常便宜)。因此,您可能还会在程序的其余部分遇到问题。

从问题的 Angular 看,似乎需要跟踪的只是欧洲大陆空间中多个点的最近邻居。我建议您从kd树的原始实现开始,并且在极端且不太可能的情况下,kd树的生成在时间或内存方面都过于昂贵,无法尝试找到一种方法跟踪每个元素的多个邻居,并仅在需要时更新列表。
但说实话,我过去一直在使用kd tree,并且我记得尽管数据集非常大(在2D空间中有数以百万计的点),但是生成和搜索的速度足以忽略不计。其他操作。

关于c++ - KD树是否仍然是用于移动对象的最佳算法之一,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59667853/

10-09 02:46