维基百科中的link关于kd-tree存储内部节点中的点。我必须执行NN查询,我想(这里是新手),我理解这个概念。
然而,据说我从计算几何算法和应用程序(De Berg,Cheong,Van Kreveld和Overmars)研究Kd树,第99页第5.2节。我可以看到的主要区别是Overmars放置了分裂数据在内部节点和叶子中数据集的实际点。例如,在2D中,内部节点将保持分割线。
另一方面,维基百科似乎在内部节点和叶子中存储点(而Overmars仅存在于叶子上)。在这种情况下,我们如何进行最近邻搜索?而且,为什么会出现这种差异?
答案 0 :(得分:1)
默认的k-d-tree应该将数据集分割为一个点。然后将此点存储在内部节点上,并在搜索时沿着该树向下走时检查为邻居。
当然你可以有各种各样的kd-trees变体,其中split可能在不同的位置,当没有元素正好在分裂位置时,你不能再在内部节点中有一个。
此外,由于k-d-tree不是动态的,当通过墓碑模拟删除时,内部节点可能只包含一个墓碑(代表一个删除的对象)。