算法策略的14点总结分治法文章规划法

10、对问题进行分解的算法策略——分治法与动态规划法

11、多阶段逐步解决问题的策略——贪心算法、递推法、递归法和动态规划法

12、全面逐一尝试、比较——蛮力法、枚举法、递归回溯法

13、算法策略的中心思想

14、算法策略侧重的问题类型

策略是面向问题的,算法是面向实现的。

01、不同算法策略特点小结02、贪心策略

贪心策略一方面是求解过程比较简单的算法,另一方面它又是对能适用问题的条件要求最严格(即适用范围很小)的算法。

贪心策略解决问题是按一定顺序,在只考虑当前局部信息的情况下,就做出一定的决策,最终得出问题的解。

即:通过局部最优决策能得到全局最优决策

递推也是由当前问题的逐步解决从而得到整个问题的解,依赖于信息间本身的递推关系,每一步不需要决策参与到算法中,更多用于计算

递归常常用于分治算法、动态规划算法中。

递归是利用大问题与其子问题间的递推关系来解决问题的。

能采用递归策略的算法一般有以下特征:

(1)为求解规模为N的问题,设法将它分解成规模较小的问题,然后从这些小问题的解方便地构造出大问题的解

(2)并且这些规模较小的问题也能采用同样的分解和综合方法,分解成更小的问题,并从这些更小的问题的解构造出规模较大问题的解

(3)特别的,当规模N=1时,能直接得解

对问题所有的解逐一尝试,从而找出问题的真正解。一般用于决策类问题,很难找到大、小规模之间的关系,也不易对问题进行分解。

类似于枚举,通过尝试遍历问题各个可能解的通路,当发现此路不通时,回溯到上一步继续尝试别的通路。

分治一般用于较复杂的问题,必须可以逐步被分解为容易解决的独立的子问题,这些子问题解决后,进而将它们的解“合成”,就得到较大问题的解,最终合成为总问题的解。

与贪心类似,也是通过多阶段决策过程来解决问题。每个阶段决策的结果是一个决策结果序列,这个结果序列中,最终哪一个是最优的结果,取决于以后每个阶段的决策,当然每次决策结果序列都必须进行存储。因此是“高效率,高消费的算法”。

同时,它又与递归法类似,当问题不能分解为独立的阶段,却又符合最优化原理时,就可以使用动态规划法,通过递归决策过程,逐步找出子问题的最优解,从而决策出问题的解。

共同点:(1)分治法与动态规划法实际上都是递归思想的运用

(2)二者的根本策略都是对问题进行分解,找到大规模与小规模的关系,然后通过解小规模的解,得出大规模的解

不同点:适用于分治法的问题分解成子问题后,各子问题间无公共子子问题,而动态规划法相反。

动态规划法=分治算法思想+解决子问题间的冗余情况

贪心算法:每一步都根据策略得到一个结果,并传递到下一步,自顶向下,一步一步地做出贪心决策。

动态规划算法:每一步决策得到的不是一个唯一结果,而是一组中间结果(且这些结果在以后各步可能得到多次引用),只是每一步都使问题的规模逐步缩小,最终得到问题的一个结果。

递推、递归法:注重每一步之间的关系,决策的因素较少。递推法是根据关系从前向后推导,从小规模问题的结论推解出大问题的解。而递归法是根据关系从后向前使大问题转化为小问题,最后同样由小规模问题的解推解出大问题的解。

蛮力策略(即枚举和递归回溯):

当问题找不到信息间的相互关系、也不能将问题分解为独立的子问题,就只有把全部解都列出来之后,才能判定和推断出问题的解。

蛮力策略适用于规模不大的问题。

(1)枚举法:实现依赖于循环。所以一个枚举法只针对一个特定问题规模的情况,例如:八重循环嵌套解八皇后问题的算法。

(2)递归回溯法:适用于任意指定规模的情况,例如:递归回溯法解N皇后问题。

用算法策略将解决问题的过程归结为:用算法的基本工具“循环机制和递归机制”实现。

一般常遇到的问题分为四类:

(1)判定性问题:可用递推法、递归法

(2)计算问题:可用递推法、递归法

(3)最优化问题:贪心算法、分治法、动态规划法、枚举法

(4)构造性问题:贪心算法、分治法、广度优先搜索、深度优先搜索

THE END
1.五大常用算法之一:分治算法二、基本思想和策略 分治法的设计理念是将一个难以直接解决的大问题分为一些小问题,以便每个问题都能被打破,分而治之。 治疗策略是:对于n的问题,如果问题可以很容易地解决(如小n)直接解决,否则分解为k小子问题,这些子问题相互独立,与原始问题形式相同,递归解决这些子问题,然后解决原始问题。这种算法设计策略被称为https://www.tulingxueyuan.cn/tlzx/jsp/3793.html
2.探索四大算法思想:解密数学与计算的奇妙结合结语 四大算法思想贪心、分治、回溯和动态规划在数学与计算领域扮演着重要角色。它们在解决各类问题时展现出强大的能力,既有理论基础支撑,又有实际应用价值。通过本文的介绍,相信读者对这些算法思想有了更深入的了解,并能够进一步探索其在具体问题中的运用。数学与计算的奇妙结合将为我们开启更广阔的技术和科学世界。https://baijiahao.baidu.com/s?id=1779472753352943966&wfr=spider&for=pc
3.分治法的基本思想与例子解析分治法及其应用合并排序算法是用分治策略实现对n个元素进行排序的算法。其基本思想是:将待排序元素分成大小大致相同的2个子集合,分别对2个子集合进行排序,最终将排好序的子集合合并为所要求的排好序的集合。 packageSort; /** *@authorLIn * 算法名称:归并排序 * 算法描述: https://blog.csdn.net/why_still_confused/article/details/51755899
4.分治法算法思想51CTO博客已为您找到关于分治法算法思想的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及分治法算法思想问答内容。更多分治法算法思想相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成长和进步。https://blog.51cto.com/topic/fenzhifasuanfasixiang.html
5.基于聚类和划分的SAT分治判定与已有的SAT判定技术相比,本文并不试图改进判定算法本身或者算法采用的数据结构来提高CNF公式的可满足性判效率,而是利用分治的思想,将复杂的CNF表示的SAT的判定问题划分为多个子问题来求解.方法的基本思路是:基于对CNF公式特点的分析,即:如果一个布尔公式F中的子句可以划分为m个子句组C1, C2,,Cm,每个子句组中https://www.jos.org.cn/html/2015/9/4799.htm
6.helloalgo分治哈希表:虽然哈希表并不直接应用分治,但某些哈希冲突解决方案间接应用了分治策略,例如,链式地址中的长链表会被转化为红黑树,以提升查询效率。 可以看出,分治是一种“润物细无声”的算法思想,隐含在各种算法与数据结构之中。 12.2 分治搜索策略 暴力搜索:它通过遍历数据结构实现,时间复杂度为 ( ) 。 自适应搜索:它https://zhuanlan.zhihu.com/p/701640359
7.1.问题求解算法理解并掌握去随机的基本方法,即结合经用场景,可能可以在输入空间的一个子集上将随机算法改为确定算法●引导要点:如何找合适的输入子集 论题4-18:启发式算法 ●学习目的:通过典型的模拟淬火算法,理解启发式算法的基本概念,其价值以及局限性; 了解遗传算法的基本思想及其适用性●引导要点:如何从自然界获得灵感,以非常https://cs.nju.edu.cn/jxcgj/kctxsf.html
8.排序算法总结菜鸟教程基本思想:参考归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法的一个非常典型的应用。首先考虑下如何将2个有序数列合并。这个非常简单,只要从比较2个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可。 https://www.runoob.com/w3cnote/sort-algorithm-summary.html
9.算法原理:大数据处理的分治思想!腾讯云开发者社区尽管开发一个MapReduce看起来很高深,感觉遥不可及。实际上,万变不离其宗,它的本质就是分治算法思想,分治算法。如何理解分治算法?为什么说 MapRedue 的本质就是分治算法呢? 分治是一种被广泛应用的有效方法,它的基本思想是把最初的问题分解成若干子问题,然后,在逐个解决各个子问题的基础上得到原始问题的解。所谓https://cloud.tencent.com/developer/article/1691814
10.C语言常见排序算法归并排序C语言1.1 基本思想 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法 (Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序 列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 1.2 算法思想 到这里,https://www.jb51.net/article/255354.htm
11.数据结构与算法——基础篇(六)动态规划(Dynamic Programming)算法的核心思想是:将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法。 动态规划算法与分治算法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。 与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往https://www.jianshu.com/p/229b672e6a70