作业帮 > 数学 > 作业

有向图中,权值的范围为0到常数W的整数,给定源点s,修改Dijkstra算法,使最短路的时间复杂度为O(WV+E)

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/05/24 00:59:24
有向图中,权值的范围为0到常数W的整数,给定源点s,修改Dijkstra算法,使最短路的时间复杂度为O(WV+E)
如何做Dijkstra也要比O(WV+E)好吧
一个偏堆实现的Dijkstra都是O(VlogV+E)吧
一个带有懒操作的基数堆实现的Dijkstra的额外空间复杂度O(Klog),时间复杂度是O(Vlog + E)
令k = W,而且不必带有懒操作,只需额外花费O(W)的空间,即可取得O(V+E)的复杂度
再问: 快告诉我基数堆如何实现
再答: http://ocw.mit.edu/courses/sloan-school-of-management/15-082j-network-optimization-fall-2010/lecture-notes/MIT15_082JF10_lec06.pdf有各种不同的实现,这个实现相对简单,复杂度O(Vlog[VW] + E)
把上面的桶的数量增加到W*V,每个桶的范围是1,那么就是O(WV+E)的时间复杂度O(WV)空间复杂度,但是循环使用那些桶,可以用W个桶,空间复杂度可以降低为O(W)