普利姆算法的正确性证明

已知条件:

图p是一个连通图,Y是对p使用prim算法得到的一棵生成树,Y1是p的一棵最小生成树

1.若Y=Y1,显然prim算法是正确的

2.Y≠Y1,可进行如下推导:

a)Y中有n(n≥1)条边不存在于Y1中,在构建Y的过程中,第一次遇到这样的一条边时(以e表示),则e的一个端点u落在V内(V是之前的prim运算得到的一个子顶点集),另一个端点v落在V外

b)Y1是连通的,故Y1中存在u到v的一条的路径,此路径上必然存在一条边f,它的一个端点落在V内,另一个端点落在V外

c)把e加入Y1,去掉f,Y1仍然连通,根据prim算法,权值W(f)≥W(e),否则e不会被选入V,如果W(f)>W(e),新构建的树的权值和会比Y1小,而Y1是最小生成树,因此W(f)>W(e)不成立,得W(f)=W(e)

d)对每一条类似e的边,重复过程c),最终Y和重新构建的的Y1拥有的边完全一致,新构建的Y1也是最小生成树,因此Y也是最小生成树,证明prim算法正确

 

转载于:https://www.cnblogs.com/sky-view/p/3250972.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值