42

这两种算法有什么区别?

4

3 回答 3

45

cKDTree是 KDTree 的一个子集,用Cython包裹的 C++ 实现,因此速度更快。

他们每个人都是

一个二叉树,每个节点代表一个轴对齐的超矩形。每个节点指定一个轴,并根据它们沿该轴的坐标是否大于或小于特定值来拆分点集。

但是KDTree

还支持所有邻居查询,包括点数组和其他 kd 树。这些确实使用了相当有效的算法,但 kd-tree 不一定是此类计算的最佳数据结构。

于 2011-08-03T18:24:54.367 回答
16

在一个用例中(在 KDTree 中查找大约 100K 点的 5D 最近邻)cKDTree 比 KDTree 快 12 倍左右。

于 2013-03-11T05:08:05.833 回答
2

目前,两者都有几乎相同的 API,并且cKDTreeKDTree. 因此,在不久的将来,SciPy 开发人员计划删除KDTree,并将以向后兼容的方式cKDTree重命名为。KDTree

参考:详细的 SciPy 路线图 — SciPy v1.6.0.dev 参考指南 https://docs.scipy.org/doc/scipy/reference/roadmap-detailed.html#spatial

于 2020-06-14T06:33:00.223 回答