普林斯顿算法课下 - assignment 2

坐在这个椅子上,腰已经很酸痛了。今天又是花了十个小时左右来写这个作业,
首先,最重要的一句话。普林斯顿毕竟是普林斯顿。作业实在是太牛逼。
这次对图,对最短路径,对贪婪算法有了很深刻的认识,毕竟写了这么多代码。
那个老教授说得对,贪心算法是学生接触到的第一个日后会经常使用到的算法思想,对,是算法思想,而不是算法。
贪心,就是对路径长度不停地刷新,直到选出最优解。
最短路径也是根据这个求出来的。弄懂了之后也没觉得有什么难了。自然,看我这么一篇文章也不可能弄懂。什么东西都得是花时间的。
对于有向无内环的图来说,直接用 topological sort即可得出最短路径,
复杂度仅为 E + V.
如果是有向有内环图,则只能使用Dijkstra 最短路径算法,复杂度是 ElogV.
如果是有向有内环图,且有负边,则用上述算法会陷入无限循环,于是出现了新的算法,Bell-Fordman 算法。复杂度为 E*V。
如果是有向有内环图,且有负边,且有负循环。额。。。天知道了。

然后说说这次作业。
这次作业就拿了90分。最后放弃调试了,因为错误都没了。剩下的就是 他觉得我内存用多了。我把所有用过的对象都申明为null,以此减少内存,但是还是太多。我想应该是我实现方法是有问题吧。我是这么做的。用一个二维数组来记录到每一个点最短的energy和。再用一个二维数组记录到每一个点的最短路径上一行的点,类似于edgeTo[].
然后我把topological order压入栈中,按照老师讲的方法来寻找最短路径,并且不断优化距离。中途也犯过很多错误,但是经过大量时间调试后都解决了。就是这个内存问题。
他测的是 五次水平删除后 这个Seam对象所占的大小。只有类成员才会占内存,所以我在每次删除后,都会将这些大型数组指向null。等到下次删除时,再重新生成这些数组。这样的确会浪费一些运行时间,但应该所占用内存会很小啊,怎么会还是这么大。不理解。
后来我也想过,每次删除后不释放那些大型数组,而是再次刷新。后来太累了,想不动了,就放弃了。
我觉得topological order总有BFS的影子。一直这么觉得。最短路径算法,就是一层层向外推进,被推到的点,都将被确认为最短路径点。然后以此作为根据,继续向外推进。一层一层,不就是BFS么。。。
还有一个教训,写代码最好的就是一口气写完。我本以为写的差不多了。然后就和一同学闲聊了好久。结果回来继续写发现第一次提交就44分,自己那种状态也没了,很浮躁。浪费了大量的时间来调试。而且把很多对的逻辑又改错了,走了挺多冤枉路。
Anyway, week2 终于又搞定了。应该还有三节课了吧,一定得跟下去啊。。。

之前有个阶段很累,然后bug也一直改不出来,绝望了。上网想找源码参考。后来还是放弃了。最终花了大量的时间调出了bug。这次花了一个多小时想着怎么实现这个程序,还是很有效的。之后写的比较顺利。最高潮的三个小时,写的我很爽。我感觉我自己在进步。现在也可以写一些简单的遍历了。对于数组的操作感觉理解更深刻了。这个怎么说呢?就是看数组看得更加透彻了。额。。。好像他成为我的一部分了。额。。。

然后是对栈和队列的理解。也是突然就领悟到,为什么要有栈,为什么要有队列。
其实不是为了存东西,或者说,不是主要为了存东西。而是为了改变事物发生的顺序。
栈的话,是先进后出。队列的话,是先进先出。这是两种不同的顺序,或者说容器的类型。也是做事情的两种方式。

最后对于迭代器的理解。什么是迭代器。我觉得iterator翻译成迭代器很不成功,太复杂,让人看不清本质。我觉得迭代器就是一种途径,让你可以不摸清这个容器里面是怎么存放成员的,但是你可以通过迭代器来获得成员。迭代器是一种快速通道,是黑盒子通往外界的一个通道。

最累的时候,女朋友给我发来了一个码农猝死的消息。其实挺害怕的。思考过度应该很容易猝死吧。每次写普林斯顿作业都是思考过度。。。实在太有挑战了。
然后很愧疚,没能帮女朋友做好听力。实在是扛不住了。我先好好休息下。明天再听力。
哦,对了。宾大也被拒了。这周五等不到CMU就去康奈尔了。
好运,Richardo. 好运,Shirley.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容