基本算法分类与原理

基本算法根据时间复杂度,空间复杂度大致可以分为下面几种:穷举法,迭代法,递推法,递归法,分治法,贪心法,回溯法,动态规划以及分支定界。


1. 穷举法:即在众多的候选解中按照某种顺序逐一进行枚举和检验,通过这种方法来找出候选解并作为问题的解。
优点:算法简单
缺点:需要耗费大量的时间


2. 迭代法:即通过某一个初始估计值出发来寻求一系列近似解。
优点:较快地求出一定精度范围内的可行解
缺点:涉及函数收敛性相关问题


3. 递推法:利用问题本身具有的递归关系,将问题分解为若干步,找出相邻几步的关系,并从而到达目的。
优点:一步步递推,能较方便地求取到可行解
缺点:递推关系的构造问题


4. 递归法:即强调一种直接或者间接地自身调用自身的算法。
优点:代码简洁
缺点:通常需要改为非递归实现,因为递归法可能会造成栈溢出等问题。


5. 分治法:即把一个难问题分成两个或者多个相同或相似的子问题,再依此把子问题划分成更小的子问题,直到最后子问题能简单地解决为止。
优点:高效算法
缺点:可能出现递归问题


6. 贪心算法:即求解问题时,总是把当前解当作最好的解,直到求解出更好的解。
优点:相对最优
缺点:盲目性,难保证全局最优


7. 动态规划:即一种数学上求取重叠子问题的方法,这是一种数学思想,其求解方法很多,针对不同问题会有不同的动态规划求解方法。
优点:数学化,理论依据强
缺点:适用性


8. 回溯法:即根据选优条件进行向前搜索。找不到时纠错,反复探寻,直到找到解,类似深度搜索的方法。
优点:简单明了
缺点:选优条件设定问题


9. 分支定界:即在类似树这种数据结构上进行解的搜索,一种类似广度搜索的方法。
优点:控制搜索策略来进行分支

缺点:近似最优









你可能感兴趣的:(基本算法分类与原理)