Introduction to Algorithms - Knowledge Frame

Introduction to Algorithms, MIT 6.006

Course Description

  • 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

    原文作者:Bellman-Ford
    原文地址: https://www.jianshu.com/p/196ecd01f10a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞