Подтвердить что ты не робот

Разница между scipy.spatial.KDTree и scipy.spatial.cKDTree

В чем разница между этими двумя алгоритмами?

4b9b3361

Ответ 1

cKDTree - это подмножество KDTree, реализованное в C++, завернутое в Cython, поэтому быстрее.

Каждый из них

двоичное trie, каждый из узлов которого представляет собой гиперповерхность, выровненную по оси. Каждый узел определяет ось и разбивает множество точек на основании того, является ли их координата вдоль этой оси больше или меньше определенного значения.

но KDTree

также поддерживает запросы соседей, как с массивами точек, так и с другими kd-деревьями. Они используют достаточно эффективный алгоритм, но kd-дерево не обязательно является лучшей структурой данных для такого рода вычислений.

Ответ 2

В случае использования (ближайший сосед ближайшего соседства 5D в KDTree с приблизительно 100K точек) cKDTree примерно в 12 раз быстрее, чем KDTree.