#avl-tree #nearest-neighbor #metrics #point #insertion #vp #updateable

nightly vp-avl

一种结合了 Vantage-Point AVL 树的复合结构,使得 VP 树可更新

6 个版本

0.1.5 2024年4月4日
0.1.4 2024年2月19日

#16 in #insertion

MIT/Apache

32KB
639 代码行(不包括注释)

VP-AVL

这提供了一种新型的 VP 树,它还集成了 AVL 树的特性,允许在不完全重建树的情况下插入树中。在实践中,批量构建树仍然更快(对于包含 1000 个元素的树,经验上快约 40%,对于包含 1,000,000 个元素的树,快约 2.5 倍),但显然仍然比每次插入时重建树要快得多。

要使用提供的欧几里得距离度量和一些实现 IntoIterator 的类型批量插入,只需

        let random_points = k_random(10000);

        let avl = VpAvl::bulk_insert(EuclideanMetric::default(), random_points);

或迭代地

        let random_points = k_random(10000);

        let avl = VpAvl::new(EuclideanMetric::default());

        for point in random_points{
            avl.insert(point)
        }

要遍历点的最近邻,调用 nn_iter

    let query_point = vec![1.0,1.0,2.0,3.0,5.0];

    for point in avl.nn_iter(&query_point){
        ...
    }

依赖项

~315KB