【发布时间】:2013-08-11 06:35:39
【问题描述】:
我对 "find k 最近的邻居" 算法有一个轻微的变体,它涉及拒绝那些不满足特定条件的算法,我想不出如何有效地做到这一点。
我所追求的是找到当前视线内的 k 个最近邻居。不幸的是,scipy.spatial.cKDTree 没有提供使用过滤器进行搜索以有条件地拒绝点的选项。
我能想出的最佳算法是查询 n 个最近邻,如果视线内没有 k 个,则再次查询 2n 个最近邻并重复。不幸的是,这意味着在最坏的情况下重复重新计算 n 个最近的邻居。我必须重复此查询的次数越多,性能影响就越差。另一方面,如果不需要返回的大部分点数,则将 n 设置得太高可能会造成浪费。
视线经常变化,所以我也不能每次都重新计算cKDTree。有什么建议?
【问题讨论】:
标签: python constraints nearest-neighbor kdtree