一、 选择题:(每小题 2 分,共 16 分)
二、 判断题:(每小题 1 分,共 10 分)
三、 时间复杂度分析题:(共 14 分)
四、 程序填空题:(每空 2 分,共 20 分)
五、 问答题:(共 40 分)
1、有 0-1 背包问题如下:
n=3,c=30,P=[45,25,25],W=[16,15,15]。
用队列式、优先队列式分支限界法求最优解。(画解空间树并详细描述求解过
程)
2、用队列式、优先队列式分支限界法求解如下图的四城市旅行商问题。(画
解空间树并详细描述求解过程)
3、有 0-1 背包问题如下:
n=6,c=20,P=(11,8,15,18,12,6), W=(5,3,2,10,4
,2)。
试分别画出用回溯法求解时的搜索情况。
4、用递归回溯算法求解四后问题。(写出 C++算法描述的关键代码、画出求
得第一解时的搜索树)
5、用递归回溯算法求解图的 m 着色问题。(写出 C++算法描述的关键代码)
1、贪心算法的基本要素?动态规划算法的基本要素?贪心算法的基本要素:
贪心选择性质和最优子结构性质。动态规划的基本要素:最优子结构性质和
子问题重叠性质。
2、比较动态规划法、分治法和贪心法之间的异同
动态规划法与分治法和贪心法类似,它们都是将问题实例归纳为更小的、相
似的子问题,并通过求解子问题产生一个全局最优解。其中贪心法的当前选
择可能要依赖已经作出的所有选择,但不依赖于有待于做出的选择和子问题。
因此贪心法自顶向下,一步一步地作出贪心选择;而分治法中的各个子问题
是独立的 (即不包含公共的子子问题),因此一旦递归地求出各子问题的解后,
便可自下而上地将子问题的解合并成问题的解。动态规划允许这些子问题不
1
2
4题列算法的时间复杂度。(;
3
30
10
4
5
6
20