02 Algorithm Analysis
02 Algorithm Analysis
A LGORITHM A NALYSIS
‣ computational tractability
‣ asymptotic order of growth
‣ implementing Gale–Shapley
‣ survey of common running times
‣ computational tractability
‣ asymptotic order of growth
‣ implementing Gale–Shapley
‣ survey of common running times
SECTION 2.1
A strikingly modern thought
Analytic Engine
3
Models of computation: Turing machines
4
Models of computation: word RAM
assume w ≥ log2 n
Word RAM.
Each memory location and input/output cell stores a w-bit integer.
Primitive operations: arithmetic/logic operations, read/write memory,
array indexing, following a pointer, conditional branch, …
constant-time C-style operations
(w = 64)
input … memory
program a[i] i
.
.
output …
.
Running time. Number of primitive operations.
Memory. Number of memory cells utilized.
Caveat. At times, need more refined model (e.g., multiplying n-bit integers). 5
Brute force
Desirable scaling property. When the input size doubles, the algorithm
should slow down by at most some constant factor C.
Def. An algorithm is poly-time if the above scaling property holds.
7
Polynomial running time
Abstract
AbstractChen, Grigni, and Papadimitriou (WADS’97 and STOC’98)
have introduced a modified notion of planarity, where two
Chen, Grigni, and Papadimitriou (WADS’97 and STOC’98)
faces are considered adjacent if they share at least one point.
have introduced a modified notion of planarity, where two
The corresponding abstract graphs are called map graphs.
faces are considered adjacent if they share at least one point.
Chen et.al. raised the question of whether map graphs can be
The corresponding abstract graphs are called map graphs.
recognized in polynomial time. They showed that the decision Figure 1. Large
Chen et.al. raised the question of whether map graphs can be
9
Other types of analyses
10
2. A LGORITHM A NALYSIS
‣ computational tractability
‣ asymptotic order of growth
‣ implementing Gale–Shapley
‣ survey of common running times
SECTION 2.2
Big O notation
12
Analysis of algorithms: quiz 1
Let f(n) = 3n2 + 17 n log2 n + 1000. Which of the following are true?
D. Neither A nor B.
13
Big O notational abuses
Or restrict to a subset.
plotting, limits, calculus
Bottom line. OK to abuse notation in this way; not OK to misuse it.
14
Big O notation: properties
Reflexivity. f is O( f).
Constants. If f is O(g) and c > 0, then c f is O(g).
Products. If f 1 is O(g1) and f 2 is O(g2), then f 1 f 2 is O(g1 g2).
Pf.
∃ c1 > 0 and n1 ≥ 0 such that 0 ≤ f 1(n) ≤ c1 · g1(n) for all n ≥ n1.
∃ c2 > 0 and n2 ≥ 0 such that 0 ≤ f 2(n) ≤ c2 · g2(n) for all n ≥ n2.
Then, 0 ≤ f 1(n) · f 2(n) ≤ c1 · c2 · g1(n) · g2(n) for all n ≥ max { n1, n2 }. ▪
c n0
15
Big Omega notation
16
Analysis of algorithms: quiz 2
B. f(n) is Ω(g(n)) iff there exist constants c > 0 such that f(n) ≥ c · g(n) ≥ 0
for infinitely many n.
D. Neither A nor B.
17
Big Theta notation
Tight bounds. f(n) is Θ(g(n)) if there exist constants c1 > 0, c2 > 0, and n0 ≥ 0
such that 0 ≤ c1 · g(n) ≤ f(n) ≤ c2 · g(n) for all n ≥ n0. c2 · g(n)
f(n)
Ex. f(n) = 32n2 + 17n + 1. c1 · g(n)
f(n) is Θ(n2). choose c1 = 32, c2 = 50, n0 = 1
between ½ n log2 n
and n log2 n
19
Analysis of algorithms: quiz 3
f (n)
B. f(n) is Θ(g(n)) iff nlim for0 some constant 0 < c < ∞.
= c >
g(n)
2n n
f (n) =
3n n
g(n) = n
20
Asymptotic bounds and limits
f (n)
Proposition. If lim for0 some constant 0 < c < ∞ then f(n) is Θ(g(n)).
= c >
n g(n)
Pf.
By definition of the limit, for any ε > 0, there exists n0 such that
f (n)
c c+
g(n)
<latexit sha1_base64="4471u2rVjPFvRKTehhYE1ZF2UoY=">AAACbnicbVDRSiMxFE1HV7vdVas+7IOIYYtQEctUBJV9EZaFfXRhq0KnlMztnRrMJENyR1qGfpFf4+PqV/gHm6lFtnVvSHI4597c3BNnSjoKwz+VYGn5w8pq9WPt0+e19Y365taVM7kF7IBRxt7EwqGSGjskSeFNZlGkscLr+O57qV/fo3XS6N80zrCXiqGWiQRBnurXf3DgRzzCzEllNI+++aWwvHiUWAFF0tQHk2JYnnMq8MO3slq/3ghb4TT4e9CegQabxWV/s7IVDQzkKWoCJZzrtsOMeoWwJEHhpBblDjMBd2KIXQ+1SNH1ium8E77vmQFPjPVbE5+y/1YUInVunMY+MxV06xa1kvyf1s0pOesVUmc5oYbXRkmuOBlemscH0iKQGnsgwEr/Vw63wttE3uK5LtO3M4S5SYpRriWYAS6wikZkxcS72F707D3oHLfOW+Gvk8bF2czOKtthX1mTtdkpu2A/2SXrMGAP7JE9sefKS/Al2A32XlODyqxmm81F0PwL9Tm8EA==</latexit>
f (n)
Proposition. If lim = 0 , then f(n) is O(g(n)) but not Ω(g(n)).
n g(n)
<latexit sha1_base64="a6Ox4O/LCYsW5EpcWyBdjU0iDhE=">AAACZHicbVDLSgMxFE3HV62vqrgSJFgE3ZSpCFZEKLhxqWBV6JSSSe+0wUwyJHfUMszH+DVudekX+Btmahe2eiCXw7mv3BMmUlj0/c+SNze/sLhUXq6srK6tb1Q3t+6sTg2HNtdSm4eQWZBCQRsFSnhIDLA4lHAfPl4W+fsnMFZodYujBLoxGygRCc7QSb3qeSBF3MsUDYwYDJEZo59pIFSEo5wG5zSIDONZdKiO8mxQxEK8KIJf6VVrft0fg/4ljQmpkQmue5ulraCveRqDQi6ZtZ2Gn2A3YwYFl5BXgtRCwvgjG0DHUcVisN1sfGVOD5zSp5E27imkY/V3R8Zia0dx6CpjhkM7myvE/3KdFKNmNxMqSREU/1kUpZKipoVltC8McJQjRxg3wv2V8iFzvqAzdmrLeHYCfOqS7CVVgus+zKgSX9Cw3LnYmPXsL2kf18/q/s1JrdWc2Fkmu2SfHJIGOSUtckWuSZtw8kreyDv5KH15a962t/NT6pUmPdtkCt7eNxcjuXA=</latexit>
f (n)
Proposition. If lim = , then f(n) is Ω(g(n)) but not O(g(n)).
n g(n) <latexit sha1_base64="7KIVqEi//Gxt4Gr531t4InKKrao=">AAACaXicbVDRatswFFW8dk2zdkuzl7K+iIZB+xKcMVhHGQT20scU5iUQhyAr14moLBnpumsw/p1+TV9b6D/0Iyq7fmjSHZA4nHOvru6JUiks+v5jw3u3tf1+p7nb+rC3//FT+6Dz1+rMcAi4ltqMI2ZBCgUBCpQwTg2wJJIwiq5+l/7oGowVWv3BVQrThC2UiAVn6KRZexBKkcxyRUMjFktkxuh/NBQqxlVBw3MaxobxPD5Rp0W+KO9S/FU5VVFr1u76Pb8CfUv6NemSGsPZQaMTzjXPElDIJbN20vdTnObMoOASilaYWUgZv2ILmDiqWAJ2mlerFvSrU+Y01sYdhbRSX3fkLLF2lUSuMmG4tJteKf7Pm2QYn01zodIMQfGXQXEmKWpa5kbnwgBHuXKEcSPcXylfMhcOunTXplRvp8DXNslvMiW4nsOGKvEGDStciv3NzN6S4FvvZ8+//N4dnNVxNskROSYnpE9+kAG5IEMSEE5uyR25Jw+NJ6/jHXpfXkq9Rt3zmazB6z4DXwy7+A==</latexit>
21
Asymptotic bounds for some common functions
Logarithms and polynomials. loga n is O(n d ) for every a > 1 and every d > 0.
Pf. loga n
lim d
= 0
n n
Exponentials and polynomials. n d is O(r n ) for every r > 1 and every d > 0.
Pf. nd
lim n = 0
n r
Factorials. n! is 2Θ(n log n).
n n
Pf. Stirling’s formula: n! 2 n
e 22
Big O notation with multiple variables
Upper bounds. f(m, n) is O(g(m, n)) if there exist constants c > 0, m0 ≥ 0,
and n0 ≥ 0 such that f(m, n) ≤ c · g (m, n) for all n ≥ n0 and m ≥ m0.
Ex. f(m, n) = 32mn2 + 17mn + 32n3.
f(m, n) is both O(mn2 + n3) and O(mn3).
f(m, n) is neither O(n3) nor O(mn2).
23
2. A LGORITHM A NALYSIS
‣ computational tractability
‣ asymptotic order of growth
‣ implementing Gale–Shapley
‣ survey of common running times
SECTION 2.3
Efficient implementation
25
Efficient implementation
26
Data representation: making a proposal
hospital h 3 4 1 5 2 null
least favorite
favorite
27
Data representation: accepting/rejecting a proposal
Bottom line. After Θ(n2) preprocessing time (to create the n ranking arrays),
it takes O(1) time to accept/reject a proposal. 28
Stable matching: summary
29
2. A LGORITHM A NALYSIS
‣ computational tractability
‣ asymptotic order of growth
‣ implementing Gale–Shapley
‣ survey of common running times
SECTION 2.4
Constant time
Conditional branch.
Arithmetic/logic operation.
Declare/initialize a variable.
Follow a link in a linked list.
Access element i in an array.
Compare/exchange two elements in an array.
…
31
Linear time
Merge two sorted lists. Combine two sorted linked lists A = a1, a2, …, an and
B = b1, b2, …, bn into a sorted whole.
O(n) algorithm. Merge in mergesort.
i ← 1; j ← 1.
WHILE (both lists are nonempty)
IF (ai ≤ bj) append ai to output list and increment i.
ELSE append bj to output list and increment j.
Append remaining elements from nonempty list to output list.
32
TARGET SUM
input
20 10 20 30 35 40 60 70 T = 60
(sorted)
i j
33
Logarithmic time
lo ← 1; hi ← n.
WHILE (lo ≤ hi)
mid ← ⎣(lo + hi) / 2⎦.
IF (x < A[mid]) hi ← mid − 1.
ELSE IF (x > A[mid]) lo ← mid + 1.
ELSE RETURN mid.
RETURN −1.
35
Logarithmic time
O(log n)
https://www.facebook.com/pg/npcompleteteens
36
SEARCH IN A SORTED ROTATED ARRAY
90
35
50
85
80
60
65
75 67
80 85 90 95 20 30 35 50 60 65 67 75
1 2 3 4 5 6 7 8 9 10 11 12
37
Linearithmic time
40
Quadratic time
42
Cubic time
43
3-SUM
44
Polynomial time
nk
Exponential time. Running time is O(2 ) for some constant k > 0.
Independent set. Given a graph, find independent set of max cardinality.
O(n2 2n) algorithm. Enumerate all subsets.
S* ← ∅.
FOREACH subset S of nodes:
Check whether S is an independent set.
IF (S is an independent set and ⎢S⎟ > ⎢S*⎟)
S* ← S.
RETURN S*.
47
Analysis of algorithms: quiz 4
B. O(2cn ) for some constant c > 0. includes 3n but doesn’t include n! = 2Θ(n log n)
D. Neither A nor B.
48