一尘不染

我可以使用任意指标搜索KD树吗?

algorithm

我刚刚完成了执行快速最近邻居搜索的kd树。我有兴趣尝试使用除欧几里得距离以外的其他距离度量标准。我对kd-
tree的理解是,如果度量标准是非欧几里得,则不能保证快速的kd-
tree搜索能够提供准确的搜索,这意味着如果我想尝试,可能需要实现新的数据结构和搜索算法为我的搜索列出新指标。

我有两个问题:

  1. 使用kd树是否将我永久固定到欧几里得距离
  2. 如果是这样,我还应该尝试其他哪种算法来处理任意指标?我没有太多时间来实现许多不同的数据结构,但是我正在考虑的其他结构包括Cover Treevp-trees

阅读 214

收藏
2020-07-28

共1个答案

一尘不染

您链接到的Wikipedia页面上描述的最近邻居搜索过程可以肯定地推广到其他距离度量,只要您用给定度量的等效几何对象替换“超球”,并测试每个超平面与该对象的交叉点即可。

例如:如果您改用曼哈顿距离(即矢量分量中所有差的绝对值的总和),则超球面将变成(多维)菱形。(这最容易以2D形式显示-如果当前最近的邻居与查询点 p的
距离为 x ,则在另一个超平面之后的任何更近的邻居都必须与宽度和高度为2x且以 p 为中心的菱形相交)
。这可能会使超平面交叉测试更难编码或运行较慢,但是一般原理仍然适用。

2020-07-28