斯坦福算法Specialization的收获

为什么要写这篇文章

从5月份开始,我加入了Coursera上的“斯坦福算法Specialization”, 到现在已经完成了两门课,收获颇为丰富。今天想到一个道理:学习是要有产出的,我回顾了一下这几个月的学习历程,程序写得不少,笔记也记了一叠又一叠,总结性的文章却没有怎么写。这篇博文就是要fill this gap, 我到底学到了什么,这些东西有用在哪里,总结就是为了给自己一个清楚的概念,让我能够很快地回答这些问题。

同时写作也是一个爱好。看到博客上文章的阅读量攀升,我是能够感觉到很强烈的成就感,虽然至今没有评论,但那些真实的阅读量给我一种intuition which is like “我写的东西有人看,这挺好的”。废话少说,我们进入正题。

收获一:建立起与Graph的舒适感

用英文讲就是 Now I can feel more comfortable working with graph. 最早接触图论的时候总觉得它是个高不可攀的东西,各种概念种类繁多;图这个东西不仅有结点,还有边,边还能有向和无向,方向之外它还可以有权重…. 总之对初学者来说,这么多概念砸在一起确实让人挺无奈。大学里学了离散数学,对图论已经有所了解,现在再学起跟图有关的算法,其实是把高中那些overwhelming的知识点重学一遍,自然是感觉舒服得多。

我的Primary Language是Java,现在碰到用得到图的问题,我会很熟练地去使用JGraphT这个API. 在pom.xml 里加上一些dependency信息就能够很好地调用,这是一个挺好的库,跟图有关的操作比如 getEdge(Vertex v1, Vertex v2), getEdgeWeight 还有一些获取结点neighbor的方法都非常实用,免去了自己实现的烦躁。最近实习的项目里需要管理一些dependency, 有些依赖是双向的,有些是单向的,我很自然地就用graph作为数据结构,PM需要app能够取出所有的dependencies 可以用获取结点所有neighbor的方法解决。

我自己的图论词汇量也获得了拓展。Dijkstra 这个词我一直觉得可怕,一方面觉得它的算法难以理解,另一方面我始终不知道怎么念这个名字。这两方面都是问题,但我都找到解决的办法了。如果对图的基本概念熟悉以后,研究一下Dijkstra Shortest Path的伪代码就会发现这是一个非常容易理解的算法,实际上所有好的算法都share this property of simplicity. 我又自己实现了一下,算法在一个很大的data set上运算正确,第一个问题就算我解决完毕。第二个问题其实更简单,视频课里面斯坦福的老师一遍又一遍重复他的名字,我不想知道也要知道了他的读音,j k 都不发音,念它的时候可以把两个字母省略掉… pe

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值