算法图解

瘦欲@ 提交于 2020-02-03 19:34:57

狄克拉斯特算法
找出两个点之间的耗时时间最短路径
步骤

  1. 找出耗时最短的节点
  2. 更新该节点的邻居开销,检查是否存在到邻居节点的最短路径
  3. 重复过程,直到对图中每个节点都这么做
  4. 计算最终路径
    在这里插入图片描述
    第一步:找出耗时最短的点,站在起点前往A需要6分钟,前往B需要2分钟。终点假设无穷大。
    在这里插入图片描述
    第二步:计算节点B前往各个邻居所需的时间。找到一条耗时更短的路径父节点改为B只需要5分钟。在这里插入图片描述
    前往终点的时间缩短为7分钟。
    第三步:重复
    重复第一步,找出最短时间内前往的节点。对节点B执行了第二步。除节点B外,可以最短前往A为5.
    重复第三步:更新A的邻居节点
    在这里插入图片描述
    最后到终点为6分钟
    狄克斯特拉算法只适合有向无环图
    负权边不能使用狄克拉斯特算法
    例:
    在这里插入图片描述
    采用狄克拉斯特算法首先处理海报这个节点,处理完成后不再处理海报,而处理唱片的时候导致到达海报节点的父节点再次改变,然而已经无法改变海报节点,以至于后面的耗时最短路径与实际不符
    在这里插入图片描述
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!