贪心算法和回溯算法


上一章:分治法和动态规划http://www.cnblogs.com/suxi-blog/articles/6238831.html

下一章:分支限界法http://www.cnblogs.com/suxi-blog/articles/6240060.html

一.贪心算法

  1.贪心算法是把一个复杂的问题分解为一个较为简单的局部最优选择,每一步选择都是对当前解的一个扩展,直到获取问题的完整。贪心算法的典型运用是求解最优化问题,而且对许多问题都能得到整体最优解。(这里得到的结不一定是最优解,但一定是最优解的十分接近的解)

  2.可以使用贪心算法的要具有两个重要的性质:最优子结构和贪心选择性质

  (1)最优子结构:在这里就不再说了,要看的请到上一章的动态规划里看。

  (2)贪心选择性质:指问题的整体最优解可以通过一系列的局部最优的选择得到。

  3.贪心算法和动态规划的主要区别:

  (1)动态规划:只要求出相关的子问题的解后才能做出选择

  (2)贪心算法:仅当前的状态下做出最好的选择,即局部最优选,产生再去作出这样选择后产生的相关子问题的解。

  4.贪心算法通常被使用来求解最优的问题,从某初始化的状态出发,根据但前的局部最优策略以满足约束方程为条件,以是目标函数增长最快(最慢)为准则,在候选集合进行一系列的选择,以便尽快的构成问题的可行解。

  5.贪心算法的一般步骤:

  Greedy(C)            //C是问题的输入集合,即候选集合

  {        

    S={};            //初始化解集合为空集

    while(not solution(S))    //集合S没有构成问题的一个解

    {

      x=select(C);      //在候选集合C中做贪心选择

      if feasible(S,x)     //判断集合S中加入x后的解是否可行

      {

        S=S+{X};

      }

      C=C-{x};       //不管可不可行,都要从候选集中C删除x

    }

    return S;

  }

 

二.回溯算法

  1.回溯算法就是一种有组织的系统最优化搜索技术,可以看作蛮力法穷举搜索的改进。回溯法常常可以避免搜索所有可能的解,所以它是用求解组织数量较大的问题。(为什么?后面会解释)

  2.首先我们先了解一下一个基本概念“解空间树”:问题的解空间一般使用解空间树的方式来组织,树的根节点位于第1层,表示搜索的初始状态,依次向下排列。

  3.解空间树的动态搜索:在搜索至树中任一节点时,先判断该节点对应的部分是否是满足约束条件,或者是否超出目标函数的界,也就是判断该节点是否包含问题的最优解。如果肯定不包含,则跳过对该节点为根的子树的搜索,即所谓的剪枝;否则,进入该节点为根的子树,继续按照深度优先策略搜索。(这也是为什么回溯可以避免搜索所有的解)

  4.在搜索过程中,通常采用两种策略避免无效搜索:(1)用约束条件剪除得不到的可行解的子树

                        (2)用目标函数剪取得不到的最优解的子树

  (这两种方式统称为:剪枝函数)

  5.在用回溯法求解问题时,常常遇到两种典型的解空间树:

  (1)子集树:但所有的问题是从n个元素的集合中找出满足某种性质的子集时,相应的解空间树成为子集树

  (2)排列树:当所给出问题是确定n个元素满足某种性质的排列时,相应的解空间称为排列树。                                                                                   

  6.回溯法的一般步骤:

  (1)设置初始化的方案(给变量赋初始值,读入已知数据等)

  (2)变换方式去试探,若全部试完侧转(7)

  (3)判断此法是否成功(通过约束函数),不成功则转(2)

  (4)试探成功则前进一步再试探

  (5)正确方案还是未找到则转(2)

  (6)以找到一种方案则记录并打印

  (7)退回一步(回溯),若未退到头则转(2)

  (8)已退到头则结束或打印无解

7.回溯法的优点在于其结构明确,可读性强,易于理解,而且通过对问题的分析可以大大提高运行效率。

--------------------------------------------------------------------------------------------------------------------

今天就到这里,下一次:分支限界法

http://www.cnblogs.com/suxi-blog/articles/6240060.html

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM