三大算法总结

一。分治:
基本思想:
      将一些难以解决的大问题分割成规模较小的相同问题,对于一个问题规模为n的问题,如果能直接解决,则解决,否则将其拆开,
分治法适用的情况

  分治法所能解决的问题一般具有以下几个特征:

  1) 该问题的规模缩小到一定的程度就可以容易地解决

  2) 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质。

  3) 利用该问题分解出的子问题的解可以合并为该问题的解;

  4) 该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子子问题。

第一条特征是绝大多数问题都可以满足的,因为问题的计算复杂性一般是随着问题规模的增加而增加;

第二条特征是应用分治法的前提它也是大多数问题可以满足的,此特征反映了递归思想的应用;、

第三条特征是关键,能否利用分治法完全取决于问题是否具有第三条特征,如果具备了第一条和第二条特征,而不具备第三条特征,则可以考虑用贪心法或动态规划法。

第四条特征涉及到分治法的效率,如果各子问题是不独立的则分治法要做许多不必要的工作,重复地解公共的子问题,此时虽然可用分治法,但一般用动态规划法较好。
六、可使用分治法求解的一些经典问题

(1)二分搜索
(2)大整数乘法
(3)Strassen矩阵乘法
(4)棋盘覆盖
(5)合并排序
(6)快速排序
(7)线性时间选择

(8)最接近点对问题
(9)循环赛日程表
(10)汉诺塔


二。动态规划:
基本思想:
将待求的问题分解为若干状态,下一状态依靠上一状态来决定,而分治则是将为问题分成若干子问题,子问题之间是独立的。并且动规的问题是 某个状态以后的状态不影响之前的状态,只与当前的状态有关,一定要清楚你当前解决的问题是怎么来的,时候怎么通过一步步到现在的状态,清楚上一步的状态的所有可能,然后再写出在这一步中所有可能做出的决定,判断当前决策,问题就可以轻松的解决啦;
四、求解的基本步骤

  动态规划所处理的问题是一个多阶段决策问题,一般由初始状态开始,通过对中间阶段决策的选择,达到结束状态。这些决策形成了一个决策序列,同时确定了完成整个过程的一条活动路线(通常是求最优的活动路线)。如图所示。动态规划的设计都有着一定的模式,一般要经历以下几个步骤。

  初始状态→│决策1│→│决策2│→…→│决策n│→结束状态

  图1 动态规划决策过程示意图

  (1)划分阶段:按照问题的时间或空间特征,把问题分为若干个阶段。在划分阶段时,注意划分后的阶段一定要是有序的或者是可排序的,否则问题就无法求解。

  (2)确定状态和状态变量:将问题发展到各个阶段时所处于的各种客观情况用不同的状态表示出来。当然,状态的选择要满足无后效性。

  (3)确定决策并写出状态转移方程:因为决策和状态转移有着天然的联系,状态转移就是根据上一阶段的状态和决策来导出本阶段的状态。所以如果确定了决策,状态转移方程也就可写出。但事实上常常是反过来做,根据相邻两个阶段的状态之间的关系来确定决策方法和状态转移方程。

  (4)寻找边界条件:给出的状态转移方程是一个递推式,需要一个递推的终止条件或边界条件。

  一般,只要解决问题的阶段、状态和状态转移决策确定了,就可以写出状态转移方程(包括边界条件)。

三。贪心算法:
基本思想:在解决一个问题的时候,总是使用当前最优的选择,且该选择无法改变,和动规相同,贪心算法具有无后效性的特点,后面的状态的改变无法影响之前已经做出决策的状态,贪心和动规有一个很明显的不同可以理解为动规是将问题逐渐分解的,首先分解为上一个状态,再又上个状态分解为上上个状态,而贪心则是,先走出第一步然后做出当前最优选择,再走出第二步。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值