📣 Back to School开学季 - VIP通行证5折优惠!蓝莓、Offer多多同步优惠
楼主: gougou9901
跳转到指定楼层
上一主题 下一主题
收起左侧

Berkeley CS 61B Data Structures(in Java) Homework6 加分+讨论帖

 
🔗
whdawn 2015-5-3 05:06:12 | 只看该作者
全局:

这次的作业怎么这么恶心,感觉一次比一次难了。。。做得我要吐血了。。。









点评

200的case呢?  发表于 2015-5-24 07:11
回复

使用道具 举报

🔗
五农 2015-5-3 11:27:22 | 只看该作者
全局:
这是啥?只觉得不闭合。。。
回复

使用道具 举报

🔗
sicilianee 2015-5-18 12:39:54 | 只看该作者
全局:
18258170717 发表于 2014-11-29 16:40
有点没搞明白的是Be careful not to use floating-point numbers for this purpose, because they round of ...

算3^n 的时候如果用java自带的函数返回的是double.
回复

使用道具 举报

🔗
amyzen 2015-5-23 13:14:01 | 只看该作者
全局:
本帖最后由 amyzen 于 2015-5-23 13:19 编辑

这个作业真是做的如痴如醉!   求加学分~~~part2的
hashcode()部分也是醉了
另外在HashTableChained中我加了很多Test code 用来测试part1中的方法,输出结果如图三




又看了下,看来 collision预测的还很准:)



回复

使用道具 举报

🔗
cmq859 2015-5-24 01:47:28 | 只看该作者
全局:
新技能hash table GET!


点评

还有一个case呢?  发表于 2015-5-24 07:10
回复

使用道具 举报

🔗
cmq859 2015-5-24 09:04:40 | 只看该作者
全局:
谢谢严谨负责的版主大人     补上case2


回复

使用道具 举报

🔗
jy_121 2015-5-27 10:17:42 | 只看该作者
全局:
小问题卡住了很久,感谢楼上一位好心同学的指点。

更多图片 小图 大图
组图打开中,请稍候......
回复

使用道具 举报

🔗
wynnforce 2015-6-1 23:36:53 | 只看该作者
全局:
我来个暴力的,直接输出hash表的结构,bucket和对应的list,以及每个entry对应的key和value值。。。



太大的话图不好截,所以发的图是n=50的;n=100和n=150的只截结果好了:






小结:
1. 给定的load factor是个区间(0.5-1),所以找出来的质数有可能不止一个,我取得是质数数组的中位数(想让load factor接近0.75这样比较好);可能楼上诸君比较多的找的是最小的一个满足要求的质数,所以我的bucket比较多一些,collision也要小一点。

2.(A*hashCode+B)%p%N
以下先把N计作n, 方便大小写统一
i.为什么要n要是素数:因为被除和p如果有公约数c,则该公约数c也是余数r的约数,即r必须是c的倍数;这就限制了余数r的distribution  (m =Cn+r;  c|m, c|Cn, => c|r);
ii.为什么要用线性结构m=Cn+r; => Am+B = ACn +(Ar+B); 0<= r <n => (Am+B)%n = (Ar+B)%n;   Ar+b 在(B,Ar+B)这个长度为Ar的区间里,用它去%n会得到平均间隔为A的distribution,相当于把原来在(0,r)里   面%n的distribution稀释了A倍。咋看之下,稀释的好处当然就是减少collision的概率了。
iii.为什么要先%p再%n:  然而,上一步并没有什么卵用;因为Ar和r形成了对r而言的一一线性映射,比如原来长度为r的区间里可能的取值为(0,1,2),长度为3;假设A=2,B=0, 那么映射到长度为3*2的区间里就是(0,2,4);给的空间大了,但是间隔也相应变大了,1,3,5这些值没有可能取到!所以collision的概率一毛一样。那么只要破坏这种线性映射就好了,取mod明显是非线性的,而mod一个质数的理由见i;
iv.为什么需要p>>N: 因为mod p 就会映射到(0,p),第二步mod n要从(0,p)映射到(0,n), 如果这两个区间大小差不多的话,就没有第二步的必要了,直接认为p就是n就可以了。
我还在找严谨的数学推导为什么collision概率会减小;暂时先这么理解了。



补充内容 (2015-6-12 16:12):
关于为什么要P>>N, 又想到一点理由, 因为要一直resize hash table, 通常就是double, 所以N必须比P小很多

评分

参与人数 5大米 +27 学分 +1 收起 理由
vincentli1 + 3 说的很好
DetectiveConan + 1 分析的很有道理
蔚蔚酱 + 3 太有道理了!
AveMaleficum + 20 鼓励认真
zzwcsong + 1

查看全部评分

回复

使用道具 举报

🔗
ypandxy 2015-6-19 16:23:39 | 只看该作者
全局:
终于做完了,,,多谢同学的帮助啊,,,惭愧,希望追赶大牛们的步伐

回复

使用道具 举报

🔗
豆小凡 2015-7-10 10:04:29 | 只看该作者
全局:
交作业了,求加分
更多图片 小图 大图
组图打开中,请稍候......
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表