从2014年7月1日开始,历时近2个月,在coursera.org上参与的公开课<<Algorithms:Design and Analysis,Part 2>>已经告一段落。TimRoughgarden教授在Infoand FAQ for final exam中提到:“After finishing the exam, I hope you feel a sense of pride ---this course covers a ton of seriously challenging material!”。做为对自己的奖励,这个周末可以放松一下了。同时,对这门课程的大概内容做简要总结,以备温故而知新。
这门课是Stanford大学网络公开课<<Algorithms:Design and Analysis>>的Part2,涵盖的内容包括贪心算法、动态规划和NP完全问题及其近似算法。
在贪心算法中讲述了时序问题、Prim和Kruskal最小生成树算法、Huffman编码。
在动态规划算法中讲述了背包问题、序列对比、最优查找树、单源最短路径、Bellman-Ford算法、每对顶点间的最短路径、Floyd-Warshall算法、Johnson’s算法。
在NP完全问题中讲述了什么是P,什么是NP、NP-Complete,旅行商问题等。我觉得这一部分是最难的,对于好多理论,我都是囫囵吞枣。
这门公开课在内容和形式上都非常好,在课程的网页上可以找到videolecture的视频和slides,Tim教授的语速很快,我基本是对着subtitles看的。每周的Assignments包括5道选择题和几道(通常是1道)编程题。这些题对我来说并不轻松,好在没有时间限制,这2个月的周末时间基本都被花在这些问题的解决上。总的来看,我觉得用动态规划算法解决旅行商问题的编程题是最难的。另外,这门课还有DiscussionForum ,可以问问题,也可以分享一些解决某一问题的思路。最后,还有个FinalExam,都是选择题,有近1/4的题是之前每周Assignments中出现过的类似问题。