- 9
- 0
- 约3.6千字
- 约 4页
- 2021-11-14 发布于湖北
- 举报
一、问答题( 30 分)。
1.什么是最坏情况时间复杂性?什么是平均情况时间复杂性?
2.什么是递归算法?什么是递归函数?
递归算法 :直接或间接地调用自身的算法称为递归算法
递归函数 :用函数自身给出定义的函数称为递归函数
3.递归函数的二要素是什么?
边界条件与递归方程是递归函数的二个要素, 递归函数只有具备了这两个要素, 才能在有限
次计算后得出结果。
4.分治法的设计思想是什么?
分治法的设计思想是, 将一个难以直接解决的大问题, 分割成一些规模较小的相同问题, 以
便各个击破,分而治之
5 .什么叫问题的最优子结构性质?
矩阵连乘计算次序问题的最优解包含着其子问题的最优解。这种性质称为最优子结构性质。
问题的最优子结构性质是该问题可用动态规划算法求解的显著特征
6 .动态规划基本步骤是什么?
1.找出最优解的性质,并刻划其结构特征
2. 递归地定义最优值
3. 以自底向上的方式计算出最优值。
4. 根据计算最优值时得到的信息,构造最优解
7.动态规划算法的基本要素是什么?举例说明一些可以用动态规划算法解决的问题。
8.说明分治法与动态规划法的相同点和不同之处?
9.贪心算法的两个重要要素是什么?举例说明一些可以用贪心算法解决的问题。
贪心选择性质和最优子结构性质
最优装载问题可用贪心算法求解。 采用重量最轻者先装的贪心选择策略, 可产生最优装载问
题的最优解。
public static float loading(float c, float [] w, int [] x)
{
int n=w.length 。
Element [] d = new Element [n] 。
for (int i = 0 。 i n 。 i++)
d[i] = new Element(w[i],i) 。
MergeSort.mergeSort(d) 。
float opt=0 。
for (int i = 0 。 i n 。 i++) x[i] = 0 。
for (int i = 0 。 i n d[i].w = c 。 i++) {
x[d[i].i] = 1 。
opt+=d[i].w 。
c -= d[i].w 。
}
return opt 。
}
10.什么叫贪心选择性质?
所谓贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择, 即贪心选择
来达到
11.贪心算法与动态规划算法的的相同点和不同之处?
贪心算法和动态规划算法都要求问题具有最优子结构性质,这是 2 类算法的一个共同点。
12.背包问题与 0-1 背包问题有何区别?
0-1 背包问题:给定 n 种物品和一个背包。物品 i 的重量是 Wi ,其价值为 Vi ,背包的容量
为 C 。应如何选择装入背包的物品,使得装入背包中物品的总价值最大 ?
背包问题:与 0-1 背包问题类似,所不同的是在选择物品 i 装入背包时,可以选择物品 i
的一部分,而不一定要全部装入背包, 1≤ i≤n 。
这 2 类问题都具有最优子结构性质,极为相似,但背包问题可以用贪心算法求解,而 0-1 背
包问题却不能用贪心算法求解。
用贪心算法解背包问题的基本步骤:
首先计算每种物品单位重量的价值 Vi/Wi ,然后,依贪心选择策略,将尽可能多的单
位重量价值最高的物品装入背包。 若将这种物品全部装入背包后, 背包内的物品总重量未
原创力文档

文档评论(0)