1、穷举法
意义:一一列举,逐一尝试。
应用:顺序查找、简单选择排序、冒泡排序、0/1背包、哈密顿回路、旅行家问题、最近点对和凸包问题。
2、迭代法
意义:找出个函数,不断将结果当做变量代入。
3、递推法
意义:建立起后项和前项的关系数列,后一组数由前一组数表示,运算。
应用:斐波那契数列 F(n)=F(n-1)+F(n-2) (n≥3)
4、递归法
意义:将较复杂的处理归结为简单处理,直到最简单的处理,在处理的递归调用中,系统用堆栈把每次调用的中间结果保存在栈区,直至求出最简值。然后返回调用函数,返回过程中,中间结果相继出栈恢复,它的执行效率相对较低。
5、分治法
意义:将一个难以解决的大问题,划分成一些规模较小的子问题,以便各个击破,分而治之。
应用:大整数乘法、矩阵乘法、归并排序、快速排序、循环赛日程安排、最近点对问题、凸包问题。
6、动态规划法
意义:对于每一步决策列出各种可能的局部解,再依据各种判定条件,舍弃那些不能得到最优解的局部解,在每一步都经过筛选,以每一步都是最优解来保证全局是最优解。
应用:矩阵连乘、多段图的最短路径、最长公共子序列、最优二叉排序树。
7、回溯法
意义:也叫试探法。它是一种系统搜索问题解的方法。从一条路往前走,能走得通就继续走,走不通就退回最近的交叉路口继续走下一步。
应用:图的着色、哈密顿回路、八皇后问题、批处理作业调度。
8、贪心法
意义:从问题的某一个初始解出发逐步逼近给定的目标,以尽可能快的求得更好的解。当打到某算法中的某一步不能再继续前进时,算法停止。
存在的问题:(1)不能保证最后求得的解最佳。
(2)不能用来求最大或最小解问题。
(3)只能秋满足某些约束条件的可行解的范围。
应用:最小生成树、背包问题、旅行家问题、图的着色、活动安排问题、多机调度问题。
9、分支界限法
意义:是一种在问题的解空间树上搜索问题的解的方法。但与回溯不同,分支定界算法采用广度优先或最小耗费优先的方法搜索解空间树,每一个活节点只有一次机会成为扩展节点。
应用:TSP旅行家旅行,遍历每个城市一次,并使得所走路程最短。