NN算法如何在八叉树上工作?我搜索了一个很好的解释,但大多数时候人们只是说使用了KD树。我不能这样做,我需要逐步在八叉树上可视化NN算法。
我认为最合乎逻辑的方式是:
1)找到该点所属的子八分圆。
2)计算到该八分圆中最近点的距离
3)检查该距离内是否与相邻的八分圆重叠
4)如果找到更近的点,则重新计算搜索距离。
5)重复,直到遍历了所有可能的八分圆
6)返回最近的点
但我不能为这一步做好一步一步的可视化。
答案 0 :(得分:2)
要查找距离搜索点最近的点,或者按照距离增加的顺序获取点列表,可以使用可以保存树的两个点和内部节点的优先级队列,这样可以按顺序删除它们距离。
对于点(叶子),距离就是该点距搜索点的距离。对于内部节点(八分圆),距离是从搜索点到可能在八分圆中的任何点的最小距离。
现在,要进行搜索,只需将树的根放在优先级队列中,然后重复:
这将按照距离搜索点的距离增加的顺序生成树中的所有点。同样的算法也适用于KD树。