贪心法

贪心法的证明

  —归纳证明:

    —贪心法使用的条件是:最优子结构和贪心选择正确性

    —贪心算法是一步一步实现的,

      —在归纳证明的时候,贪心的第一步贪心选择策略的正确性就是归纳基础,因为以后都是一个子问题的选取,每次都需要进行第一步的选择

      —归纳步骤

        —假设进行到第k步贪心选择都是正确的,证明第k+1步贪心选择也是正确的

  —归纳过程

    —归纳基础:第一步贪心选择的正确性,常常用 cut and paste 的思想证明贪心选择得到最优子结构

      —如果现在有一个最优解,第一步选择未知,但是第一步选择明显可以换成贪心选项,那么说明选择第一步贪心选择的结构也是最优子结构

    —归纳步骤:前面k步已经形成了一个最优子结构(其实就是最优的k步选择),现在要说k+1步选择使用贪心选择也可以形成一个最优结构

      —一个最优子结构可以分成两部分:前面k步最优选择和剩余的

      —剩余部分是一个最优子结构(否则与假设矛盾),那么归纳基础可以使用,就是在剩余的问题里也做第一步贪心选择

      —这步贪心选择添加到前面k步的贪心选择中,形成一个k+1步贪心选择下的最优结构,证明了k+1步也进行贪心选择是正确的

 

MST算法复杂度分析

Prim算法

  —

    —每个点有一个加入某个等价类的最小代价 key[i]

  —

 

最短路径复杂度分析

Dijkstra算法

  —

  —

  —该算法不适用于带有负权的边:因为Dijkstra算法在确定一个点已知最近点的过程中,

   都保证它为目前剩余所有点中到源点的最近点,如果有负边,那么这个性质被打破。

   不过根据这个原理,用Dijkstra求最短路的图不能有负权边,因为扩展到负权边的时候会产生更短的距离,有可能就破坏了已经更新的点距离不会改变的性质。

      

转载于:https://www.cnblogs.com/siyudemo/archive/2013/06/14/3136728.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值