Algorithms

  • Introduction to Algorithms, Grzegorz Malewicz.

    Contents (109 pages)
    1 INTRODUCTION
       1.1 The stable matching problem
       1.2 Notion of an algorithm
       1.3 Proving correctness of algorithms
       1.4 Insertion sort
       1.5 Analysis of running time
       1.6 Asymptotic notation
    2 SORTING
       2.1 Mergesort
           2.1.1 Recurrences
       2.2 Quicksort
       2.3 Randomized quicksort
       2.4 Lower bound on the time of sorting
       2.5 Countingsort
       2.6 Radixsort
    3 DYNAMIC PROGRAMMING
       3.1 Assembly-line scheduling
       3.2 Matrix chain multiplication
       3.3 Longest common substring
    4 GRAPH ALGORITHMS
       4.1 Breadth-first search
       4.2 Depth-first search
       4.3 Topological sort
       4.4 Minimum Spanning Tree
           4.4.1 Prim’s algorithm
       4.5 Network Flow
           4.5.1 Ford-Fulkerson Algorithm
       4.6 Maximum matchings in bipartite graphs
       4.7 Shortest Paths
           4.7.1 Dijkstra’s algorithm
           4.7.2 Directed acyclic graphs with possibly negative edge lengths
           4.7.3 Bellman-Ford



  • Introduction to Linear Programming, Michel X. Goemans.

    Linear programming is a very important class of problems, both algorithmically and
    combinatorially. Linear programming has many applications. From an algorithmic
    point-of-view, the simplex was proposed in the forties (soon after the war, and was
    motivated by military applications) and, although it has performed very well in prac-
    tice, is known to run in exponential time in the worst-case. On the other hand, since
    the early seventies when the classes P and NP were defined, it was observed that linear
    programming is...
    (39 pages)