《算法导论》 第11章部分答案
2015-09-16 18:23
375 查看
注:以下答案均为自己思考,难免有误,欢迎指正。
11.3-1: 将长度为n的链表进行排序,将关键值的散列值相同的元素排为相邻。而散列表有点类似于链接法解决冲突的散列表。
11.3-2: 一个字符的ASCII码占七位,而128=2^7。所以每次只需计算一位字符(在结果之中互不交叉),而且至多只需要计算后面5位。
11.3-3:(两个字符串有相同的字符和位数,只是排列不同而已)
假设字符串有r位,则散列值为:
又因为字符串有相同的字符,取余前面的求和都相等,所以散列值相等。
11.3-4: 分别为700、318、936、554、172
11.3-5: 对于散列表中每个槽中分配的元素均匀,则碰撞概率的最大值会最小(否则最大值会出现在链表长度最长的槽中)。
假设|U|=n ,|B|=m 。则任意两个元素发生碰撞的概率:故假设得证。
11.4-1: 线性探查: 22、88、 0、 0、 4、15、28、17、59、31、10
二次探查: 22、 0、88、17、 4、 0、28、59、15、31、10双重散列: 22、 0、59、17、 4、15、28、88、 0、31、10
11.4-2: HASH-DELETE(T,x)
T[x.key] = DELETED-----------------------------------------
HASH-INSERT(T,k)
for i=0 to m //m is the number of elements in the table
j = h(k,i)
if T[j]==NIL or T[j]==DELETED
T[j] = K
return j
error "hash table overflow!"
11.4-3: 根据前面公式有
成功查找 - 1/α*ln(1-α) | 不成功查找 1/(1-α) | |
α = 3/4 | 1.848 | 4 |
α =7/8 | 2.377 | 8 |
11.4-5: 根据上面公式,用MATLAB解出来约为:0.7135
相关文章推荐
- (转)我看PhD by 王珢
- (转)小小科学家的归来 by 王珢
- 输入一个100以内的整数,判断与9的关系
- 第3周项目2-建设“顺序表”算法库
- UITableView,UICollectionView顶部预留空白的处理
- SSL探03
- 遍历Map的四种方法
- 继承
- 例题 6-6 小球下落(Dropping Balls) UVa 679 二叉树规律
- 将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并保证奇数之间顺序不变,偶数之间顺序不变(创新工场)
- 提倡IT从业人员终身学习
- Linux下,telnet命令如何退出
- 使用slidingmeu_actionbarsherlock_lib的问题和The hierarchy of the type MainActivity is inconsistent
- 移动平台对 meta 标签的定义
- (转)让科学和理性回到计算机科学
- golang指针
- 我的“技术——好123”
- 冒泡排序
- HDU 5213 Lucky [莫队+容斥]
- 微软的免费开发工具