通过将超级平面递归地分割成一半来构造普通kd树。要使用查询点进行范围搜索,它只会搜索一小部分(日志)而不是全部(线性)。
我想知道可以使用点积构建kd树吗?
例如,b是3d矢量列表:
b = np.random.rand(10,3)
a = (1,1,1) is a query vector
我想找到最近的bk满足:
a * bk > a * bi, for i = 1, 2, ...k-1, k+1, 10
我不想计算所有a * bi点产品对。
如何使用b构建树,当查询到来时,我只计算一些* bi?