本文介绍: 上文讲到算法概念复杂度本文大家介绍具体的算法思想,让大家算法设计理念有个认识,后续再分别介绍各种算法

上文讲到算法概念复杂度本文大家介绍具体的算法思想,让大家算法设计理念有个认识,后续再分别介绍各种算法。

算法思想

算法是解决问题的一种思想方法,其基本思想是将一个复杂问题分解多个简单的子问题然后通过一定的逻辑操作法将这些子问题的解组合成原问题的解。

分而治之

一个复杂的问题分成两个或更多的相同相似的子问题,再把子问题分成更小的子问题,直到最后子问题小到可以简单直接求解,原问题的解即子问题的解的合并这个技巧是很多高效算法的基础,如排序算法(快速排序归并排序),傅立叶变换(快速傅立叶变换),大数据中的MR,现实中如汉诺塔游戏

分治法对问题有一定的要求:

动态规划

基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能局部解,通过决策保留那些有可能达到最优局部解,丢弃其他。依次解决各子问题,最后一个子问题就是初始问题的解。

与分治法最大不同在于,分治法的思想并发动态规划思想是分步。该方法分解后得到的子问题往往不是互相独立的,其下一个阶段的求解往往是建立在上一个阶段的解的基础上。动态规划算法同样有一定的适用性场景要求:

贪心算法

同样对问题要求作出拆解,但是每一步,以当前局部目标,求得该局部的最优解。那么最终问题解决时,得到完整最优解。也就是说,在对问题求解时,总是做出在当前看来是最好的选择,而不去从整体最优上加以考虑。从这一角度来讲,该算法具有一定的场景局限性。

回溯算法

回溯算法实际上是一个类似枚举搜索尝试过程,在每一步的问题下,列举可能的解决方式选择某个方案深度探究,寻找问题的解,当发现已不满足求解条件,或深度达到一定数量时,就返回尝试别的路径回溯法一般适用于比较复杂的,规模较大的问题。有“通用解题法”之称。

分支限界

回溯法类似,也是一种在空间枚举寻找最优解的方式。但是回溯策略深度优先分支法为广度优先分支法一般找到所有相邻结点,先采取淘汰策略,抛弃不满足约束条件结点,其余结点加入结点表。然后存活表中选择一个结点作为下一个操作对象

原文地址:https://blog.csdn.net/u014526891/article/details/134778544

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_41692.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注