Algorithms Design and Analysis

About the course:

This is an introductory graduate course on algorithms. Topics covered include mathematics of algorithm analysis, divide and conquer, randomization, greedy algorithms, dynamic programming, hashing, amortized analysis, data structures, graph algorithms, network flow, NP-completeness, and approximation algorithms.

References:

  1. G. Pandurangan. Algorithms (pdf).

2 . Cormen et al., Introduction to Algorithms.

3. D. Kozen., Design and analysis of algorithms.

4. Kleinberg and Tardos. Algorithms.

Lecture Notes:

Introduction

Divide and Conquer

Randomization

Greedy Algorithms

Dynamic Programming

Hashing

Amortized Analysis and Union Find

Fibonacci Heaps

Splay Trees

Graphs and Minimum Spanning Tree Algorithms

Shortest Paths

All Pairs Shortest Paths

Network Flow

Fast Network Flow

Matching

NP-Completeness

Approximation Algorithms

Probabilistic Algorithms