算法分析与设计(耿国华第二版)

回答与证明

目录

回答与证明

说明O、θ、Ω三种函数阶的定义

给出两个函数阶的证明过程

求证:如果一个算法在平均情况下的计算复杂性为θ(f(n)),则该算法在最坏情况下所需的计算时间为Ω(f(n))。

特殊0-1背包问题

按贪心算法的证明步骤,给出哈夫曼算法的正确性证明

有8个集装箱,其重量分别为 100、200、50、90、150、50、20和80,要装上一艘载重量为400的轮船。 (1)在装载体积不受限制的情况下,如何装入才能使得装上轮船的集装箱数量最大;(2)证明该装载问题具有贪心选择性质。

说明O、θ、Ω三种函数阶的定义

算法分析与设计(耿国华第二版)_第1张图片

给出两个函数阶的证明过程

算法分析与设计(耿国华第二版)_第2张图片

算法分析与设计(耿国华第二版)_第3张图片

算法分析与设计(耿国华第二版)_第4张图片

求证:如果一个算法在平均情况下的计算复杂性为θ(f(n)),则该算法在最坏情况下所需的计算时间为Ω(f(n))。

算法分析与设计(耿国华第二版)_第5张图片

( N:问题规模  I:输入   P(I):概率      Dn:多规模输入集)

特殊0-1背包问题

算法分析与设计(耿国华第二版)_第6张图片

按贪心算法的证明步骤,给出哈夫曼算法的正确性证明

要证明哈夫曼算法的正确性,只要证明最优前缀码问题具有贪心选择性质和最优子结构性质。

有8个集装箱,其重量分别为 100、200、50、90、150、5020和80,要装上一艘载重量为400的轮船。 (1)在装载体积不受限制的情况下,如何装入才能使得装上轮船的集装箱数量最大;(2)证明该装载问题具有贪心选择性质。

     这是一个经典的背包问题,我们可以使用贪心算法来解决。

(1) 在装载体积不受限制的情况下,我们应该优先选择重量较小的集装箱。这样可以使得装上轮船的集装箱数量最大。具体步骤如下:

首先,我们将所有集装箱按照重量从小到大排序,得到:20、50、50、80、90、100、150、200。

然后,我们从重量最小的集装箱开始,依次尝试是否可以装入轮船。如果当前集装箱的重量加上已经装入轮船的集装箱的总重量不超过轮船的载重量,那么我们就可以将其装入轮船。

最后,我们得到的结果是:20、50、50、80、90、100,共6个集装箱可以装入轮船。

(2) 这个装载问题具有贪心选择性质,因为我们在每一步都做出了在当前看来最好的选择(选择重量最小的集装箱),并且这个局部最优选择能够导致全局最优解(装入轮船的集装箱数量最大)。这就是贪心选择性质的定义。在这个问题中,我们没有必要重新考虑以前的选择,也就是说,如果我们从轮船上卸下一个集装箱,那么剩下的集装箱仍然是最优装载方案。这就证明了这个问题具有贪心选择性质。

你可能感兴趣的:(算法分析与设计,算法)