• 算法入门5:贪心算法


    贪心算法中“贪心”二字形象的说明了该算法的基本思想:贪心(每一步选择都是眼下的局部最优选择)。

    比如每次给你1张面额不定的纸币,共10次,你这么选?肯定是每次都要一张100元的。当你要拿第一张时,此时眼下最优的选择就是拿一张100的,不会管拿了之后会不会对后面的9张产生影响。这就是一种贪心,当然这种情况下的贪心选择也是最优的选择,因为局部最优导致了整体的最优。

    贪心算法常用于求解最优解问题,比动态规划思路简单,前提是要求问题满足贪心选择性质。

    形象的讲:

    贪心算法的每次选择就是只看当前的利益,不管当前的选择对后面选择的影响,所以如果当前的选择对之后的选择有影响时,这种选择就不一定最优了。

    动态规划就是三思而后行,在考虑当前选择能产生的各种结果中选择一个最优的,想得多速度也就慢了。

    比如上面的例子,如果规定超过2张100,后面每张就都只会给1元的,那么按照贪心选择依然会前两张选择100的,后面就只能拿1元的,总共208元。按照动态规划,则会聪明的先选一张100元,后面每次都选择50元,总共550元。

    贪心算法

        贪心算法思想简单,应用场合也广泛。

       使用贪心算法,问题必须满足最优子结构性质和贪心选择性质。

    贪心选择性质

       问题的全局最优解是通过局部最优选择得到的。

    经典问题

    (1)背包问题(物体可切分时的0-1背包问题)

    (2)Huffman编码

    (3)单源最短路径

    (4)Prim算法

    (5)Kruskal算法

    (6)最优三角剖分

    之前写的博客:

    Prim算法

    理解动态规划算法与贪心算法区别----找钱问题

    PS:贪心算法比较容易理解,写的比较简略,后续有想法再补充。

    转载本文请注明作者和出处

    作者 :JarvisChu

    出处:http://blog.csdn.NET/jarvischu

  • 相关阅读:
    Jmeter 跨脚本入参
    Jmeter 查看结果树显示unicode转中文
    jmeter+ant 接口自动化测试框架
    jmeter jmeter.results.shanhe.me.xsl 模板内容
    Jmeter + ant 接口自动化测试(进阶)
    Linux od命令
    Hadoop初识
    tbn tbc tbr
    ffmpeg之avcodec_open2
    ffmpeg之AVStream
  • 原文地址:https://www.cnblogs.com/aabbcc/p/6504542.html
Copyright © 2020-2023  润新知