图解最短路径问题 Dijkstra Floyd,纯手绘图

本文通过图解详细介绍了Dijkstra算法和Floyd算法求解最短路径的过程。Dijkstra算法从源点逐步扩展最短路径,Floyd算法则通过中间点寻找两点间的最短路径。文章提供了算法思想,并提及后续会补充代码实现。
摘要由CSDN通过智能技术生成

Dijkstra:

  • 算法思想: 从某个源点到各个点的最短路径。将各顶点与v0间的最短路径。按路径长度递增次序,产生最短路径算法。
    这样说可能很抽象,结合一下图来看可能会更好理解。

  • 集合S表示从v0开始到集合s内的点,已找到最短路径。T表示未找到最短路径的点。在整个带权有向图中,只要找到v0到T集合中最短路径的点,就把该点收到S集合中。

  • 第一轮,v0被收入S集合中,其他点都在T中。此时需要找v0到T各个点的最短路径。由下图1表格根据有向图的权值画的图可知,v0->v2最小。v2加入S中。

  • 第二轮,图二,当v2加入s时,看看有没有路径是由v0出发,通过v2到达的点。由图可知,v3此时有路了,v0->v2->v3=60, 而v4和v5没有因为v2的加入从v0到达的权值更小(如果经过v2反而更大了),因此权值不改,原来的路径不改(图中↓表示路径不改,直接用上一轮的路径)。此时比较最短路径,v4最小,v4加入S中。

  • 重复以上步骤,三四五轮后,所有点都在S中了,此时所有最短路径找到了。

在这里插入图片描述
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值