prim算法证明

算法过程

本文只将证明;过程参见:https://blog.csdn.net/luoshixian099/article/details/51908175

算法证明

有用推论

九层之台,起于累土;为了证明prim算法,可以先将一些理论证明,然后再以此为基础证明prim。

论据1 最小生成树可能不只一种
论据2 树做为无环图,若树中任意两点u v没有直接连接边,u v连接成边后树则变成了有环图。证明 树的uv 有是连通的,再uv 直接相连后 u到v有两条路径,所以 成环
论据3 所有的最小生成树 都会包含至少一个 权重值最小的边。 证明 采用反证法: 如果最小生成树不包含权重最小的边,则将一个权重最小的边cd添加到树上变成有环图(依据论据2)。则此环中肯定至少一个边ab 大于 权重最小边cd,删除此边ab后,生成树总权值变小,如果这样那么 此树不是最小生成树。
论据4 每个权重最小的边都有至少一种最小生成树包含。证明 依据论据3 ,那么最小生成树一定至少一个 权重值最小的边。假设 最小权重边有 ab cd ,最小生成树包含ab ,添加 cd变成环,去除此环中的另一个最小边,生成新的最小生成树

算法证明

图片来源于算法过程中的链接

上述图片来源于算法过程指向的链接

先找到最小权重边,此边一定是某个最小生成树的边,根据上述论据一定存在过ac的最小生成树。 此时 ac 是一个图 bdef是一个图,又因为这个场景下必有最小生成树存在(根据论据4),选择cf作为 ac 与bdef一定在一个最小生成树之中。因为如果此场景下最小生成树不包含cf,将cf连接成环 cf的距离小于等于所有别的点到ac的距离,因此可以替换,替换相等权重的边,说明此场景存在多个最小生成树,但至少有一个过cf的最小生成树,替换的边权值更大则不是最小生成树,与假设矛盾。因此cf一定是一个最小生成树的边。以此类推 prim算法则最后产生的树就是一种最小生成树。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值