软考程序类专题十二_数据结构和算法设计 ,C、VB、JAVA、C++程序设计  

2007-11-5 11:07:52   Count:

主要内容: 详见专题四、七,本次主要讲解下午试题的内容、形式、要求和解答方法。及一些最基本的语法(C语言是必须掌握的),以应对下午的算法和数据结构试题。

软考程序类专题十二:数据结构和算法设计 ,C、VB、JAVA、C++程序设计(20071025)在线专题授课音视频

(本课程正式学员可登录学习系统,进入对应课程,在窗口左边的“课程资料室”内进行在线浏览。)


1. 图的遍历

  图的遍历是从某个顶点出发,沿着某条搜索路径对图中所有顶点进行访问且只访问一次。
(1)深度优先搜索(DFS)
  从图G中任一结点v出发按深度优先搜索法进行遍历的步骤如下:
  1)设立搜索指针p,使p指向顶点v;
  2)访问p结点,并使p指向与p顶点相邻接的且尚未被访问过的结点;
  3)若p不空,则重复步骤2),否则执行步骤4);
  4)沿着刚才访问的次序、方向回溯到一个尚有邻接顶点且未被访问过的顶点,并使p指向这个未被访问的邻接顶点,然后重复步骤2),直至所有的顶点均被访问为止。
  当以邻接表示作为存储结构时,深度优先搜索遍历图的时间复杂度为 。
(2)广度优先搜索(BFS)
  从图中某个顶点v出发,在访问了v之后依次访问v的各个未被访问过的邻接点,然后分别从这些邻接点出发依次访问它们的邻接点,并使“先访问的顶点的邻接点”先于“后访问的顶点的邻接点”被访问,直至图中所有已被访问的顶点的邻接点都被访问到。

2. 算法的5个重要特性:
  1. 有穷性。
  在执行有穷步之后结束,且每一步可在有穷时间内完成。
  2. 确定性。
  每一条指令必须有确切的含义,并且,在任何条件下,算法只有惟一的一条执行路径,即对于相同的输入只能得出相同的输出。
  3. 可行性。
  算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。
  4. 输入。
  有零个或多个输入。
  5. 输出。
  有一个或多个输出。

3. 递推法的基本思想:
  递推法是利用问题本身所具有的一种递推关系,求问题解的一种方法。能采用递推法构造算法的问题有重要的递推性质,即当得到问题规模为 的解后,由问题的递推性质,能从已求得的规模为 的一系列解,构造出问题规模为i的解。

4. 递归法的基本思想:
  能采用递归描述的算法通常有这样的特征:为求解规模为N的问题设法将它分解成一些规模较小的问题,然后从这些小问题的解方便地构造出大问题的解,并且这些规模较小的问题也能采用同样的分解和综合方法,分解成规模更小的问题,并从这些更小问题的解构造出规模稍大问题的解。
  在编写递归函数时要注意,函数中的局部变量和参数只是局限于当前调用层的,当递推进入“简单问题”层时,原来层次上的参数和局部变量便被隐蔽起来。在一系列“简单问题”层,它们各有自己的参数和局部变量。

5. 回溯法的基本思想:
  回溯法也称为试探法,该方法首先暂时放弃关于问题规模大小的限制,并将问题的候选解按某种顺序逐一枚举和检验。当发现当前候选解不可能是解时,就选择下一个候选解;倘若当前候选解除了还不满足问题规模要求外,满足所有其他要求时,继续扩大当前候选解的规模,并继续试探。如果当前候选解满足包括问题规模在内的所有要求时,该候选解就是问题的一个解。在回溯法中,放弃当前候选解,寻找下一个候选解的过程称为回溯;扩大当前候选解的规模,并继续试探的过程称为向前试探。

6. 动态规划法的基本思想:
  经常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题,为了节约重复求相同子问题的时间,引入一个数组,不管它们是否对最终解有用,把所有子问题的解存于该数组中,这就是动态规划法所采用的基本方法。

7. 贪心法的基本思想:
  贪心法是一种不追求最优解,只希望得到较为满意解的方法。贪心法常以当前情况为基础作最优选择,而不考虑各种可能的整体情况,所以贪心法不要回溯。

8. 分治法的基本思想:
  基本思想是把大问题分解成一些较小的问题,然后由小问题解方便地构造出大问题的解。


浏览该文章的用户为您推荐了该信息: 
没有了
       
   
   
 
站内检索:
本月授课安排
栏目导航
阅读排行