算法设计课程习题答案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算法设计课程习题答案

第一章

1-1什么是算法?它与计算过程和程序有什么区别?

算法是指求解一个问题所需要的具体步骤和方法。它是指令的有限序列。算法有一系列明确定义的基本指令序列所描述的,求解特定问题的过程,它能够对合法的输入,在有限时间内产生所要求的输出,取消有穷性限制则是计算过程;而程序是算法的描述。 1-11使用归纳法证明汉诺塔函数的正确性。

用数学归纳法证明汉诺塔函数对任何n (即n 可以是任何正整数)有解。 (1)当盘子数n =1时,只需直接将此盘从A 柱搬到C 柱即可。

(2)现假设n =k 时有解,即可以将k 个盘子(在不违反规则的情况下)从一个源柱,通过一个中间柱移到目的柱上。

(3)现在证明n =k +1时也有解。开始时A 柱上的k +1个盘子可以看成由k 个盘和最底下的一个最大盘组成。根据归纳假设这k 个盘可以(在不违反规则的情况下)通过C 柱移到B 柱上(在这k 个盘的移动过程中,最大盘可以看成不存在)。完成这一大步后,只要将A 柱上的最大盘直接搬到C 柱上。再根据归纳假设B 柱上的这k 个盘可以(在不违反规则的情况下)通过A 柱移到C 柱上。

至此证明结束。 第二章

2-8确定下列各程序段的程序步,确定划线语句的执行次数,计算它们的渐近时间复杂度。 (1)程序步为n log 1+画线语句的执行次数为log n ⎡⎤⎢⎥。(log )n O 。划线语句的执行次数

应该理解为一个整体。 (2)画线语句的执行次数为

111

(1)(2)16

j

n i i j k n n n ===++=

∑∑∑。3

()n O 。

(3)画线语句的执行次数为

。O 。

(4)当n 为奇数时画线语句的执行次数为

(1)(3)

4

n n ++, 当n 为偶数时画线语句的执行次数为 2(2)4

n +。2

()n O 。

2-11设有)(f n 和)(n g 如下所示,分析)(f n 为))((n g O 、))((n g Ω还是))((n g Θ。

(1) 当3n ≥时,3

log log n n n <<,所以

()20log 21f n n n n =+<,

3()log 2g n n n n =+>。可选 21

2

c =

,03n =。对于0n n ≥,()()f n cg n ≤,即()(())f n g n =O 。注意:是f (n )和g (n )的关系。

(2) 当4n ≥ 时,2

log log n n n <<,所以2

2

()/log f n n n n =<,

2

2

()log g n n n n =≥。可选 1c =,04n =。对于 0n n ≥,2

()()f n n cg n <≤,即 ()(())f n g n =O 。 (3)因为 log log(log )()(log )

n

n f n n n ==,()/log log 2n g n n n n ==。当 4n ≥ 时,

log(log )()n f n n n =≥,()log 2n g n n n =<。所以,可选 1c =,04n =,对于0n n ≥,

()()f n cg n ≥,即 ()(())f n g n =Ω。

(4)因为n n f =)(,n n g 5log )(=。当0n >时,n )(<=n n f ,55n log )(<=n n g ,所以,可选1c =,1n 0=,对于0n n ≥,()()f n cg n ≤,即()(())f n g n =O 。

(5)因为n n n 2)(f =,n 3(=)

n g 。当n>0时,)(32)(f 31-n n g n n n n =<⋅=≤,所以取1,3/1c 21==c , 1n 0=,对于0n n ≥,)()()(21n g c n f n g c ≤≤,即))(()(n g n f Θ=。

第四章

4-10识别图4-15的图的关节点,画出它们的双连通分图。

图G1的关节点3、7、1,图G2关节点没有关节点。它们的双连通图如下。

0-1-3 2-3-4 3-7 7-6-5 第五章

5-11对两组数据(1,1,1,1,1)和(5,5,8,3,4,3,2)执行程序5-12的快速排序,按照 表

11.由题可得:012345601234561051576183,,,,,,,,,,,,2357141p p p p p p p w w w w w w w ⎛⎫⎛⎫

=

⎪ ⎪⎝⎭

⎝⎭, 所以,最优解为()01234562

,,,,,,,1,,1,0,1,1,13

x x x x x x x ⎛⎫= ⎪⎝⎭

最大收益为211051561835533

+⨯

++++=。 3.设有带时限的作业排序n=7,(p0,p1,…p6)=(3,5,20,18,1,6,30);(d0,d1,…d6)=(1,3,4,3,2,1,2)

以此实例为输入的最优解和最大收益。

按收益大小递减排序:p6,p2,p3,p5,p1,p0,p4=(30,20,18,6,5,3,1) 最优解: (0,0,1,1,0,1,1) 由作业2,3,5,6产生 最大收益:74 8.

第七章

7-1. Bcost(1,0)=0;

Bcost(2,1)=c(1,1)+Bcost(1.0)=5 Bcost(2,2)=c(1,2)+Bcost(1,0)=2

Bcost(3,3)=min{c(2,3)+Bcost(2,2),c(1,3)+Bcost(2,1)}=min{6+2,3+5}=8 Bcost(3,4)=c(2,4)+Bcost(2,2)=5+2=7

Bcost(3,5)=min{c(1,5)+Bcost(2,1),c(2,5)+Bcost(2,2)}=min{3+5,8+2}=8

Bcost(4,6)=min{c(3,6)+Bcost(3,3),c(4,6)+Bcost(3,4),c(5,6)+Bcost(3,5)}=min{1+8,6+7,6+8}=9 Bcost(4,7)=min{c(3,7)+Bcost(3,3),c(4,7)+Bcost(3,4),c(5,7)+Bcost(3,5)}=min{4+8,2+7,6+8}=9 Bcost(5,8)=min{c(6,8)+Bcost(4,6),c(7,8)+Bcost(4,7)}=min{7+9,3+9}=12 7-9. char A[8]={‘0’,’x ’,’z ’,’y ’,’z ’,’z ’,’y ’,’x ’ } B[8]={‘0’,’z ’,’x ’,’y ’,’y ’,’z ’,’x ’,’z ’}

(a) c[i][j] (b )s[i][j] 所以,最长公共字串为 (x,y,z,z)。 7-15

)}0,0{(1=-S , )}2,10{(01=S ,

)}2,10(),0,0{(0=S , )}7,25(),5,15{(1

1=S ,

)}7,25(),5,15(),2,10(),0,0{(1=S , )}15,31(),13,21(),10,16(),8,6{(21=S ,

相关文档
最新文档