算法设计与分析基础第七章作业

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

第七章

习题7.1

1.分步计数算法是稳定的吗?

解:

分步计数算法是稳定的。

习题7.2

3.用Horspool算法在一个1000个0构成的二进制文本中查找下列模式时,分别需要进行多少次字符比较?

a.00001;

b.10000;

c.01010;

5

解:

a.

比较次数:(1000/5)*1=200

b.

比较次数:[(1000-5+1]*5=4980

c.

比较次数:[(1000-3)/2]*2=996 (1000-3)/2取整数部分

4.用Horspool算法在一个长度为n的文本中查找一个长度为m(n>=m)的模式。请分别给出下面两种例子。

a.最差输入;

b.最优输入。

解:

a.模式的每次一移动的举例均为1,且没有匹配成功,或者到最后一次匹配才成功。

b.模式不需要移动,且比较了m次即成功。

7.用Boyer-Moore算法在一个1000个0构成的二进制文本中查找

列模式时,分别需要进行多少次字符比较?

a.00001;

b.10000;

c.01010;

解:

a.

坏符号移动表:

后缀移动表:

d1=max{t1(0),1}=1,d2=5

模式移动max(d1,d2)=5,所以每次移动5位,且每次只比较一次。比较次数为:1000/5=200

b.

坏符号移动表:

后缀移动表:

d1=max{t1(0)-4,1}=1,d2=1

模式移动max(d1,d2)=1,所以每次都移动一位,比较5次。比较次数:[(1000-5+1]*5=4980

c.

坏符号移动表:

后缀移动表:

d1=max{t1(0)-1,1}=1,d2=2

模式移动max(d1,d2)=2,所以每次都能移动2位,比较2次。比较次数:[(1000-3)/2]*2=996

习题7.3

2.对于输入30,20,56,75,31,19和散列函数h(K)=K mod11

a.构造它们的闭散列表;

b.求在本表中成功查找的最大键值比较次数;

c.求在本表中成功查找的平均键值比较次数;

解:a.

b.最大的键值是19,k(19)=8,先将散列地址为8的中的键30与75比较,其次是散列地址为10的75与75比较,所以成功查找的比较次数是6。

c.

查找成功的平均键值比较次数为:(1+1+1+2+3+6)/6=7/3。

相关文档
最新文档