DBSCAN - O(n) 的空间复杂度?

数据挖掘 聚类 可扩展性 数据库扫描
2022-03-11 07:25:50

根据维基百科,“大小的距离矩阵(n2n)2可以实现以避免距离重新计算,但这需要O(n2)内存,而基于非矩阵的 DBSCAN 实现只需要O(n)记忆。”

(n2n)2基本上是三角矩阵。但是,它说基于非矩阵的实现只需要O(n)记忆。这是如何运作的?不管你使用什么数据结构,你不是总是必须有(n2n)2距离值?还是会O(n2)空间复杂度,不是吗?我在这里缺少什么吗?我正在处理一个庞大的数据集,我真的很想减少内存使用量。

1个回答

您可以运行 DBSCAN 而不将距离存储在矩阵中。这样做的缺点是每次访问一个点时,都必须重新计算所有相关距离,这需要更多时间。但是,空间复杂度保持不变O(n), 因为你在任何时候唯一的记忆是 n 个点的位置、它们的各种标签、当前点的邻居和特定邻居的邻居(如果该点是核心)观点。