Anda di halaman 1dari 117

Lecture Notes for Algorithm Analysis and Design

Sandeep Sen 1

March 16, 2008

1 Department of Computer Science and Engineering, IIT Delhi, New Delhi 110016, India. E-mail:ssen@cse.iitd.ernet.in

Contents

1 Model and Analysis

 

6

1.1 Computing Fibonacci numbers .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

6

1.2 Fast Multiplication

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

8

1.3 Model of Computation

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

10

1.4 Other models

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

11

1.4.1 External memory model

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

11

1.4.2 Parallel Model

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

12

2 Warm up problems

 

14

2.1 Euclid’s algorithm for GCD

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

14

2.1.1

Extended Euclid’s algorithm

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

15

2.2 Finding the k -th element .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

16

2.2.1 Choosing a random splitter

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

17

2.2.2 Median of medians

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

18

2.3 Sorting words

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

18

2.4 Mergeable heaps

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

20

2.4.1

Merging Binomial Heaps

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

21

3 Optimization I :

 

Brute force and Greedy strategy

 

22

3.1 Heuristic search approaches

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

22

3.1.1

Game Trees *

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

24

3.2 A framework for Greedy Algorithms

 

26

3.2.1 Maximal Spanning Tree

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

28

3.2.2 A Scheduling Problem .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

29

3.3 Efficient data structures for MST algorithms

 

29

3.3.1 A simple data structure for union-find

 

30

3.3.2 A faster scheme

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

31

3.3.3 The slowest growing function ?

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

32

3.3.4 Putting things together .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

33

1

3.3.5

Path compression only

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

34

4 Optimization II :

 

Dynamic Programming

 

35

4.1 A generic dynamic programming formulation

 

36

4.2 Illustrative examples

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

36

4.2.1 Context Free Parsing

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

36

4.2.2 Longest monotonic subsequence

 

37

4.2.3 Function approximation

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

38

4.2.4 Viterbi’s algorithm for Expectation Maximization

 

39

5 Searching

41

5.1 Skip Lists - a simple dictionary

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

41

5.1.1 Construction of Skip-lists .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

41

5.1.2 Analysis

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

42

5.2 Treaps : Randomized Search Trees

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

44

5.3 Universal Hashing

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

46

5.3.1

Example of a Universal Hash function

 

47

5.4 Perfect Hash function

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

48

5.4.1

Converting expected bound to worst case bound

 

49

5.5 A log log N priority queue

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

49

6 Multidimensional Searching and Geometric algorithms

 

51

6.1 Interval Trees and Range Trees

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

51

6.1.1

Two Dimensional Range Queries

 

52

6.2 k-d trees

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

53

6.3 Priority Search Trees

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

55

6.4 Planar Convex Hull

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

56

6.4.1 Jarvis March

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

57

6.4.2 Graham’s Scan

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

57

6.4.3 Sorting and Convex hulls .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

57

6.5 A Quickhull Algorithm

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

58

6.5.1 Analysis

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

59

6.5.2 Expected running time

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

61

6.6 Point location using persistent data structure

 

62

7 Fast Fourier Transform and Applications

 

65

7.1 Polynomial evaluation and interpolation

 

65

7.2 Cooley-Tukey algorithm

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

66

7.3 The butterfly network

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

68

 

2

7.4

Schonage and Strassen’s fast multiplication

69

8 String matching and finger printing

 

72

8.1 Rabin Karp fingerprinting

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

72

8.2 KMP algorithm

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

74

8.2.1 Potential method and amortized analysis

 

75

8.2.2 Analysis of the KMP algorithm

 

75

8.2.3 Pattern Analysis

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

76

8.3 Generalized String matching

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

76

8.3.1

Convolution based approach

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

76

9 Graph Algorithms

79

9.1 Applications of DFS

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

79

9.1.1 Strongly Connected Components (SCC)

 

79

9.1.2 Finding Biconnected Components (BCC)

 

.

.

.

.

.

.

.

.

.

.

.

80

9.2 Path problems

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

82

9.2.1 Bellman Ford SSSP Algorithm

 

82

9.2.2 Dijkstra’s SSSP algorithm

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

84

9.2.3 Floyd-Warshall APSP algorithm

 

85

9.3 Maximum flows in graphs

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

85

9.3.1 Max Flow Min Cut

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

87

9.3.2 Ford and Fulkerson method

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

88

9.3.3 Edmond Karp augmentation strategy

 

88

9.3.4 Monotonicity Lemma and bounding the iterations

 

88

9.4 Global Mincut

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

90

9.4.1 The contraction algorithm

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

90

9.4.2 Probability of mincut .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

91

10 NP Completeness and Approximation Algorithms

 

93

10.1 Classes and reducibility .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

94

10.2 Cook Levin theorem

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

95

10.3 Common NP complete problems

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

97

10.3.1

Other important complexity classes

 

97

10.4 Combating hardness with approximation

 

99

10.4.1 Equal partition

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

99

10.4.2 Greedy set cover

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

100

10.4.3 The metric TSP problem

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

101

10.4.4 Three colouring

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

102

10.4.5 Maxcut

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

102

 

3

A

Recurrences and generating functions

104

 

A.1

An iterative method - summation

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

104

A.2

Linear recurrence equations

A.2.1

A.2.2

. Homogeneous equations

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

106

106

 

Inhomogeneous equations

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

107

 

A.3

A.4

Generating functions

. Exponential generating functions

A.3.1

. Binomial theorem

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.