如果我的问题表述不清楚,请告诉我,我会尽力重新表述!
我们有一个大的道路网络(>1,000,000个节点,>3,000,000条边),这个图是无权重和无向的。在这个图中,我们将随机选择1000个节点作为“警察局”。
为了找到从每个节点到最近警察局的距离,我通过实现多源BFS算法解决了这个问题,在开始时将警察局节点添加到队列中。复杂度为O(V+E),而普通BFS运行V次的复杂度为O(V(V+E))。
然而,我想不到一种修改此算法以查找从每个节点到K个最近警察局的距离的方法,而不仅仅是最近的一个。
如果您能建议适当的算法或指导方向,我将非常感激!
我们有一个大的道路网络(>1,000,000个节点,>3,000,000条边),这个图是无权重和无向的。在这个图中,我们将随机选择1000个节点作为“警察局”。
为了找到从每个节点到最近警察局的距离,我通过实现多源BFS算法解决了这个问题,在开始时将警察局节点添加到队列中。复杂度为O(V+E),而普通BFS运行V次的复杂度为O(V(V+E))。
然而,我想不到一种修改此算法以查找从每个节点到K个最近警察局的距离的方法,而不仅仅是最近的一个。
如果您能建议适当的算法或指导方向,我将非常感激!
VKlogP
的原因。假设您使用的是最大堆,并且建立它需要O(k),那么在最坏的情况下,对P次进行堆化将会花费O(PlogK),因此它不应该是O(K + PlogK)
吗? - Siddharth Kamaria