- ※[推荐]※ youtube上的 youtube.com
- B站上的 【MIT公开课】6.006 算法导论(完结·中英字幕·机翻)_哔哩哔哩_bilibili
- MIT课程介绍官网 Introduction to Algorithms | Electrical Engineering and Computer Science | MIT OpenCourseWare
- MIT的6.046存在两个版本:2005,2015,前者无算法基础要求,后者要求先学过6.006,即本repo, 6.046(2015)在6.006的基础上又延伸了很多,如果只为算法入门的话,6.006完全足够
- 6.006只有2011年版本的,可以把它理解为 6.046(2005)的 升级版+精简版
- 本repo整理了MIT官网上提供的文档,加了一些自己的笔记和测试代码
- 文件夹前的编号是为了正确显示lec和ps的顺序,顺序参考了课程页面
- 比如:上完lec02和lec03之后开始做ps02
lec:讲义 or ppt ,与视频正课编号一致ps:problem set 也就是题xxx.cpp xxx.c xxx.py课上提到的问题、算法、数据结构的实现
| LEC # | TOPICS | KEY DATES | PS key words |
|---|---|---|---|
| Unit 1: Introduction | |||
| 1 | Algorithmic thinking, peak finding | Problem set 1 out | Asymptotic Practice & 2D Peek-Finding |
| 2 | Models of computation, Python cost model, document distance | ||
| Unit 2: Sorting and Trees | |||
| 3 | Insertion sort, merge sortSort.c |
Problem set 1 due Problem set 2 out |
Asymptotic Practice of Tree& Heap |
| 4 | Heaps and heap sortHeap.py HeapSort.c |
||
| 5 | Binary search trees, BST sort | ||
| 6 | AVL trees, AVL sortBBST.cpp |
Problem set 2 due | |
| 7 | Counting sort, radix sort, lower bounds for sorting and searchingCountingSort.c |
Problem set 3 out | Augmented AVL Trees & BBST |
| Unit 3: Hashing | |||
| 8 | Hashing with chaining | ||
| 9 | Table doubling, Karp-RabinStringMatching.cppHashTable.cpp SimpleHashTable.cpp |
Problem set 3 due Problem set 4 out |
Hash Table |
| 10 | Open addressing, cryptographic hashingHasTableOA.cpp |
Problem set 4 due | |
| Quiz 1 | |||
| Unit 4: Numerics | |||
| 11 | Integer arithmetic, Karatsuba multiplication | Problem set 5 out | |
| 12 | Square roots, Newton's method | ||
| Unit 5: Graphs | |||
| 13 | Breadth-first search (BFS) | ||
| 14 | Depth-first search (DFS), topological sorting | Problem set 5 due Problem set 6 out |
|
| Unit 6: Shortest Paths | |||
| 15 | Single-source shortest paths problem | ||
| 16 | Dijkstra | ||
| 17 | Bellman-Ford | ||
| 18 | Speeding up Dijkstra | Problem set 6 due | |
| Quiz 2 | |||
| Unit 7: Dynamic Programming | |||
| 19 | Memoization, subproblems, guessing, bottom-up; Fibonacci, shortest paths | Problem set 7 out | |
| 20 | Parent pointers; text justification, perfect-information blackjackBlackJack.cpp |
||
| 21 | String subproblems, psuedopolynomial time; parenthesization, edit distance, knapsackEditDistance.cppLongestCommonSubsequence.cpp |
||
| 22 | Two kinds of guessing; piano/guitar fingering, Tetris training, Super Mario Bros. | Problem set 7 due | |
| Unit 8: Advanced Topics | |||
| 23 | Computational complexity | ||
| 24 | Algorithms research topics |