Algorithm 迪克斯特拉';时间O中的s算法(k | V |和#x2B | E |)

Algorithm 迪克斯特拉';时间O中的s算法(k | V |和#x2B | E |),algorithm,graph,distance,minimum,Algorithm,Graph,Distance,Minimum,对于无向图和连通图G=(V,E),我必须计算与源节点s的最小距离,图G=(V,E)在弧上的权重属于集合{1,2,…,K},其中K是一个固定整数。利用这些图的特性实现Dijkstra算法,以便以O(k | V |+E |)为单位计算最小距离。我不知道如何解决这个问题……所以我不需要具体的代码,但我需要一个算法的想法。我想试试,你熟悉原始的Dijkstra算法吗?是的,我熟悉Dijkastra的算法一个想法是将权重“I”的边拆分为权重1的“I”边。然后,生成的图形将不加权,您可以对其进行简单的BFS

对于无向图和连通图G=(V,E),我必须计算与源节点s的最小距离,图G=(V,E)在弧上的权重属于集合{1,2,…,K},其中K是一个固定整数。利用这些图的特性实现Dijkstra算法,以便以O(k | V |+E |)为单位计算最小距离。我不知道如何解决这个问题……所以我不需要具体的代码,但我需要一个算法的想法。

我想试试,你熟悉原始的Dijkstra算法吗?是的,我熟悉Dijkastra的算法一个想法是将权重“I”的边拆分为权重1的“I”边。然后,生成的图形将不加权,您可以对其进行简单的BFS。但不确定它是否能满足复杂性要求。我解决了这个问题,dijkastra算法中的LOG | E |是由堆的更新引起的,但在这种情况下,我不需要堆,因为弧上的权重是有限的……因此,使用dijkastra的思想,从1到k循环并将权重为1的节点添加到权重为k的节点就足够了。这个循环的复杂性是O(k | V |)。