陈斌彬的技术博客

Stay foolish,stay hungry

软考算法题

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旅行家旅行,遍历每个城市一次,并使得所走路程最短。