算法设计基础复习.docx
《算法设计基础复习.docx》由会员分享,可在线阅读,更多相关《算法设计基础复习.docx(19页珍藏版)》请在冰豆网上搜索。
![算法设计基础复习.docx](https://file1.bdocx.com/fileroot1/2023-2/4/f6ec9d40-c222-42fc-a1b9-e7488019a74b/f6ec9d40-c222-42fc-a1b9-e7488019a74b1.gif)
算法设计基础复习
一、填空题(20分)
1.算法的基本特征:
输入、输出、有穷性、确定性、可行性。
2.算法的其他特征:
正确性、健壮性、可读性、抽象分级、高效性。
3.贪心算法的思想:
不从整体上加以考虑,而只是求出局部最优解,并逐步获得最优解。
关键特性:
无后效性(某个状态以前的过程不会影响以后的状态,只与当前状态有关。
)
4.分治法的基本思想:
将整个问题分解成若干个小问题后分而治之,然后再将小问题的解合并,以求得整个问题的解。
如果分解得到的子问题相对来说还太大,则可反复使用分治策略将这些子问题分成更小的同类型子问题,直至产生出方便求解的子问题,必要时逐步合并这些子问题的解,从而得到问题的解。
5.分治法的步骤:
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.分治法求数组中的数