贪心算法

来源:互联网 发布:windows apm命令 编辑:程序博客网 时间:2024/06/07 06:42
       顾名思义,贪心算法总是做出在当前看来最好的选择。
       也就是说,贪心算法并不从整体最优上加以考虑,它所做出的选择只是在某种意义上的局部最优选择。
       虽然贪心算法不是对所有问题都能得到整体最优解,但对范围相当广的许多问题它能产生整体最优解,如单源最短路径问题最小生成树问题。
       对于一个具体的问题,怎么知道是否可以用贪心算法来解决此问题,以及能否得到问题的一个最优解?这个问题很难给予肯定的回答。但是,从许多可以用贪心算法求解的问题中可以看到它们一般具有两个重要的性质:贪心选择性质最优子结构性质
        1.贪心选择性质
       所谓贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。这是贪心算法可以得一个基本要素,也是贪心算法与动态规划算法的主要区别。在动态规划中,每步所做的选择往往依赖于相关子问题的解。因而只有在解出相关子问题后,才能做出选择。而在贪心算法中,仅在当前状态下做出最好选择,即局部最优选择。然后再去解做出这个选择后产生的相应的子问题。贪心算法所做出的贪心选择可以依赖于以往所做出的选择,但决不依赖于将来所做出的选择,也不依赖于自问题的解。
       正是由于这种差别,动态规划算法通常以自底向上的方式解决各子问题,而贪心算法则通常以自顶向下的方式进行,以迭代的方式做出相继的贪心选择,每做一次贪心选择就将所求问题简化为规模更小的子问题。
       2.最优子结构性质
       与动态规划类似。

0 0
原创粉丝点击