根据维基百科,“大小的距离矩阵可以实现以避免距离重新计算,但这需要内存,而基于非矩阵的 DBSCAN 实现只需要记忆。”
基本上是三角矩阵。但是,它说基于非矩阵的实现只需要记忆。这是如何运作的?不管你使用什么数据结构,你不是总是必须有距离值?还是会空间复杂度,不是吗?我在这里缺少什么吗?我正在处理一个庞大的数据集,我真的很想减少内存使用量。
根据维基百科,“大小的距离矩阵可以实现以避免距离重新计算,但这需要内存,而基于非矩阵的 DBSCAN 实现只需要记忆。”
基本上是三角矩阵。但是,它说基于非矩阵的实现只需要记忆。这是如何运作的?不管你使用什么数据结构,你不是总是必须有距离值?还是会空间复杂度,不是吗?我在这里缺少什么吗?我正在处理一个庞大的数据集,我真的很想减少内存使用量。
您可以运行 DBSCAN 而不将距离存储在矩阵中。这样做的缺点是每次访问一个点时,都必须重新计算所有相关距离,这需要更多时间。但是,空间复杂度保持不变, 因为你在任何时候唯一的记忆是 n 个点的位置、它们的各种标签、当前点的邻居和特定邻居的邻居(如果该点是核心)观点。