图的应用,最小生成树,最短路径,拓扑排序,关键路径算法(数据结构的学习)

最小生成树

定义:在一个联通网的所有生成树中,各边的代价之和最小的那棵生成树称为该连通图的的最小生成树。
在构造最小生成树 的算法中,大多利用了最小生成树的一个简称MST的性质:假设N=(V,E)是一个联通网,U是顶点V的一个非空子集。若(u,v)是一条具有最小权值的边,其中u属于U,v属于V-U,则必存在一棵包含(u,v)的最小生成树

普里姆算法(Prim)

构造过程:
加点法
假设N=(V,E)时连通图,TE是N上最小生成树中边的集合。

1、U={uo}(uo∈V),TE={}.

2、在所有u∈U,v∈V-U的边(u,v)∈E中找一条权值最小的边(uo,vo)并入集合TE,同时vo并入U。

3、重复2,直至U=V为止。

此时TE中必有n-1条边,则T=(V,TE )为N的最小生成树
算法

待补充

注意:每次选择最小边时,可能存在多条同样权值的边可选,此时任意选其一即可

克鲁斯卡尔算法 Kruskal

构造过程:
假设联通网N=(V,E),将N中的权值按照从小到大的顺序排序。
1、初始状态为只有n个顶点而无边的非连通图T=(V,{}),图中每个顶点自成一个连通分量。
2、在E中选择权值较小的边,若该边所依附的顶点落在T中不同的连通分量上(即不形成回路),则将此边加入到T中,否则舍去此边而选择下一条权值最小的边。
3、重复2,知道T中的所有顶点都在同一连通分量上。

可以看出克鲁斯卡尔算法是逐步增加生成树的边,与普里姆算法相比,可称为“加边法”。
算法

\\有待补充

最短路径问题

在带权有向网中,习惯上称路径上的第一个顶点为源点,最后一个顶点为终点

从某个源点到其余各顶点的最短路径

---------迪杰斯特拉算法

基本思想
通过迪杰斯特拉算法计算图G中的最短路径时,需要指定起点s。
此外,需要引进两个集合S和U。S的作用是记录已求出最短路径的顶点(以及相应的最短路径长度),而U则是记录还未求出最短路径的顶点(以及该顶点到起点s的距离)。
初始时,S中只有起点s;U中是除s之外的顶点,并且U中顶点的路径是“起点s到该顶点的路径”。然后,从U中找到路径最短的顶点,并将其加入到S中;接着,更新U中的顶点和顶点对应的路径。然后,再从U中找到路径最短的顶点,并将其加入到S中;接着,更新U中的顶点和顶点对应的路径。……重复该操作,直到遍历完所有顶点。
操作步骤
初始时, S只包含起点s;
1、U包含除s之外的其他顶点,且U中顶点的距离为“起点s到该顶点的距离”【例如:U中顶点v的距离为(s, v)的长度,然后s和v不相邻,则v的距离为∞】。
2、从U中选出“距离最短的顶点k”,并将顶点k加入到S中;同时,从U中移除顶点k。
3、更新U中各个顶点到起点s的距离。之所以更新U中顶点的距离,是由于上一步中确定了k是求出最短路径的顶点,从而可以利用k来更新其他顶点的距离;例如,(s, v)的距离可能大于(s, k)+(k, v)的距离。
4、重复步骤2和3,直到遍历完所有顶点。

迪杰斯特拉算法的实现

算法:

有待补充:

2.每一对顶点之间的最短路径

弗洛伊德算法

利用邻接矩阵的方式
………………

拓扑排序

1、 AOV—网
用顶点表示活动,用弧表示活动间的优先关系的有向图称为顶点表示活动的网 简称 AOV—网。

2、拓扑排序的过程:
(1) 在有向图中选一个无前驱的顶点且输出它。
(2) 从图中删除该顶点和所有以它为尾的弧。
(3)重复(1)(2),直至不存在无前驱的顶点
若此时输出的顶点数小于有向图中的顶点数,则说明有向图中存在环,否则输出的顶点序列即为一个拓扑序列
3、拓扑序列的实现
………………
………………


关键路径

1、AOE—网
与AOV-网相对应的是AOE-网,即以边表示活动的网。AOE-网是一个带权的有向无环图,其中顶点表示事件,弧表示活动,权表示活动持续的时间。
在AOE-网中一条路径各弧上的权值之和称为该路径的带权路径长度
要估算整项工程完成的最短时间,就是要找到一条从源点到汇点的带权路径长度最长的路径,称为关键路径
如何确定关键路径,首先定义4个描述量
一、事件Vi的最早发生时间ve(i)
二、事件vi的最迟发生时间vl(i)
三、活动ai=<vj,vk>的最早开始时间e(i)
四、活动ai=<vj,vk>的最晚开始时间l(i)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值