Introduction to Algorithms - Knowledge Frame

Introduction to Algorithms, MIT 6.006

Course Description

  • https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/
  • mathematical modeling of computational problems
  • covers:
    • common algorithms
    • algorithmic paradigms
    • data structures
    • used to solve these problems
  • emphasizes
    • relationship between algorithms and programming
    • basic performance measures and analysis techniques

Definition: Algorithm

  • https://en.wikipedia.org/wiki/Algorithm
    In mathematics and computer science, an algorithm is an unambiguous specification of how to solve a class of problems. Algorithms can perform calculation, data processing and automated reasoning tasks.
    An algorithm is an effective method that can be expressed within a finite amount of space and time and in a well-defined formal language for calculating a function. Starting from an initial state and initial input (perhaps empty), the instructions describe a computation that, when executed, proceeds through a finite number of well-defined successive states, eventually producing "output" and terminating at a final ending state.

Textbooks

  • T.Cormen, C.Leiserson, R.Rivest, C.Stein, Introduction to Algorithms, 3rd ed, 2009
  • B.Miller, D.Ranum, Problem Solving with Algorithms and Data Structures Using Python, 2nd ed, 2011

Syllabus and Readings

  • Introduction
    • Algorithmic thinking, peak finding - 1, 3, D.1
    • Models of computation, Python cost model, document distance - 1, 3, Python Cost Model
  • Sorting and Trees
    • Insertion sort, merge sort - 1.2, 2.1–2.3, 4.3–4.6
    • Heaps and heap sort - 6.1–6.4
    • Binary search trees, BST sort - 10.4, 12.1–12.3, Binary Search Trees
    • AVL trees, AVL sort - 13.2, 14
    • Counting sort, radix sort, lower bounds for sorting and searching - 8.1–8.3
  • Hashing
    • Hashing with chaining - 11.1–11.3
    • Table doubling, Karp-Rabin - 17
    • Open addressing, cryptographic hashing - 11.4
  • Numerics
    • Integer arithmetic, Karatsuba multiplication
    • Square roots, Newton's method
  • Graphs
    • Breadth-first search (BFS) - 22.1–22.2, B.4
    • Depth-first search (DFS), topological sorting - 22.3–22.4
  • Shortest Paths
    • Single-source shortest paths problem - 24.0, 24.5
    • Dijkstra - 24.3
    • Bellman-Ford - 24.1–24.2
    • Speeding up Dijkstra
  • Dynamic Programming
    • Memoization, subproblems, guessing, bottom-up; Fibonacci, shortest paths - 15.1, 15.3
    • Parent pointers; text justification, perfect-information blackjack - 15.3, Problem 15–4, Blackjack rules
    • String subproblems, psuedopolynomial time; parenthesization, edit distance, knapsack - 15.1, 15.2, 15.4
    • Two kinds of guessing; piano/guitar fingering, Tetris training, Super Mario Bros.
  • Advanced Topics
    • Computational complexity - 34.1–34.3
    • Algorithms research topics

Knowledge Frame

  • https://mubu.com/edit/LBhkOZpPF

你可能感兴趣的:(Introduction to Algorithms - Knowledge Frame)