zoukankan      html  css  js  c++  java
  • 贪心算法-极易理解篇

    参考链接:https://zhuanlan.zhihu.com/p/76164082?ivk_sa=1024320u,非常棒!!!

    图片前引:

                                

                             

     假设一个问题比较复杂,暂时找不到全局最优解,那么我们可以考虑把原问题拆成几个小问题(分而治之思想),分别求每个小问题的最优解,再把这些“局部最优解”叠起来,就“当作”整个问题的最优解了。

                                

    贪心算法的三步走!

      第一步:明确到底什么是最优解?明确下来之后用小本本记下来!

           第二步:明确什么是子问题的最优解?再用小本本记下来!

           第三步:分别求出子问题的最优解再堆叠出全局最优解?这步不用记!

            就是这么简单!

    示例:0-1背包问题

    有一个背包,最多能承载150斤的重量,现在有7个物品,重量分别为[35, 30, 60, 50, 40, 10, 25],它们的价值分别为[10, 40, 30, 50, 35, 40, 30],,阿广,如果是你的话,应该如何选择才能使得我们的背包背走最多价值的物品?

    按照刚才说的步骤实操一下吧!

    第一步,明确到底什么是最优解?

                               

    第二步,明确什么是子问题的最优解?再用小本本记下来!

                                   

    第三步,分别求出子问题的最优解再堆叠出全局最优解?

    按照制订的规则(价值)进行计算,顺序是:4 2 6 5 。

    最终的总重量是:130。

    最终的总价值是:165。

     

                                

    按照制订的规则(重量)进行计算,顺序是:6 7 2 1 5 。

    最终的总重量是:140。

    最终的总价值是:155。

    可以看到,重量优先是没有价值优先的策略更好。

     

                               

    按照制订的规则(单位密度)进行计算,顺序是:6 2 7 4 1。

    最终的总重量是:150。

    最终的总价值是:170。

    可以看到,单位密度这个策略比之前的价值策略和重量策略都要好。

                      

    贪心算法三个核心问题!!!

              

    是的,阿广,你说的基本意思正确!

    下面我总结一下使用贪心算法的前提:

    1、原问题复杂度过高;

    2、求全局最优解的数学模型难以建立;

    3、求全局最优解的计算量过大;

    4、没有太大必要一定要求出全局最优解,“比较优”就可以。

    那么几乎99.99999999999%就要使用贪心算法的思想来解决问题。

                        

    按串行任务分:时间串行的任务,按子任务来分解,即每一步都是在前一步的基础上再选择当前的最优解。

    按规模递减分:规模较大的复杂问题,可以借助递归思想(见第2课),分解成一个规模小一点点的问题,循环解决,当最后一步的求解完成后就得到了所谓的“全局最优解”。

    按并行任务分:这种问题的任务不分先后,可能是并行的,可以分别求解后,再按一定的规则(比如某种配比公式)将其组合后得到最终解。

     

                               

    成本

    耗费多少资源,花掉多少编程时间。

    速度

    计算量是否过大,计算速度能否满足要求。

    价值

    得到了最优解与次优解是否真的有那么大的差别,还是说差别可以忽略。

     

  • 相关阅读:
    HTC G7 搜索和感光按键修改
    Delphi开源组件SynEdit
    (转)Delphi获取windows系统版本信息
    TDateTime转UTC的时间差
    Windows7 C盘无法读写文件
    Convert UTC string to TDatetime in Delphi
    delphi抓全屏图,游戏窗口,游戏Client窗口
    ADO Table Locate
    Delphi与管道操作
    Delphi从UTC (GMT)返回时差
  • 原文地址:https://www.cnblogs.com/hjh-666/p/15400264.html
Copyright © 2011-2022 走看看