楼主: sanguine
跳转到指定楼层
上一主题 下一主题
收起左侧

[Coursera] Algorithms (princeton) (week4) 加分贴

🔗
iPhD 2015-7-21 13:36:38 | 只看该作者
全局:

QQ20150721-1@2x.png (73.6 KB, 下载次数: 0)

QQ20150721-1@2x.png
回复

使用道具 举报

🔗
eonian 2015-7-25 23:15:11 | 只看该作者
全局:
终于赶上进度了~~



回复

使用道具 举报

🔗
althinking 2015-7-27 18:25:32 | 只看该作者
全局:


回复

使用道具 举报

🔗
asd55178608 2015-7-28 00:34:39 | 只看该作者
全局:
赶due啊赶due

Screen Shot 2015-07-27 at 9.29.21 AM.png (136.29 KB, 下载次数: 1)

Screen Shot 2015-07-27 at 9.29.21 AM.png
回复

使用道具 举报

🔗
ypandxy 2015-7-28 17:38:25 | 只看该作者
全局:
回复

使用道具 举报

🔗
Liuology 2015-7-29 21:25:29 | 只看该作者
全局:
这次作业的锻炼很大!求加分哦,前几次的也没有加呢!
回复

使用道具 举报

🔗
wynnforce 2015-8-10 11:32:31 | 只看该作者
全局:
本帖最后由 enirinth 于 2015-8-10 11:35 编辑

先贴作业:





感觉这次作业算法的部分就直接告诉你了, 难的地方是java programming, software engineering这些....

最麻烦的是Board里面没有moves 和 previous的getter,所以要在Solver里面实现
我的方法是用一个wrapper class:Node,包括Board board,Node prev和int moves。用Board 的neighbors()来实现Solver里面的Node Iterator,然后这个新Iterator的next()里面加入更新prev和moves的内容。

总结了一下optimization的点(这些点里面只要实现很少一部分就能有100分了):
1. 1d array 代替 2d array,char 代替 int;
-其实用short也是差不多的内存
2. Critical optimization
-因为要筛掉的都是search node的几个相邻board,所以实际上只需要看0的位置就行了。0的位置可以cache在Board类里面,equals()里面可以首先通过0的坐标排除一道,这样比如4个neighbors, 3个不和previous node相同的O(1)时间就可以被equals()否决掉,最后相同的那个才需要O(N^2)时间(需要跑完equals())。从~4N^2 到 ~N^2,快了大概4倍。
-其实完全可以全部都只用0来check,一共只需O(1)时间,但那样equals()的含义就变了;或者新写个方法zeroPositionEquals();either way API is broken...
-即使花O(N^2)时间来决定每个neighbor是否进入priority queue也是值得的,因为总的算法复杂度主要取决于game tree的复杂度,做这些pruning的工作,尤其是砍掉较高高度的枝叶时,可以提高很多效率。
3. isSolvable()中initial和twin,用一个pq而不是两个
-我还没想出来如何实现,请大家指教!
4. Cache manhattan/hamming distance in Board
-移动格子的时候用O(1)的时间更新一下,只有initial才需要用O(N^2)时间算出来。
5. Break ties
-Manhattan相同的时候,比较hamming。或其他方法,请大家指教!
6. Forget about API,moves和previous写在Board里
-这样作业当然是0分,但是能实现相同的功能,内存占用会少很多....
回复

使用道具 举报

🔗
merSalesLa 2016-4-26 23:22:17 | 只看该作者
全局:
改不动了先这样啦~memory2维转1维我看到了一堆麻烦......
更多图片 小图 大图
组图打开中,请稍候......

评分

参与人数 1学分 +1 收起 理由
yingy4 + 1

查看全部评分

回复

使用道具 举报

🔗
elyn 2016-6-12 16:12:04 | 只看该作者
全局:
debug到快死。。

8puzzle.png (40.5 KB, 下载次数: 0)

8puzzle.png

评分

参与人数 1学分 +1 收起 理由
yingy4 + 1

查看全部评分

回复

使用道具 举报

🔗
mjtyumi 2017-1-14 12:44:53 | 只看该作者
全局:
作业一次比一次难了,这次作业让我知道了什么叫垃圾代码,就是思路一样但是实现起来用时一个火箭 一个拖拉机。。。。(还花了这么久,自己代码能力还是太垃圾了自己的写的timing挂了大半,最后还是参考github上面添加了API才通过。



回复

使用道具 举报

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

本版积分规则

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