现在我正在对整个图表执行Dijkstra算法,并通过距离原点节点的总距离形成节点的最小堆。然后我从堆中删除前n个元素。
这让我感到非常低效。假设我需要找到10个最近的节点,我的图表有超过100000个节点。然后在整个图表上执行Dijkstra似乎是浪费时间。但问题是我不知道在没有计算图中每个节点的最短路径的情况下,我能找到前10个最近的节点。
有更好的方法吗?
答案 0 :(得分:5)
Dijkstra通过迭代添加距离源最小的节点来工作。这是我们确定距离的节点,永远不会有更短的路径。因此,如果我们想要找到10个最接近的节点,我们可以在将10个节点添加到闭合集后简单地终止搜索。