算法设计与分析基础第七章作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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。