算法设计与分析(期末试卷)
目录
一、频度计算(15 分)
二、项目工期问题(20 分)
三、TSP 问题的贪心算法(15 分)
四、“秤心如意”(15 分)
五、工作指派问题(20 分)
六、计算复杂度理论(15 分)
一、频度计算(15 分)
现有某小学 n 名小学生的身高数据(无序),校长想知道身高为 x 的学生有多少名,采用线性搜索时间复杂度为 O (n),请你设计一个分治算法完成统计,并分析算法的时间复杂度,与线性搜索算法作比较。
- 对问题进行简单分析,给出算法设计的基本思想和步骤;(6 分)
- 给出算法的伪代码描述;(6 分)
- 对算法进行时间复杂度分析并与线性搜索算法进行比较。(3 分)
二、项目工期问题(20 分)
假设一个项目由 n 个子项目构成,已知每个子项目之间的依赖关系(前驱后继关系构成一个有向无回路图),每个子项目的完成时间 ti。请设计算法计算项目的工期并输出。
- 对问题进行简单分析,给出算法设计的基本思想和步骤;(8 分)
- 给出算法的伪代码描述;(9 分)
- 对算法进行时间复杂度分析。(3 分)
三、TSP 问题的贪心算法(15 分)
已知 n 个顶点的完全有向图 G=(V,E),两点之间的边上权值为 wij,假设从 1 顶点出发,巡回走完剩余顶点再回到出发的 1 顶点,且每个顶点只经过一次,求最短的巡回路线长度。要求:
- 对问题进行简单分析,给出贪心策略;分析你的贪心算法能否找到问题的最优解;(5 分)
- 给出算法的伪代码描述;(8 分)
- 对算法进行时间复杂度分析。(2 分)
四、“秤心如意”(15 分)
小张应邀参加某频道的 “秤心如意” 节目环节,该环节要求嘉宾在有限的时间内从 n 款商品中选择若干,放在秤的一端,自己坐在秤的另一端,如果秤能保持平衡 (两边重量相等),即为成功,嘉宾可以拿走所有的商品。
小张为了能赢得比赛,提前估计了每种商品的重量 wi,当然也自知自己的体重 W,请为小张设计算法,判断是否有保持平衡的一种商品选择的方案,如果有请给出。
- 对问题进行分析建模,分析并给出回溯算法的关键步骤;(9 分)
- 并给出算法描述,分析时间复杂度;(6 分)
五、工作指派问题(20 分)
设有 n 件工作,n 个人,每个人只能做一件工作,每件工作只能安排给一个人,已知每个人做每件工作的耗费,请设计分支限界算法求解最少耗费的工作指派。
- 对问题进行分析;(9 分)
- 给出分支限界算法的伪代码描述;(8 分)
- 分析以上算法的时间复杂度。(3 分)
六、计算复杂度理论(15 分)
- 说说你对 P 类问题、NP 类问题及 P 和 NP 是否相等这个难题的理解。(8 分)
- 现实生活中是否存在 NP 难题,如果存在,尝试举出几个例子,并说明在现实生活中是如何解决 NP 难题的。(7 分)