数据结构之图的最小路径

最小路径和树的那一节,最小生成树不同。
最小生成树,是图中连接了所有的顶点,所生成的边上的权值之和最小的生成的的树,是指所有路径相加起来和最小的树。它的权值,是在结点上的。
最小路径,讨论的是,如何确定指定的某个顶点,到其余任意一个顶点对应的的最短路径;以及,如何确定图中,任意两个顶点的最短路径。(这不是对图的打乱重组,只是在寻找现有的路径最小的那个)。

求某个顶点到其他各顶点的最短路径的Dijkstra(迪杰斯特拉)算法;求每一对顶点之间的最短路径的算法是,Floyed(弗洛伊德)算法。

Dijkstra(迪杰斯特拉)算法:
将图中顶点集合 V 分为两组,第一组是已求出的最短路径的顶点集合(用 S 表示),第二组为其余未确定最短路径的顶点集合(用 U 表示),按最短路径长度的递增次序依次把第二组放进 S 中。在加入过程中,始终保持从源点 V 到 S 中各顶点的最短路径长度不大于从源点 V 到 U 中任意顶点的最短路径长度。此外,各点对应一个距离,在 S 中顶点的距离就是从源点 V 到此顶点的最短路径长度。在 U 中的顶点的距离,是从源点 V 到此顶点的且只包括 S 中的顶点作为中间顶点的当前最短路径长度。

Floyd(弗洛伊德)算法:
对于从vi到vj的弧,进行n次试探:首先考虑路径vi,v0,vj是否存在,如果存在,则比较vi,vj和vi,v0,vj的路径长度,取较短者为从vi到vj的中间顶点的序号不大于0的最短路径。在路径上再增加一个顶点v1,依此类推,在经过n次比较后,最后求得的必是从顶点vi到顶点vj的最短路径。

参考链接:
https://www.cnblogs.com/smile233/p/8303673.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值