我在7维空间中有大约10 ^ 4个点。对于某个应用程序,我需要在此输入上进行~10 ^ 6范围查询,以查找位于给定范围内的所有点。在此应用程序中,所有查询都使用相同的范围大小。这个问题的适当数据结构是什么?
kd-tree似乎很合适,但对于7维和小输出大小,它在查询的时间复杂度上几乎是线性的。另一个解决方案是范围树,但是对于此应用程序中的少量输入而言,它似乎过于复杂。此外,我没有看到任何这些结构使用范围是恒定大小的事实。例如,如果这是一维问题,则查询将要求位于大小为10的范围内的点,例如,在数字线的不同位置。
答案 0 :(得分:0)
嗯,这是一个迟到的答案,我不知道它现在是否有用。 您可以使用固定高度FQT(FHFQT或FHQT)[http://users.dcc.uchile.cl/~rbaeza/ftp/fqtrees.ps.gz]或固定查询数组(FQA)[http://www.dcc.uchile.cl/~gnavarro/ps/mtap01.pdf]。这些结构在这种相似性搜索中很有效。除此之外,您需要使用一个好的枢轴选择方法,如增量一个,以获得良好的结果。我假设您使用欧几里德距离,距离直方图是高斯分布。对不起我的英文......