吃了上学期记笔记的亏,这学期的笔记会按照课程进度慢慢更新,所以笔记的内容也许会相比上学期的更加详尽。
总之,欢迎来阅读COMP3352: 算法设计与分析的个人笔记!这次的序言内容就不叠甲了,总之还是那一套,内容可能有所出入,你觉得你对那么大概率就是你对,如果能帮到你我很开心。
本课程会按照进度涵盖下面的内容:
- Divide and conquer:分治法
- Greedy Algorithms:贪心算法
- Dynamic Programming:动态规划
- Graph Algorithms:图算法
- Network Flow: 网络流
- Problem Reduction and NP-completeness:问题归约与NP完整性
- Approximation Algorithms:近似算法
在课程开始之前,我们假设你已经拥有基础的数据结构知识,例如什么是数组,链表,栈,队列等。同时这个课程涵盖了基础离散数学的知识。你需要理解什么是大O表示法,会运用数学归纳法,理解什么是递归等等。当然,你也需要掌握基础编程知识:什么是递归,什么是循环,什么是条件判断,如何使用函数编程等等。
虽然课程不强制使用课本,但是这里有一些非常值得参考的书籍:
Algorithms, by S. Dasgupta, C. H. Papadimitriou, and U. Vazirani
Introduction to Algorithms, by T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein
还有选择性阅读的内容:
Algorithm Design, by E. Tardos and J. Kleinberg
Computational Complexity: A Modern Approach, by S. Arora and B. Barak
Approximation Algorithms, by V. Vazirani