非欧几里德配置空间的最近邻居数据结构


15

我正在尝试实现用于RRT运动计划器的最近邻居结构。为了比线性蛮力最近邻搜索更好,我想实现像kd-tree这样的东西。但是,似乎经典的kd-tree实现假定空间的每个维度都可以分为“左”和“右”。例如,此概念似乎不适用于非欧几里德空间,例如SO(2)。

我正在使用具有完全旋转链接的串行机械臂,这意味着机器人的配置空间的每个维度都是SO(2),因此不是欧几里得。可以修改kd-tree算法来处理这些子空间吗?如果不是,是否还有另一个最近邻居结构可以处理这些非欧几里得子空间,同时仍然易于更新和查询?我还看了FLANN,但是从他们的文档中我还不清楚他们是否可以处理非欧几里德子空间。


顺便说一句,近似最近的邻居也很好(如果加速比很高
则更可取

1
虽然您接受了一个很好的答案,但是通常最好等待几天再接受一个答案,这样您才不会阻止进一步的回答,因为它可能会提供其他选择。
Mark Booth

谢谢马克,实际上我不确定接受答案之前要等待多长时间。
giogadi,2012年

Answers:


6

您是正确的,kd树通常仅在较小的欧几里德度量空间中工作。但是,对于度量空间中的一般最近邻应用程序,有很多工作(实际上可以在任何可以定义距离函数的地方)。

经典的工作是在球树上,然后将其推广为公制树

有一些新的工作称为覆盖树,甚至有GPL编码。我想研究这些树和kd树之间超过两年的性能特征。

希望这适合您的应用程序。


对不起,不接受;只是跟随另一个评论者的建议,给这个问题多几天的时间“炖”。不过,我确实发现您的答案很有帮助!
giogadi,2012年

Booo。开玩笑。我很高兴您发现这很有帮助。
克里斯·曼斯利

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.