贪心、回溯、穷举、分治、递归

常用算法[1]

贪心算法[2]

贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题他能产生整体最优解或者是整体最优解的近似解。

基本思路:
⒈建立数学模型来描述问题。
⒉把求解的问题分成若干个子问题。
⒊对每一子问题求解,得到子问题的局部最优解。
⒋把子问题的解局部最优解合成原来解问题的一个解。

实现该算法的过程:

从问题的某一初始解出发;

while 能朝给定总目标前进一步 do

求出可行解的一个解元素;

由所有解元素组合成问题的一个可行解。

回溯算法

回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。用回溯算法解决问题的一般步骤为:

1、定义一个解空间,它包含问题的解。

2、利用适于搜索的方法组织解空间。

3、利用深度优先法搜索解空间。

4、利用限界函数避免移动到不可能产生解的子空间。

问题的解空间通常是在搜索问题的解的过程中动态产生的,这是回溯算法的一个重要特性。

分治算法

分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。

分治算法分治算法分治法解题的一般步骤:

(1)分解,将要解决的问题划分成若干规模较小的同类问题;

(2)求解,当子问题划分得足够小时,用较简单的方法解决;

(3)合并,按原问题的要求,将子问题的解逐层合并构成原问题的解。



  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
动态规划、回溯贪心分治是常见的算思想和方。 动态规划是一种解决多阶段决策最优化问题的方。在动态规划中,问题被分解为多个子问题,通过找到子问题的最优解,然后将这些最优解组合起来得到原问题的最优解。引用中提到了一个例子,即解决凸多边形的最优三角形划分问题。 回溯是一种试探性的搜索算,它通过穷举所有可能的解,逐步回溯并检查每个可能的解是否满足问题的要求。回溯法通常使用递归实现,每次选择一种可能的路径进行搜索,如果不满足条件,则回退到上一步继续搜索其他可能的路径。引用中提到了回溯法的自动完成特性,即回溯的过程是在程序运行时自动完成的。 贪心是一种基于当前局部最优选择的方。在贪心中,每一步都选择当前看起来最好的选项,并以此希望最终能够达到全局最优解。然而,贪心并不能保证总是能得到全局最优解,因为它没有考虑到未来可能的情况。引用中举了一个求组合出特定金额的硬币最少所需张数的例子,其中提到了贪心只关注当前的最优解。 分治是将问题分解成多个子问题,并且对每个子问题进行独立求解,最后将子问题的解合并得到原问题的解。分治算法通常使用递归实现,每次将问题分解为更小的子问题,直到问题可以直接求解为止。引用中提到了分治算法作为解决凸多边形的最优三角形划分问题的一种思路。 总结,动态规划、回溯贪心分治是不同的算思想和方,适用于不同类型的问题。动态规划通过寻找子问题的最优解来解决多阶段决策问题,回溯通过穷举所有可能的解来解决问题,贪心通过选择当前局部最优解来解决问题,而分治通过将问题分解为多个子问题并逐个求解再合并解决问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值