標題:efanna:基于KNN-Graph的超快ANN算法
- 基本思路:在KNN-Graph上保留一個randomize kd-trees低斋,作為KNN-Graph的入口點
- 搜索算法:
- 在randomize kd-trees上先搜索厉碟,每個tree平均分配限額,最終保留E個最近點做圖的入口點路媚;
- 在圖上找這些入口點的鄰居們,每一次迭代保留最近的P個樊销,迭代I次整慎,返回結(jié)果渗饮。
- 構(gòu)建算法:通過randomize kd-trees優(yōu)化nn-descent的初始化圖
- 構(gòu)建randomize kd-trees惦辛;
- 對于每一個數(shù)據(jù)集中的點q绣檬,以及每一個kd-tree指攒,找到對應的target leaf容贝,然后去找它的sibling(二叉kd-tree只有一個兄弟)嘀倒,然后在以sibling為根的子樹上找到離q最近的leaf页藻;以這樣的方式向上每層找一個兄弟软免,直到一個給定層周循。
- 用找到的K個最近鄰初始化KNN-Graph
-
NN-descent來迭代優(yōu)化KNN-Graph