bellman Ford算法,bellman-ford算法和floyd算法

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: