1、算法设计基础复习一、填空题(20分)1.算法的基本特征:输入、输出、有穷性、确定性、可行性。2.算法的其他特征:正确性、健壮性、可读性、抽象分级、高效性。3.贪心算法的思想:不从整体上加以考虑,而只是求出局部最优解,并逐步获得最优解。关键特性:无后效性(某个状态以前的过程不会影响以后的状态,只与当前状态有关。)4.分治法的基本思想:将整个问题分解成若干个小问题后分而治之,然后再将小问题的解合并,以求得整个问题的解。如果分解得到的子问题相对来说还太大,则可反复使用分治策略将这些子问题分成更小的同类型子问题,直至产生出方便求解的子问题,必要时逐步合并这些子问题的解,从而得到问题的解。5.分治法的步
2、骤:1)分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题;2)解决:若子问题规模较小而容易被解决则直接解,否则再继续分解为更小的子问题,直到容易解决;3)合并:将已求解的各个子问题的解,逐步合并为原问题的解。6.动态规划法的基本思想:把求解的问题分成许多阶段或多个子问题,然后按顺序求解各子问题,最后一个子问题就是初始问题的解。7.设计一个标准的动态规划算法的步骤:1) 划分阶段2) 选择状态3) 确定决策并写出状态转移方程二、计算题(60分)1.时间复杂度的估算2.Dijkstra算法(见数据结构课本P196)3.最小生成树算法:Prim算法和Kruskal算法Prim算法:Kruskal算法:4.矩阵连乘题三、算法设计题(20分) 填空1.递归从n个数中找r个数2.数塔问题3.分治法求数组中的数