数据结构:图(三) 图的应用

这篇文章讲一下图的一些应用。

一、最小连通代价问题

二、最短路径问题

三、有向图在工程中的应用(AOV网络、AOE网络)

 

一、最小连通代价问题

无向连通图的生成树有很多,如果图的边具有权值,那么各个生成树的边的权值之和大小就不同。在所有生成树中,权值之和最小的一棵成为最小生成树。

1.最小生成树:假设图是一个加权连通图,具有最小权值之和的生成树称为最小代价生成树。Minimum Cost Spanning Tree (MST)

举一个例子:假设有一个网络,用以表示n个城市之间假设通信线路,边上的权值代表架设通信线路的成本。如何架设才能使线路架设成本达到最小?

这个问题的答案:

2.MST性质:假设 G=(V,E) 是加权连通图,U是V的非空子集, 若(u0, v0)是一条最小权值的边,其中u0∈U,v0∈V-U;则: (u0, v0)必在最小生成树上。 (这里给大家说一下,所谓最小权值的边,我认为是与u0相连的所有带权值边中权值最小的边,而不是所有带权值边中权值最小的边(也可能理解的不对,有不对的地方还请大家批评指正))

3.最小生成树的构造方法

有多种算法,最常用的是以下两种:Kruskal(克鲁斯卡尔)算法——边归并 、Prim(普里姆)算法 ——顶点归并。

这两种方法都是采用的贪心策略,都是基于MST性质的。

贪心准则:选两个顶点不在同一连通分量上的边中权值最小的。

(1)克鲁斯卡尔(Kruskal)方法:

设 N= { V , E}是有n 个顶点的连通网,

步骤:

①首先构造一个只有n个顶点但没有边的非连通图T={V,∅},图中每个顶点自成一个连通分量;

②在边集E中选择具有最小权值的边,若该边的两个顶点落在T中不同的连通分量上,则将此边加入到生成树的边集合T 中;否则将此边舍去,重新选择一条权值最小的边;

③如此重复下去,直到所有顶点在同一个连通分量上为止。 此时的T即为所求(最小生成树)。

举例:

右图中边的权值由小到大代表该边被选择的顺序(如权值为2的边,代表该边是第二个被选择的边)。

(2)普利姆(Prim)方法:

设:N =(V , E)是个连通网, 另设U为最小生成树的顶点集,TE为最小生成树的边集。

步骤:

①初始状态:令U={u0},u0∈V,TE={},T={V,TE};

②在所有u∈U,v∈V-U的边(u,v)中找一条权值最小的(u',v'),(u',v')并入TE,即TE=TE∪{(u′,v′)},v′并入U,即U=U∪{v′};

③ 重复第二步,直到U=V为止。此时TE中必有n-1条边, T=(U,TE)就是最小生成树。

举例:

 

二、最短路径问题

在现实中,有时要从甲地到乙地,有两种型录的方案:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值