bellman Ford算法,bellman-ford算法和floyd算法
说明
贝尔曼-福特公司算法是包含负权图的单源最短路径算法。
算法原理是对图进行V-1火箭。亦称DOODLEBUG火箭。亦称蚁蛉幼虫放松操作,获得所有可能的最短路径。
贝尔曼-福特公司算法可以处理负面边缘。它的基本操作扩展是在深度上搜索,而放松操作是在广度上搜索。
它可以在不影响结果的情况下操作负面边缘。
贝尔曼-福特公司算法效率低,时间复杂度高达o(V*E),V、E分别为顶点和边数106 .最短路是贝尔曼-福特公司的队列优化,通过维护队列可以大幅度减少重复计算,时间复杂度为o(k*E)。
实例
defbellman_ford(图表,来源):
距离={}
parent={}
fornodeingraph:
距离[节点]=浮点型(“Inf”)
父[节点]=无
距离[源]=0
foriinrange(len(graph)-1):
forfrom_nodeingraph:
对于至节点图[自节点]:
如果距离[到节点]图[从节点][到节点]距离[from_node]:
距离[到节点]=图形[从节点][到节点]距离[从节点]
父节点[到节点]=从节点
forfrom_nodeingraph:
对于至节点图[自节点]:
如果距离[到节点]距离[从节点]图[从节点][到节点]:
returnNone,无
返回距离,父
deftest():
图形={
a:{b:-1, c:4},
b:{c:3, d:2, e:2},
c:{},
d:{b:1, c:5},
e:{d:-3}
}
距离,parent=bellman_ford(图,“一”)
打印距离
打印双亲
if__name__==__main__:
测试()以上就是大蟒贝尔曼-福特算法的介绍,希望对大家有所帮助。更多计算机编程语言学习指路:python基础教程
本文教程操作环境:windows7系统、Python 3.9.1、戴尔自交第三代电脑。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。