math
Relevant Mathematics
Jeff Edmonds
York University
COSC 3101
Lecture skipped.
(Done when needed)
Thinking about Algorithms Abstractly
Logic Quantifiers
The Time Complexity of an Algorithm
Classifying Functions
Adding Made Easy
Recurrence Relations
In More Details
1
Some Math
Time Complexity
t(n) = Q(n2)
Logic Quantifiers
g “b Loves(b,g)
“b g Loves(b,g)
In Iterative Algs (GCD)
See logic slides
2
Some Math
Logs and Exps
2a × 2b = 2a+b
2log n = n
You are on your own.
Input Size
Time
Classifying Functions
f(i) = nQ(n)
See logic slides
3
Some Math
Recurrence Relations
T(n) = a T(n/b) + f(n)
Adding Made Easy
∑i=1 f(i).
In Iterative Algs
(Insertion Sort)
In Recursive Algs
(Multiplying)
In Recursive Algs
(Multiplying,
Towers of Hanoi,
Merge Sort)
4
The Time Complexity of an Algorithm
Specifies how the running time depends on the size of the input.
5
Purpose?
6
Purpose
To estimate how long a program will run.
To estimate the largest input that can reasonably be given to the program.
To compare the efficiency of different algorithms.
To help focus on the parts of code that are executed the largest number of times.
To choose an algorithm for an application.
7
Time Complexity Is a Function
Specifies how the running time depends on the size of the input.
A function mapping
“size” of input
“time” T(n) executed .
8
Definition of Time?
9
Definition of Time
# of seconds (machine dependent).
# lines of code executed.
# of times a specific operation is performed (e.g., addition).
Which?
10
Definition of Time
# of seconds (machine dependent).
# lines of code executed.
# of times a specific operation is performed (e.g., addition).
These are all reasonable definitions of time, because they are within a constant factor of each other.
11
Size of Input Instance?
83920
12
Size of Input Instance
Size of paper
# of bits
# of digits
Value
– n = 2 in2
– n = 17 bits
– n = 5 digits
– n = 83920
2’’
83920
5
1’’
Which are reasonable?
13
Size of Input Instance
Size of paper
# of bits
# of digits
Value
– n = 2 in2
– n = 17 bits
– n = 5 digits
– n = 83920
Intuitive
2’’
83920
5
1’’
14
Size of Input Instance
Size of paper
# of bits
# of digits
Value
– n = 2 in2
– n = 17 bits
– n = 5 digits
– n = 83920
Intuitive
Formal
2’’
83920
5
1’’
15
Size of Input Instance
Size of paper
# of bits
# of digits
Value
– n = 2 in2
– n = 17 bits
– n = 5 digits
– n = 83920
Intuitive
Formal
Reasonable
# of bits =
3.32 * # of digits
2’’
83920
5
1’’
16
Size of Input Instance
Size of paper
# of bits
# of digits
Value
– n = 2 in2
– n = 17 bits
– n = 5 digits
– n = 83920
Intuitive
Formal
Reasonable
Unreasonable
# of bits = log2(Value) Value = 2# of bits
2’’
83920
5
1’’
17
Two Example Algorithms
Sum N array entries:
A(1) + A(2) + A(3) + …
Factor value N:
Input N=5917 & Output N=97*61.
Algorithm N/2, N/3, N/4, …. ?
Time?
Time = N
Time = N
Is this reasonable?
No! One is considered fast and the other slow!
18
Two Example Algorithms
Sum N array entries:
A(1) + A(2) + A(3) + …
Factor value N:
Input N=5917 & Output N=97*61.
Algorithm N/2, N/3, N/4, …. ?
Standard input size?
Time = N
Time = N
N = hard drive
= 60G < 236
N = crypto key
= 2100
19
Two Example Algorithms
Sum N array entries:
A(1) + A(2) + A(3) + …
Factor value N:
Input N=5917 & Output N=97*61.
Algorithm N/2, N/3, N/4, …. ?
Size of Input Instance?
Time = N
Time = N
size n = N
size n = log N
20
Two Example Algorithms
Sum N array entries:
A(1) + A(2) + A(3) + …
Factor value N:
Input N=5917 & Output N=97*61.
Algorithm N/2, N/3, N/4, …. ?
size n = N
size n = log N
Time as function of input size?
Time for you to solve problem instance
as a function of
time for me to give you the problem instance.
= n
= 2n
Time = N
Time = N
21
Two Example Algorithms
Sum N array entries:
A(1) + A(2) + A(3) + …
Factor value N:
Input N=5917 & Output N=97*61.
Algorithm N/2, N/3, N/4, …. ?
Linear vs Exponential Time!
size n = N
size n = log N
= n
= 2n
Time = N
Time = N
22
Size of Input Instance?
14,23,25,30,31,52,62,79,88,98
23
Size of Input Instance
# of elements = n = 10 elements
14,23,25,30,31,52,62,79,88,98
10
24
Size of Input Instance
# of elements = n = 10 elements
14,23,25,30,31,52,62,79,88,98
10
Is this reasonable?
25
Size of Input Instance
# of elements = n = 10 elements Reasonable
14,23,25,30,31,52,62,79,88,98
10
If each element has size c
# of bits = c * # of elements
26
Size of Input Instance
# of elements = n = 10 elements Reasonable
14,23,25,30,31,52,62,79,88,98
10
If each element is in [1..n]
each element has size log n
# of bits = n log n ≈ n
~
27
Time Complexity Is a Function
Specifies how the running time depends on the size of the input.
A function mapping
# of bits n needed to represent the input
# of operations T(n) executed .
28
Which Input of size n?
There are 2n inputs of size n.
Which do we consider
for the time T(n)?
29
Which Input of size n?
Typical Input
Average Case
Worst Case
30
Which Input of size n?
Typical Input
But what is typical?
Average Case
For what distribution?
Worst Case
Time for all inputs is bound.
Easiest to compute
31
What is the height of tallest person in the class?
Bigger than this?
Need to look at
only one person
Need to look at
every person
Smaller than this?
32
Time Complexity of Algorithm
O(n2): Prove that for every input of size n, the algorithm takes no more than cn2 time.
Ω(n2): Find one input of size n, for which the algorithm takes at least this much time.
θ (n2): Do both.
The time complexity of an algorithm is
the largest time required on any input
of size n.
33
Time Complexity of Problem
O(n2): Provide an algorithm that solves the problem in no more than this time.
Ω(n2): Prove that no algorithm can solve it faster.
θ (n2): Do both.
The time complexity of a problem is
the time complexity of the fastest algorithm that solves the problem.
34
Classifying Functions
T(n)
10
100
1,000
10,000
log n
3
6
9
13
amoeba
n1/2
3
10
31
100
bird
10
100
1,000
10,000
human
n log n
30
600
9,000
130,000
my father
n2
100
10,000
106
108
elephant
n3
1,000
106
109
1012
dinosaur
2n
1,024
1030
10300
103000
the universe
Note: The universe contains approximately 1050 particles.
n
35
Classifying Functions
Functions
Poly Logarithmic
Polynomial
Exponential
Exp
Double Exp
Constant
(log n)5
n5
25n
5
2
n5
25n
2
<<
<<
<<
<<
<<
(log n)θ(1)
nθ(1)
2θ(n)
θ(1)
2
nθ(1)
2θ(n)
2
36
Classifying Functions
Linear
Quadratic
Cubic
?
θ(n2)
θ(n)
θ(n3)
Polynomial
= nθ(1)
θ(n4)
Others
θ(n3 log7(n))
log(n) not absorbed
because not
Mult-constant
37
Classifying Functions
Functions
Poly.
Exp.
8·24n / n100
θ(24n / n100)
8·24n + n3
nθ(1)
2θ(n)
θ(24n)
8·n2
θ(n2)
θ(n3 log(n))
7·n3log(n)
We consider two (of many)
levels in this hierarchy
Individuals
Ignore
Mult-constant
Ignore
Power-constant
38
BigOh and Theta?
5n2 + 8n + 2log n = (n2)
Drop low-order terms.
Drop multiplicative constant.
5n2 log n + 8n + 2log n = (n2 log n)
39
Which Functions are Polynomials?
nc
n0.0001
n10000
5n2 + 8n + 2log n
5n2 log n
5n2.5
Drop low-order terms.
Drop constant, log, (and poly) factors.
Ignore power constant.
Write nθ(1)
40
Which Functions are Exponential?
2n
20.0001 n
210000 n
8n
2n / n100
2n · n100
Drop low-order terms.
Drop constant, log, and poly factors.
Ignore power constant.
Write 2θ(n)
41
Notations
Theta f(n) = θ(g(n)) f(n) ≈ c g(n)
BigOh f(n) = O(g(n)) f(n) ≤ c g(n)
Omega f(n) = Ω(g(n)) f(n) ≥ c g(n)
Little Oh f(n) = o(g(n)) f(n) << c g(n)
Little Omega f(n) = ω(g(n)) f(n) >> c g(n)
42
Definition of Theta
f(n) = θ(g(n))
43
Definition of Theta
f(n) is sandwiched between c1g(n) and c2g(n)
f(n) = θ(g(n))
44
Definition of Theta
f(n) is sandwiched between c1g(n) and c2g(n)
for some sufficiently small c1 (= 0.0001)
for some sufficiently large c2 (= 1000)
f(n) = θ(g(n))
45
Definition of Theta
For all sufficiently large n
f(n) = θ(g(n))
46
Definition of Theta
For all sufficiently large n
For some definition of “sufficiently large”
f(n) = θ(g(n))
47
Definition of Theta
3n2 + 7n + 8 = θ(n2)
48
Order of Quantifiers
No! It cannot be a different c1 and c2
for each n.
f(n) = θ(g(n))
49
Gauss
∑i=1..n i = 1 + 2 + 3 + . . . + n
= ?
Arithmetic Sum
50
1 2 . . . . . . . . n
= number of white dots
1
+
2
+
3
+
. . .
+
n-1
+
n
=
S
Adding Made Easy
51
1
+
2
+
3
+
. . .
+
n-1
+
n
=
S
n
+
n-1
+
n-2
+
. . .
+
2
+
1
=
S
1 2 . . . . . . . . n
= number of yellow dots
n . . . . . . . 2 1
= number of white dots
Adding Made Easy
52
1
+
2
+
3
+
. . .
+
n-1
+
n
=
S
n
+
n-1
+
n-2
+
. . .
+
2
+
1
=
S
= number of white dots
= number of yellow dots
n+1 n+1 n+1 n+1 n+1
n
n
n
n
n
n
= n(n+1) dots in the grid
2S dots
S =
n (n+1)
2
Adding Made Easy
53
Gauss
∑i=1..n i = 1 + 2 + 3 + . . . + n
= Q(# of terms · last term)
Arithmetic Sum
True when ever terms increase slowly
54
∑i=0..n 2i = 1 + 2 + 4 + 8 +. . . + 2n
= ?
Geometric Sum
55
Geometric Sum
56
∑i=0..n 2i = 1 + 2 + 4 + 8 +. . . + 2n
= 2 · last term – 1
Geometric Sum
57
∑i=0..n ri = r0 + r1 + r2 +. . . + rn
= ?
Geometric Sum
58
S
Sr
r
r
r
.
.
.
r
r
S
Sr
1
r
S
r
1
r
1
2
3
n
n
1
n
1
n
1
=
1
r
r
r
.
.
.
2
3
r
n
+
+
+
+
+
=
+
+
+
+
+
–
=
–
=
–
–
+
+
+
Geometric Sum
59
∑i=0..n ri
r
1
r
1
n
1
=
–
–
+
Geometric Sum
When r>1?
60
∑i=0..n ri
r
1
r
1
n
1
=
–
–
+
Geometric Sum
= θ(rn)
Biggest Term
When r>1
61
∑i=0..n ri = r0 + r1 + r2 +. . . + rn
= Q(biggest term)
Geometric Increasing
True when ever terms increase quickly
62
∑i=0..n ri
=
Geometric Sum
When r<1? 1 r 1 r n 1 + - - 63 ∑i=0..n ri = Geometric Sum 1 r 1 r n 1 + - - = θ(1) When r<1 Biggest Term 64 ∑i=0..n ri = r0 + r1 + r2 +. . . + rn = Q(1) Bounded Tail True when ever terms decrease quickly 65 ∑i=1..n 1/i = 1/1 + 1/2 + 1/3 + 1/4 + 1/5 + …+ 1/n = ? Harmonic Sum 66 f(i) = 1 ∑i=1..n f(i) = n n Sum of Shrinking Function 67 f(i) = ? ∑i=1..n f(i) = n1/2 n Sum of Shrinking Function 68 f(i) = 1/2i ∑i=1..n f(i) = 2 ¥ Sum of Shrinking Function 69 f(i) = 1/i ∑i=1..n f(i) = ? n Sum of Shrinking Function 70 Harmonic Sum 71 ∑i=1..n 1/i = 1/1 + 1/2 + 1/3 + 1/4 + 1/5 + …+ 1/n = Q(log(n)) Harmonic Sum 72 Approximating Sum by Integrating The area under the curve approximates the sum ∑i=1..n f(i) ≈ ∫x=1..n f(x) dx 73 Adding Made Easy (For +, -, ×, , exp, log functions f(n)) 74 Adding Made Easy 75 Geometric Like: If f(n) ³ 2Ω(n), then ∑i=1..n f(i) = θ(f(n)). Arithmetic Like: If f(n) = nθ(1)-1, then ∑i=1..n f(i) = θ(n · f(n)). Harmonic: If f(n) = 1/n , then ∑i=1..n f(i) = logen + θ(1). Bounded Tail: If f(n) £ n-1-Ω(1), then ∑i=1..n f(i) = θ(1). (For +, -, ×, , exp, log functions f(n)) This may seem confusing, but it is really not. It should help you compute most sums easily. Adding Made Easy 76 Recurrence Relations T(1) = 1 T(n) = a T(n/b) + f(n) 77 Recurrence Relations » Time of Recursive Program With all this recursing and looping, how do we determine the running time of this recursive program? procedure Eg(In) n = |In| if(n£1) then put “Hi” else loop i=1..f(n) put “Hi” loop i=1..a In/b = In cut in b pieces Eg(In/b) T(1) = 1 T(n) = a T(n/b) + f(n) Recurrence relations. 78 Recurrence Relations » Time of Recursive Program Let n be the “size” of our input. procedure Eg(In) n = |In| if(n£1) then put “Hi” else loop i=1..f(n) put “Hi” loop i=1..a In/b = In cut in b pieces Eg(In/b) T(1) = 1 T(n) = a T(n/b) + f(n) 79 Recurrence Relations » Time of Recursive Program Let T(n) be the # of “Hi”s printed by me procedure Eg(In) n = |In| if(n£1) then put “Hi” else loop i=1..f(n) put “Hi” loop i=1..a In/b = In cut in b pieces Eg(In/b) T(1) = 1 T(n) = a T(n/b) + f(n) 80 Recurrence Relations » Time of Recursive Program Let T(n) be the # of “Hi”s printed by me And by all of my friends. procedure Eg(In) n = |In| if(n£1) then put “Hi” else loop i=1..f(n) put “Hi” loop i=1..a In/b = In cut in b pieces Eg(In/b) T(1) = 1 T(n) = a T(n/b) + f(n) 81 If my input is sufficiently small (according to my measure of size) then I print (1) “Hi”s. Recurrence Relations » Time of Recursive Program procedure Eg(In) n = |In| if(n£1) then put “Hi” else loop i=1..f(n) put “Hi” loop i=1..a In/b = In cut in b pieces Eg(In/b) T(1) = 1 T(n) = a T(n/b) + f(n) 82 I personally output f(n) “Hi”s, i.e. top level stack frame. Recurrence Relations » Time of Recursive Program procedure Eg(In) n = |In| if(n£1) then put “Hi” else loop i=1..f(n) put “Hi” loop i=1..a In/b = In cut in b pieces Eg(In/b) T(1) = 1 T(n) = a T(n/b) + f(n) 83 I have a friends i.e. recurse a times. Recurrence Relations » Time of Recursive Program procedure Eg(In) n = |In| if(n£1) then put “Hi” else loop i=1..f(n) put “Hi” loop i=1..a In/b = In cut in b pieces Eg(In/b) T(1) = 1 T(n) = a T(n/b) + f(n) 84 Let b be the factor by which I shrink the input before giving it to a friend. i.e. if my input has size n then my friends are of size n/b. Recurrence Relations » Time of Recursive Program procedure Eg(In) n = |In| if(n£1) then put “Hi” else loop i=1..f(n) put “Hi” loop i=1..a In/b = In cut in b pieces Eg(In/b) T(1) = 1 T(n) = a T(n/b) + f(n) 85 By definition of T, the number of “Hi”s printed by one of my friends and all of his friends is T(n/b). Recurrence Relations » Time of Recursive Program procedure Eg(In) n = |In| if(n£1) then put “Hi” else loop i=1..f(n) put “Hi” loop i=1..a In/b = In cut in b pieces Eg(In/b) T(1) = 1 T(n) = a T(n/b) + f(n) 86 Hence, the total number printed by me and my a friends is T(n) = a T(n/b) + f(n) Recurrence Relations » Time of Recursive Program procedure Eg(In) n = |In| if(n£1) then put “Hi” else loop i=1..f(n) put “Hi” loop i=1..a In/b = In cut in b pieces Eg(In/b) T(1) = 1 T(n) = a T(n/b) + f(n) 87 Evaluating: T(n) = aT(n/b)+f(n) Level Instance size Work in stack frame # stack frames Work in Level 0 n f(n) 1 1 · f(n) 1 n/b f(n/b) a a · f(n/b) 2 n/b2 f(n/b2) a2 a2 · f(n/b2) i n/bi f(n/bi) ai ai · f(n/bi) h = log n/log b n/bh T(1) n log a/log b n · T(1) log a/log b Dominated by Top Level or Base Cases 88 Evaluating: T(n) = aT(n/b)+f(n) 89 Merge Sort Sort Time: T(n) = = Q(n log(n)) 2T(n/2) + Q(n) Total work at any level = Q(n) # levels = Q(log(n)) 90 Evaluating: T(n) = aT(n/b)+f(n) Level Instance size Work in stack frame # stack frames Work in Level 0 n f(n) 1 1 · f(n) 1 n/b f(n/b) a a · f(n/b) 2 n/b2 f(n/b2) a2 a2 · f(n/b2) i n/bi f(n/bi) ai ai · f(n/bi) h = log n/log b n/bh T(1) n log a/log b n · T(1) log a/log b Total Work T(n) = ∑i=0..h ai×f(n/bi) 2T(n/2) + Q(n) 2i·Q(n/2i) = Q(n) = Q(n) · log(n) All levels basically the same. 91 Evaluating: T(n) = aT(n/b)+f(n) 92 Logs log 27 log 9 = 93 Logs log? 27 log? 9 = Which base? 94 Logs log2 27 log2 9 = It does not matter. log2 c log2 c · logc 27 · logc 9 = logc 27 logc 9 Which is easiest? 95 Logs log3 27 log3 9 = log3 33 log3 32 = 3 2 Please no calculators in exams. And I wont ask log 25 log 9 96 Evaluating: T(n) = 4T(n/2)+ n3/log5n 97 Time for top level?: Evaluating: T(n) = 4T(n/2)+ n3/log5n 98 Time for top level: f(n) = n3/log5n Time for base cases?: Evaluating: T(n) = 4T(n/2)+ n3/log5n 99 Time for top level: f(n) = n3 /log5n Time for base cases: Evaluating: T(n) = 4T(n/2)+ n3/log5n θ(n ) = log a/log b θ(n ) log ?/log ? 100 Time for top level: f(n) = n3 /log5n Time for base cases: Evaluating: T(n) = 4T(n/2)+ n3/log5n θ(n ) = log a/log b θ(n ) = ? log 4/log 2 101 Time for top level: f(n) = n3/log5n Time for base cases: Dominated?: c = ? Evaluating: T(n) = 4T(n/2)+ n3/log5n θ(n ) = log a/log b θ(n ) = θ(n2) log 4/log 2 log a/log b = ? 102 Time for top level: f(n) = n3/log5n Time for base cases: Dominated?: c = 3 > 2 = log a/log b
Evaluating: T(n) = 4T(n/2)+ n3/log5n
θ(n ) =
log a/log b
θ(n ) = θ(n2)
log 4/log 2
Hence, T(n) = ?
103
Time for top level: f(n) = n3/log5n
Time for base cases:
Dominated?: c = 3 > 2 = log a/log b
Evaluating: T(n) = 4T(n/2)+ n3/log5n
θ(n ) =
log a/log b
θ(n ) = θ(n2)
log 4/log 2
Hence, T(n) = θ(top) = θ(f(n)) = θ(n3/log5n).
104
Time for top level: f(n) = 2n
Time for base cases:
Dominated?: c = ? > 2 = log a/log b
Evaluating: T(n) = 4T(n/2)+ 2n
θ(n ) =
log a/log b
θ(n ) = θ(n2)
log 4/log 2
Hence, T(n) = θ(top) = θ(f(n)) = θ(2n).
bigger
>big
The time is even more dominated
by the top level of recursion
105
Time for top level: f(n) = n log5n
Time for base cases:
Dominated?: c = ? 2 = log a/log b
Evaluating: T(n) = 4T(n/2)+ n log5n
θ(n ) =
log a/log b
θ(n ) = θ(n2)
log 4/log 2
Hence, T(n) = ?
1<
= θ(base cases) = θ(n ) = θ(n2).
log a/log b
106
Time for top level: f(n) = log5n
Time for base cases:
Dominated?: c = ? 2 = log a/log b
Evaluating: T(n) = 4T(n/2)+ log5n
θ(n ) =
log a/log b
θ(n ) = θ(n2)
log 4/log 2
Hence, T(n) = ?
0<
= θ(base cases) = θ(n ) = θ(n2).
log a/log b
107
Time for top level: f(n) = n2
Time for base cases:
Dominated?: c = ? 2 = log a/log b
Evaluating: T(n) = 4T(n/2)+ n2
θ(n ) =
log a/log b
θ(n ) = θ(n2)
log 4/log 2
Hence, T(n) = ?
2=
= θ(f(n) log(n) ) = θ(n2 log(n)).
108
Time for top level: f(n) = n2 log5n
Time for base cases:
Dominated?: c = 2 = 2 = log a/log b
Evaluating: T(n) = 4T(n/2)+ n2 log5n
θ(n ) =
log a/log b
θ(n ) = θ(n2)
log 4/log 2
d = ?
5 ?
Hence, T(n) = ?
> -1
= θ(f(n) log(n) ) = θ(n2 log6(n)).
109
Evaluating: T(n) = aT(n/b)+f(n)
110
Evaluating: T(n) = aT(n-b)+f(n)
h = ?
n-hb
n-ib
n-2b
n-b
T(0)
f(n-ib)
f(n-2b)
f(n-b)
f(n)
n
Work in Level
# stack frames
Work
in stack
frame
Instance
size
a
ai
a2
a
1
n/b
a · T(0)
ai · f(n-ib)
a2 · f(n-2b)
a · f(n-b)
1 · f(n)
n/b
|base case| = 0 = n-hb
h = n/b
h = n/b
i
2
1
0
Level
Likely dominated by base cases
Exponential
111
Evaluating: T(n) = 1T(n-b)+f(n)
h = ?
Work in Level
# stack frames
Work
in stack
frame
Instance
size
1
1
1
1
1
f(0)
f(n-ib)
f(n-2b)
f(n-b)
f(n)
n-b
n
n-hb
n-ib
n-2b
T(0)
f(n-ib)
f(n-2b)
f(n-b)
f(n)
h = n/b
i
2
1
0
Level
Total Work T(n) = ∑i=0..h f(b·i)
= θ(f(n)) or θ(n·f(n))
112
Evaluating: T(n) = aT(n/b)+f(n)
113
Relevant Mathematics
In more detail.
Jeff Edmonds
York University
COSC 3101
Lecture skipped
Thinking about Algorithms Abstractly
Classifying Functions
The Time Complexity of an Algorithm
Adding Made Easy
Recurrence Relations
Assumed Knowledge
Read the section on
Existential and Universal Quantifiers,
Logarithms and Exponentials
g “b Loves(b,g)
“b g Loves(b,g)
Start With Some Math
Input Size
Time
Classifying Functions
f(i) = nQ(n)
Recurrence Relations
T(n) = a T(n/b) + f(n)
Adding Made Easy
∑i=1 f(i).
Time Complexity
t(n) = Q(n2)
Classifying Functions
Giving an idea of how fast a function grows without going into too much detail.
Which are more alike?
Which are more alike?
Mammals
Which are more alike?
Which are more alike?
Dogs
Classifying Animals
Vertebrates
Birds
Mammals
Reptiles
Fish
Dogs
Giraffe
We consider two (of many)
levels in this hierarchy
Class
Genus
Individuals
Classifying Functions
T(n)
10
100
1,000
10,000
log n
3
6
9
13
amoeba
n1/2
3
10
31
100
bird
10
100
1,000
10,000
human
n log n
30
600
9,000
130,000
my father
n2
100
10,000
106
108
elephant
n3
1,000
106
109
1012
dinosaur
2n
1,024
1030
10300
103000
the universe
Note: The universe contains approximately 1050 particles.
n
Which are more alike?
n1000
n2
2n
Which are more alike?
Polynomials
n1000
n2
2n
Which are more alike?
1000n2
3n2
2n3
Polynomials
Which are more alike?
Quadratic
1000n2
3n2
2n3
Polynomials
Classifying Functions?
Functions
Classifying Functions
Functions
Poly Logarithmic
Polynomial
Exponential
Exp
Double Exp
Constant
(log n)5
n5
25n
5
2
n5
25n
2
Others
2n log(n)
Classifying Functions?
Polynomial
Classifying Functions
Polynomial
Linear
Quadratic
Cubic
?
5n2
5n
5n3
5n4
Others
5n3 log7(n)
Classifying Functions
Functions
Poly.
Exp.
8·24n / n100
θ(24n / n100)
8·24n + n3
nθ(1)
2θ(n)
θ(24n)
8·n2
θ(n2)
θ(n3 log(n))
7·n2 + n
We consider two (of many)
levels in this hierarchy
Ignore
Power-constant
Ignore
Mult-constant
Individuals
Logarithmic
log10n = # digits to write n
log2n = # bits to write n
= 3.32 log10n
log(n1000) = 1000 log(n)
Differ only by a multiplicative constant.
Poly Logarithmic
(log n)5 = log5 n
Logarithmic << Polynomial
For sufficiently large n
log1000 n << n0.001
Linear << Quadratic
For sufficiently large n
10000 n << 0.0001 n2
Polynomial << Exponential
For sufficiently large n
n1000 << 20.001 n
Classifying Functions
Functions
Poly Logarithmic
Polynomial
Exponential
Exp
Double Exp
Constant
(log n)5
n5
25n
5
2
n5
25n
2
<<
<<
<<
<<
<<
Which Functions are Constant?
5
1,000,000,000,000
0.0000000000001
-5
0
8 + sin(n)
Yes
Yes
Yes
No
Yes
Yes
Which Functions are “Constant”?
5
1,000,000,000,000
0.0000000000001
-5
0
8 + sin(n)
Yes
Yes
Yes
No
No
Yes
Lie in between
7
9
The running time of the algorithm is a “Constant”
It does not depend significantly
on the size of the input.
Write θ(1).
Which Functions are Quadratic?
n2
… ?
Which Functions are Quadratic?
n2
0.001 n2
1000 n2
Some constant times n2.
Which Functions are Quadratic?
n2
0.001 n2
1000 n2
5n2 + 3000n + 2log n
Which Functions are Quadratic?
n2
0.001 n2
1000 n2
5n2 + 3000n + 2log n
Lie in between
Which Functions are Quadratic?
n2
0.001 n2
1000 n2
5n2 + 3000n + 2log n
Ignore multiplicative constant.
Low-order terms absorbed into constant.
Ignore "small" values of n.
Write θ(n2).
Classifying Functions
Functions
Poly.
Exp.
8·24n / n100
θ(24n / n100)
8·24n + n3
nθ(1)
2θ(n)
θ(24n)
8·n2
θ(n2)
θ(n3 log(n))
7·n2 + n
We consider two (of many)
levels in this hierarchy
Ignore
Mult-constant
Individuals
Ignore
Power-constant
Classifying Functions
Functions
Poly.
Exp.
8·24n / n100
θ(24n / n100)
8·24n + n3
nθ(1)
2θ(n)
θ(24n)
8·n2
θ(n2)
θ(n3 log(n))
7·n2 + n
We consider two (of many)
levels in this hierarchy
Ignore
Mult-constant
Individuals
Ignore
Power-constant
log(n) not absorbed
because not
Mult-constant
Which Functions are Polynomial?
n5
… ?
Which Functions are Polynomial?
nc
n0.0001
n10000
n to some constant power.
Which Functions are Polynomial?
nc
n0.0001
n10000
5n2 + 8n + 2log n
5n2 log n
5n2.5
Which Functions are Polynomial?
nc
n0.0001
n10000
5n2 + 8n + 2log n
5n2 log n
5n2.5
Lie in between
Which Functions are Polynomials?
nc
n0.0001
n10000
5n2 + 8n + 2log n
5n2 log n
5n2.5
Ignore power constant.
Low-order terms and log factors
absorbed into constant.
Write nθ(1)
Classifying Functions
Functions
Poly.
Exp.
8·24n / n100
θ(24n / n100)
8·24n + n3
nθ(1)
2θ(n)
θ(24n)
8·n2
θ(n2)
θ(n3 log(n))
7·n2 + n
We consider two (of many)
levels in this hierarchy
Ignore
Mult-constant
Individuals
Ignore
Power-constant
If f(n) = c ban nd loge (n)
c Î ?
a Î ?
b Î ?
d Î ?
e Î ?
> 0
= 0
or b = 1
> 0
(-¥,¥)
Which Functions are Polynomials?
then f(n) Î nθ(1)
Which Functions are Exponential?
2n
… ?
Which Functions are Exponential?
2n
20.0001 n
210000 n
2 raised to the power of
n times some constant power
Which Functions are Exponential?
2n
20.0001 n
210000 n
8n
2n / n100
2n · n100
too small?
too big?
Which Functions are Exponential?
2n
20.0001 n
210000 n
8n
2n / n100
2n · n100
= 23n
> 20.5n
< 22n
Lie in between
Which Functions are Exponential?
2n
20.0001 n
210000 n
8n
2n / n100
2n · n100
= 23n
> 20.5n
< 22n
20.5n > n100
2n = 20.5n · 20.5n > n100 · 20.5n
2n / n100 > n0.5n
Which Functions are Exponential?
Ignore power constant.
Low-order terms, change in base,
and polynomial factors
absorbed into constant.
Write 2θ(n)
2n
20.0001 n
210000 n
8n
2n / n100
2n · n100
Classifying Functions
Functions
Poly.
Exp.
8·24n / n100
θ(24n / n100)
8·24n + n3
nθ(1)
2θ(n)
θ(24n)
8·n2
θ(n2)
θ(n3 log(n))
7·n2 + n
We consider two (of many)
levels in this hierarchy
Ignore
Mult-constant
Individuals
Ignore
Power-constant
If f(n) = c ban nd loge (n)
c Î ?
a Î ?
b Î ?
d Î ?
e Î ?
then f(n) Î 2θ(n)
> 0
> 0
> 1
(-¥,¥)
(-¥,¥)
Which Functions are Exponential?
Classifying Functions
Functions
Poly Logarithmic
Polynomial
Exponential
Exp
Double Exp
Constant
(log n)θ(1)
nθ(1)
2θ(n)
θ(1)
2
nθ(1)
2θ(n)
2
Ignore
Power-constant
Classifying Functions
Linear
Quadratic
Cubic
?
θ(n2)
θ(n)
θ(n3)
Polynomial
= nθ(1)
θ(n4)
Others
θ(n3 log7(n))
Ignore
Mult-constant
Exponential
2n vs 8n
Should these be classified together?
8n = 4n · 2n >> 1,000,000 · 2n
8n = 2log(8) · n = 23n
No:
8n ¹ Q(2n)
Yes:
8n = 2Q(n)
Ignore Power-constant
Ignore Mult-constant
Classifying Functions
Rank constants in significance.
f(n) = 8·24n / n100 + 5·n3
Tell me the most significant thing about your function
Classifying Functions
f(n) = 8·24n / n100 + 5·n3
f(n) = 9·24n / n100 + 5·n3
vs
additive:
multiplicative:
9/8
24n / n100
Rank constants in significance.
Classifying Functions
f(n) = 8·24n / n100 + 5·n3
f(n) = 8·24n / n100 + 6·n3
vs
≈ 1
n3
Rank constants in significance.
additive:
multiplicative:
Classifying Functions
f(n) = 8·24n / n100 + 5·n3
f(n) = 8·24n / n100 + 5·n4
vs
≈ 1
≈ 5· n4
Rank constants in significance.
additive:
multiplicative:
Classifying Functions
f(n) = 8·24n / n100 + 5·n3
f(n) = 8·25n / n100 + 5·n3
vs
multiplicative:
2n
Rank constants in significance.
Classifying Functions
f(n) = 8·24n / n100 + 5·n3
f(n) = 8·24n / n101 + 5·n3
vs
multiplicative:
n
Rank constants in significance.
Classifying Functions
f(n) = 8·24n / n100 + 5·n3
Rank constants in significance.
1
2
3
1’
4
5
Classifying Functions
f(n) = 8·24n / n100 + 5·n3
Rank constants in significance.
Significant Less significant
Irrelevant
Classifying Functions
f(n) = 8·24n / n100 + 5·n3
Tell me the most significant thing about your function
2θ(n)
23n <
< 24n
f(n)
because
Classifying Functions
f(n) = 8·24n / n100 + 5·n3
Tell me the most significant thing about your function
2θ(n)
24n/nθ(1)
θ(24n/n100)
8·24n / n100 + θ(n3)
8·24n / n100 + nθ(1)
8·24n / n100 + 5·n3
Classifying Functions
Functions
Poly.
Exp.
8·24n / n100 + n3,
θ(24n / n100)
8·24n + n3
nθ(1)
2θ(n)
θ(24n)
Ignore
Mult-constant
Individuals
Ignore
Power-constant
Notations
Theta f(n) = θ(g(n)) f(n) ≈ c g(n)
BigOh f(n) = O(g(n)) f(n) ≤ c g(n)
Omega f(n) = Ω(g(n)) f(n) ≥ c g(n)
Little Oh f(n) = o(g(n)) f(n) << c g(n)
Little Omega f(n) = ω(g(n)) f(n) >> c g(n)
Definition of Theta
f(n) = θ(g(n))
Definition of Theta
f(n) is sandwiched between c1g(n) and c2g(n)
f(n) = θ(g(n))
Definition of Theta
f(n) is sandwiched between c1g(n) and c2g(n)
for some sufficiently small c1 (= 0.0001)
for some sufficiently large c2 (= 1000)
f(n) = θ(g(n))
Definition of Theta
For all sufficiently large n
f(n) = θ(g(n))
Definition of Theta
For all sufficiently large n
For some definition of “sufficiently large”
f(n) = θ(g(n))
Definition of Theta
3n2 + 7n + 8 = θ(n2)
Definition of Theta
3n2 + 7n + 8 = θ(n2)
c1·n2 £ 3n2 + 7n + 8 £ c2·n2
?
?
Definition of Theta
3n2 + 7n + 8 = θ(n2)
3·n2 £ 3n2 + 7n + 8 £ 4·n2
3
4
Definition of Theta
3n2 + 7n + 8 = θ(n2)
3·12 £ 3·12 + 7·1 + 8 £ 4·12
1
False
Definition of Theta
3n2 + 7n + 8 = θ(n2)
3·72 £ 3·72 + 7·7 + 8 £ 4·72
7
False
Definition of Theta
3n2 + 7n + 8 = θ(n2)
3·82 £ 3·82 + 7·8 + 8 £ 4·82
8
True
Definition of Theta
3n2 + 7n + 8 = θ(n2)
3·92 £ 3·92 + 7·9 + 8 £ 4·92
9
True
Definition of Theta
3n2 + 7n + 8 = θ(n2)
3·102 £ 3·102 + 7·10 + 8 £ 4·102
10
True
Definition of Theta
3n2 + 7n + 8 = θ(n2)
3·n2 £ 3n2 + 7n + 8 £ 4·n2
?
Definition of Theta
3n2 + 7n + 8 = θ(n2)
3·n2 £ 3n2 + 7n + 8 £ 4·n2
n ³ 8
8
Definition of Theta
3n2 + 7n + 8 = θ(n2)
3·n2 £ 3n2 + 7n + 8 £ 4·n2
True
n ³ 8
Definition of Theta
3n2 + 7n + 8 = θ(n2)
3·n2 £ 3n2 + 7n + 8 £ 4·n2
7n + 8 £ 1·n2
7 + 8/n £ 1·n
n ³ 8
True
Definition of Theta
3n2 + 7n + 8 = θ(n2)
3·n2 £ 3n2 + 7n + 8 £ 4·n2
3
4
8
n ³ 8
True
Definition of Theta
n2 = θ(n3)
Definition of Theta
n2 = θ(n3)
c1 · n3 £ n2 £ c2 · n3
?
?
Definition of Theta
n2 = θ(n3)
0 · n3 £ n2 £ c2 · n3
0
True, but ?
Definition of Theta
n2 = θ(n3)
0
Constants c1 and c2 must be positive!
False
Definition of Theta
3n2 + 7n + 8 = θ(n)
Definition of Theta
3n2 + 7n + 8 = θ(n)
c1·n £ 3n2 + 7n + 8 £ c2·n
?
?
Definition of Theta
3n2 + 7n + 8 = θ(n)
3·n £ 3n2 + 7n + 8 £ 100·n
3
100
Definition of Theta
3n2 + 7n + 8 = θ(n)
3·n £ 3n2 + 7n + 8 £ 100·n
?
Definition of Theta
3n2 + 7n + 8 = θ(n)
3·100 £ 3·1002 + 7·100 + 8 £ 100·100
100
False
Definition of Theta
3n2 + 7n + 8 = θ(n)
3·n £ 3n2 + 7n + 8 £ 10,000·n
3
10,000
Definition of Theta
3n2 + 7n + 8 = θ(n)
3·10,000 £ 3·10,000 2 + 7·10,000 + 8 £ 10,000·10,000
10,000
False
Definition of Theta
3n2 + 7n + 8 = θ(n)
What is the
reverse statement?
Understand Quantifiers!!!
Sam Mary
Bob Beth
John Marilyn Monroe
Fred Ann
Sam Mary
Bob Beth
John Marilyn Monroe
Fred Ann
$ b, ØLoves(b, MM)
” b, Loves(b, MM)
Ø[$ b, ØLoves(b, MM)]
Ø[” b, Loves(b, MM)]
Definition of Theta
3n2 + 7n + 8 = θ(n)
The reverse statement
Definition of Theta
3n2 + 7n + 8 = θ(n)
3n2 + 7n + 8 > 100·n
3
100
?
Definition of Theta
3n2 + 7n + 8 = θ(n)
3·1002 + 7·100 + 8 > 100·100
3
100
True
100
Definition of Theta
3n2 + 7n + 8 = θ(n)
3n2 + 7n + 8 > 10,000·n
3
10,000
?
Definition of Theta
3n2 + 7n + 8 = θ(n)
3·10,0002 + 7·10,000 + 8 > 10,000·10,000
3
10,000
True
10,000
Definition of Theta
3n2 + 7n + 8 = θ(n)
3n2 + 7n + 8 > c2·n
c1
c2
?
Definition of Theta
3n2 + 7n + 8 = θ(n)
3·c22 + 7 · c2 + 8 > c2·c2
c1
c2
True
c2
Definition of Theta
3n2 + 7n + 8 = θ(n)
3n2 + 7n + 8 > c2·n
c1
c2
?
n0
Definition of Theta
3n2 + 7n + 8 = θ(n)
3·c22 + 7 · c2 + 8 > c2·c2
c1
max(c2,n0 )
True
c2
n0
True
Definition of Theta
3n2 + 7n + 8 = g(n)θ(1)
$ c1, c2, n0, ” n ³ n0 g(n)c1 £ f(n) £ g(n)c2
3n2 + 7n + 8 = nθ(1)
Definition of Theta
3n2 + 7n + 8 = nθ(1)
nc1 £ 3n2 + 7n + 8 £ nc2
$ c1, c2, n0, ” n ³ n0 g(n)c1 £ f(n) £ g(n)c2
?
?
Definition of Theta
3n2 + 7n + 8 = nθ(1)
n2 £ 3n2 + 7n + 8 £ n3
$ c1, c2, n0, ” n ³ n0 g(n)c1 £ f(n) £ g(n)c2
2
3
Definition of Theta
3n2 + 7n + 8 = nθ(1)
n2 £ 3n2 + 7n + 8 £ n3
$ c1, c2, n0, ” n ³ n0 g(n)c1 £ f(n) £ g(n)c2
2
3
?
n ³ ?
Definition of Theta
3n2 + 7n + 8 = nθ(1)
n2 £ 3n2 + 7n + 8 £ n3
$ c1, c2, n0, ” n ³ n0 g(n)c1 £ f(n) £ g(n)c2
2
3
5
n ³ 5
Definition of Theta
3n2 + 7n + 8 = nθ(1)
n2 £ 3n2 + 7n + 8 £ n3
True
True
$ c1, c2, n0, ” n ³ n0 g(n)c1 £ f(n) £ g(n)c2
2
3
5
n ³ 5
Order of Quantifiers
f(n) = θ(g(n))
?
Understand Quantifiers!!!
One girl
Could be a separate girl for each boy.
Sam Mary
Bob Beth
John Marilyn Monroe
Fred Ann
Sam Mary
Bob Beth
John Marilyn Monroe
Fred Ann
Order of Quantifiers
No! It cannot be a different c1 and c2
for each n.
f(n) = θ(g(n))
Other Notations
Theta f(n) = θ(g(n)) f(n) ≈ c g(n)
BigOh f(n) = O(g(n)) f(n) ≤ c g(n)
Omega f(n) = Ω(g(n)) f(n) ≥ c g(n)
Little Oh f(n) = o(g(n)) f(n) << c g(n)
Little Omega f(n) = ω(g(n)) f(n) >> c g(n)
BigOh Notation
n2 = O(n3)
n3 = O(n2)
BigOh Notation
O(n2) = O(n3)
O(n3) = O(n2)
Odd Notation
f(n) = O(g(n)) Standard
f(n) ≤ O(g(n)) Stresses one function dominating another.
f(n)ÎO(g(n)) Stress function is member of class.
Adding
The Classic Techniques
Evaluating ∑i=1 f(i).
n
Gauss
∑i=1..n i = 1 + 2 + 3 + . . . + n
= ?
Arithmetic Sum
1 + 2 + 3 + . . . + n-1 + n = S
n + n-1 + n-2 + . . . + 2 + 1 = S
(n+1) + (n+1) + (n+1) + . . . + (n+1) + (n+1) = 2S
n (n+1) = 2S
1 + 2 + 3 + . . . + n-1 + n = S
n + n-1 + n-2 + . . . + 2 + 1 = S
(n+1) + (n+1) + (n+1) + . . . + (n+1) + (n+1) = 2S
n (n+1) = 2S
1 + 2 + 3 + . . . + n-1 + n = S
n + n-1 + n-2 + . . . + 2 + 1 = S
(n+1) + (n+1) + (n+1) + . . . + (n+1) + (n+1) = 2S
n (n+1) = 2S
1 + 2 + 3 + . . . + n-1 + n = S
n + n-1 + n-2 + . . . + 2 + 1 = S
(n+1) + (n+1) + (n+1) + . . . + (n+1) + (n+1) = 2S
n (n+1) = 2S
Let’s restate this argument using a geometric representation
Algebraic argument
1 2 . . . . . . . . n
= number of white dots.
1 2 . . . . . . . . n
= number of white dots
= number of yellow dots
n . . . . . . . 2 1
n+1 n+1 n+1 n+1 n+1
= number of white dots
= number of yellow dots
n
n
n
n
n
n
There are n(n+1) dots in the grid
n+1 n+1 n+1 n+1 n+1
= number of white dots
= number of yellow dots
n
n
n
n
n
n
Note = Q(# of terms · last term))
Gauss
∑i=1..n i = 1 + 2 + 3 + . . . + n
= Q(# of terms · last term)
Arithmetic Sum
True when ever terms increase slowly
∑i=0..n 2i = 1 + 2 + 4 + 8 +. . . + 2n
= ?
Geometric Sum
Geometric Sum
∑i=0..n 2i = 1 + 2 + 4 + 8 +. . . + 2n
= 2 · last term – 1
Geometric Sum
∑i=0..n ri = r0 + r1 + r2 +. . . + rn
= ?
Geometric Sum
S
Sr
r
r
r
.
.
.
r
r
S
Sr
1
r
S
r
1
r
1
2
3
n
n
1
n
1
n
1
=
1
r
r
r
.
.
.
2
3
r
n
+
+
+
+
+
=
+
+
+
+
+
–
=
–
=
–
–
+
+
+
Geometric Sum
∑i=0..n ri
r
1
r
1
n
1
=
–
–
+
Geometric Sum
When r>1?
∑i=0..n ri
r
1
r
1
n
1
=
–
–
+
Geometric Sum
= θ(rn)
Biggest Term
When r>1
∑i=0..n ri = r0 + r1 + r2 +. . . + rn
= Q(biggest term)
Geometric Increasing
True when ever terms increase quickly
∑i=0..n ri
=
Geometric Sum
When r<1?
1 r
1 r
n
1
+
-
-
∑i=0..n ri
=
Geometric Sum
1 r
1 r
n
1
+
-
-
= θ(1)
When r<1
Biggest Term
∑i=0..n ri = r0 + r1 + r2 +. . . + rn
= Q(1)
Bounded Tail
True when ever terms decrease quickly
∑i=1..n 1/i
= 1/1 + 1/2 + 1/3 + 1/4 + 1/5 + …+ 1/n
= ?
Harmonic Sum
f(i) = 1
∑i=1..n f(i) = n
n
Sum of Shrinking Function
f(i) = ?
∑i=1..n f(i) = n1/2
n
Sum of Shrinking Function
f(i) = 1/2i
∑i=1..n f(i) = 2
¥
Sum of Shrinking Function
f(i) = 1/i
∑i=1..n f(i) = ?
n
Sum of Shrinking Function
Harmonic Sum
∑i=1..n 1/i
= 1/1 + 1/2 + 1/3 + 1/4 + 1/5 + …+ 1/n
= Q(log(n))
Harmonic Sum
Approximating Sum
by Integrating
The area under the curve
approximates the sum
∑i=1..n f(i) ≈ ∫x=1..n f(x) dx
Approximating Sum
by Integrating
1/c+1 xc+1
d
d
x
= xc
∫x=1..n xc dx
= 1/c+1 nc+1
∑i=1..n ic ≈
Arithmetic Sums
= θ(# of terms · last term)
True when ever terms increase slowly
= θ(n·nc)
Approximating Sum
by Integrating
1/ln(b) eln(b)x
d
d
x
= eln(b)x = bx
∫x=1..n bx dx
= 1/ln(b) bx
∑i=1..n bi ≈
Geometric Sums
= θ(last term)
True when ever terms increase quickly
= θ(bn)
Harmonic Sum
Approximating Sum
by Integrating
Approximating Sum
by Integrating
Problem: Integrating may be hard too.
Outline
II) Math proofs of sums
V) Ability to know the answer fast
I) What is the sum
Eg. ∑i=1..n f(i) = ∑i=1..n 1/i0.9999 =θ(n0.0001)
III) Pattern of sums
∑i=1..n f(i) = θ(n · f(n))
IV) Intuition why this is the sum
I flash it up
If you follow great.
If not don’t panic.
Adding Made Easy
We will now classify (most) functions f(i)
into four classes:
Geometric Like
Arithmetic Like
Harmonic
Bounded Tail
Adding Made Easy
We will now classify (most) functions f(i)
into four classes
For each class, we will give
an easy rule for approximating
it’s sum
θ( ∑i=1..n f(i) )
Classifying Animals
Vertebrates
Birds
Mammals
Reptiles
Fish
Dogs
Giraffe
Mammal Þ Complex social
networks
Dog Þ Man’s best friend
Classifying Functions
Functions
Poly.
Exp.
2θ(n) Þ ∑i=1..n f(i) = θ(f(n))
8·2n / n100 + n3,
θ(2n / n100)
8·2n + n3
nθ(1)
2θ(n)
θ(2n)
f(n) = 8·2n / n100 + n3
θ(2n / n100)
Þ ∑i=1..n f(i) = θ(2n / n100)
20.5n <
< 2n
8· 2n / n100 + n3
Significant Less significant
Irrelevant
Adding Made Easy
1
1
1
2
3
4
Four Classes of Functions
Adding Made Easy
If the terms f(i) grow sufficiently quickly, then the sum will be dominated by the largest term.
Silly example:
1+2+3+4+5+ 1,000,000,000 ≈ 1,000,000,000
f(i) ³ 2Ω(n) Þ ∑i=1..n f(i) = θ(f(n))
Geometric Like:
If the terms f(i) grow sufficiently quickly, then the sum will be dominated by the largest term.
Classic example:
?
f(i) ³ 2Ω(n) Þ ∑i=1..n f(i) = θ(f(n))
Geometric Like:
If the terms f(i) grow sufficiently quickly, then the sum will be dominated by the largest term.
Classic example:
∑i=1..n 2i = 2n+1-1 ≈ 2 f(n)
f(i) ³ 2Ω(n) Þ ∑i=1..n f(i) = θ(f(n))
Geometric Like:
If the terms f(i) grow sufficiently quickly, then the sum will be dominated by the largest term.
For which functions f(i) is this true?
How fast and how slow can it grow?
f(i) ³ 2Ω(n) Þ ∑i=1..n f(i) = θ(f(n))
Geometric Like:
r
1
r
1
n
1
=
-
-
+
= θ( )
r
n
Last Term
when r>1.
∑i=1..n ri
1
r
r
r
.
.
.
2
3
r
n
+
+
+
+
+
=
= θ(f(n))
∑i=1..n (1.0001)i ≈ 10,000 (1.0001)n
= 10,000 f(n)
Lower Extreme:
Upper Extreme:
∑i=1..n (1000)i ≈ 1.001(1000)n
= 1.001 f(n)
Recall, when f(n) = ri = 2θ(n)
f(i) ³ 2Ω(n) Þ ∑i=1..n f(i) = θ(f(n))
Geometric Like:
Because the constant is sooo big, the statement is just barely true.
∑i=1..n (1.0001)i ≈ 10,000 (1.0001)n
= 10,000 f(n)
Lower Extreme:
Upper Extreme:
∑i=1..n (1000)i ≈ 1.001(1000)n
= 1.001 f(n)
f(i) ³ 2Ω(n) Þ ∑i=1..n f(i) = θ(f(n))
Geometric Like:
∑i=1..n (1.0001)i ≈ 10,000 (1.0001)n
= 10,000 f(n)
Lower Extreme:
Upper Extreme:
∑i=1..n (1000)i ≈ 1.001(1000)n
= 1.001 f(n)
Even bigger?
f(i) ³ 2Ω(n) Þ ∑i=1..n f(i) = θ(f(n))
Geometric Like:
2n
2i
∑i=1..n 22 ≈ 22 = 1f(n)
No Upper Extreme:
Even bigger?
∑i=1..n (1.0001)i ≈ 10,000 (1.0001)n
= 10,000 f(n)
Lower Extreme:
f(i) ³ 2Ω(n) Þ ∑i=1..n f(i) = θ(f(n))
Geometric Like:
2n
2i
∑i=1..n 22 ≈ 22 = 1f(n)
No Upper Extreme:
Functions in between?
∑i=1..n (1.0001)i ≈ 10,000 (1.0001)n
= 10,000 f(n)
Lower Extreme:
f(i) ³ 2Ω(n) Þ ∑i=1..n f(i) = θ(f(n))
Geometric Like:
∑i=1..n 2i
= 2·2n –2
= 21 + 22 + 23 + 24 +…+ 2n
8·[ ]
8·
8·
8·
8·
8·
8·
= θ( 2n )
1100
2100
3100
4100
n100
i100
n100
+ i3
+ 13
+ 23
+ 33
+ 43
+ n3
+ n4
Dominated by the largest term.
= θ(f(n))
f(n) = 2n
8·
n100
+ n3
= θ( 2n )
n100
f(i) ³ 2Ω(n) Þ ∑i=1..n f(i) = θ(f(n))
Geometric Like:
n100
≈
f(i) ³ 2Ω(n) Þ ∑i=1..n f(i) = θ(f(n))
Geometric Like:
f(n) = 2n
8·
n100
∑i=1..n f(i)
f(n) £
£ c·f(n)
f(i) £ ?·f(n)
f(i) £ ?·f(i+1)
Easy
Hard
³
(1+1/i)100
1
2
1.9
=
8·2(i+1)
(i+1)100
f(i+1)
f(i)
8·2i
i100
=
³ 1/.51
£ .51·f(i+1)
f(i)
(i+1)100
i100
2
=
f(i) ³ 2Ω(n) Þ ∑i=1..n f(i) = θ(f(n))
Geometric Like:
f(n) = 2n
8·
n100
∑i=1..n f(i)
f(n) £
£ c·f(n)
f(i) £ ?·f(n)
£ .512·f(i+2)
£ .51·f(i+1)
f(i)
£ .51·f(i+1)
f(i)
£ .513·f(i+3)
… £ .51(n-i)·f(i+(n-i))
= .51(n-i)·f(n)
f(i) £ .51(n-i)·f(n)
Eg. i = n, f(n) £ .51(n-n)·f(n) = 1·f(n)
i = 0, f(0) £ .51n·f(n)
f(i) ³ 2Ω(n) Þ ∑i=1..n f(i) = θ(f(n))
Geometric Like:
f(n) = 2n
8·
n100
∑i=1..n f(i)
f(n) £
£ c·f(n)
∑i=1..n f(i) £ ∑i=1..n .51(n-i)·f(n)
= θ(1) · f(n)
f(i) £ ?·f(n)
£ .51·f(i+1)
f(i)
f(i) £ .51(n-i)·f(n)
= [∑i=1..n .51(n-i)] · f(n)
Functions
Poly.
Exp.
2θ(n) Þ ∑i=1..n f(i) = θ(f(n))
8·2n / n100 + n3
θ(2n / n100)
8·2n + n3
nθ(1)
2θ(n)
θ(2n)
f(n) = 8·2n / n100 + n3
θ(2n / n100)
Þ ∑i=1..n f(i) = θ(2n / n100)
f(i) ³ 2Ω(n) Þ ∑i=1..n f(i) = θ(f(n))
Geometric Like:
If f(n) = c ban nd loge (n)
c Î ?
a Î ?
b Î ?
d Î ?
e Î ?
f(n) = Ω, θ ?
then ∑i=1..n f(i) = θ(f(n)).
³ 2Ω(n)
> 0
> 0
> 1
(-¥,¥)
(-¥,¥)
f(i) ³ 2Ω(n) Þ ∑i=1..n f(i) = θ(f(n))
Geometric Like:
f(i) ³ 2Ω(n) Þ ∑i=1..n f(i) = θ(f(n))
Geometric Like:
All functions in 2Ω(n)?
Maybe not.
f(i) ³ 2Ω(n) Þ ∑i=1..n f(i) = θ(f(n))
Geometric Like:
Functions that oscillate continually
do not have the property.
f(i) ³ 2Ω(n) Þ ∑i=1..n f(i) = θ(f(n))
Geometric Like:
Functions expressed with +, -, ×, , exp, log
do not oscillate continually.
They are well behaved for sufficiently large n.
These do have the property.
f(i) ³ 2Ω(n) Þ ∑i=1..n f(i) = θ(f(n))
Geometric Like:
Adding Made Easy
Done
Adding Made Easy
If most of the terms f(i) have roughly the same value, then the sum is roughly the number of terms, n, times this value.
Silly example:
1,001 + 1,002 + 1,003 + 1,004 + 1,005
≈ 5 · 1,000
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
If most of the terms f(i) have roughly the same value, then the sum is roughly the number of terms, n, times this value.
Another silly example:
∑i=1..n 1 = n · 1
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
If most of the terms f(i) have roughly the same value, then the sum is roughly the number of terms, n, times this value.
Is the statement true for this function?
∑i=1..n i = 1 + 2 + 3 + . . . + n
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
If most of the terms f(i) have roughly the same value, then the sum is roughly the number of terms, n, times this value.
Is the statement true for this function?
∑i=1..n i = 1 + 2 + 3 + . . . + n
The terms are not roughly the same.
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
But half the terms are roughly the same.
∑i=1..n i =
1 + . . . + n/2 + . . . + n
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
But half the terms are roughly the same
and the sum is roughly the number
terms, n, times this value
∑i=1..n i =
1 + . . . + n/2 + . . . + n
∑i=1..n i = θ(n · n)
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
Is the statement true for this function?
∑i=1..n i2 = 12 + 22 + 32 + . . . + n2
Even though, the terms
are not roughly the same.
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
Again half the terms
are roughly the same.
∑i=1..n i =
12 + . . . + (n/2)2 + . . . + n2
1/4 n2
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
Again half the terms
are roughly the same.
∑i=1..n i =
12 + . . . + (n/2)2 + . . . + n2
1/4 n2
∑i=1..n i2 = θ(n · n2)
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
∑i=1..n f(i)
≈ area under curve
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
area of small square
£ ∑i=1..n f(i)
≈ area under curve
£ area of big square
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
n/2 · f(n/2)
= area of small square
£ ∑i=1..n f(i)
≈ area under curve
£ area of big square
= n · f(n)
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
θ(n · f(n))
= n/2 · f(n/2)
= area of small square
£ ∑i=1..n f(i)
≈ area under curve
£ area of big square
= n · f(n)
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
θ(n · f(n))
= n/2 · f(n/2)
= area of small square
£ ∑i=1..n f(i)
≈ area under curve
£ area of big square
= n · f(n)
?
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
∑i=1..n i2 = 12 + 22 + 32 + . . . + n2
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
f(i) = n2
f(n/2) = θ(f(n))
The key property is
= ?
The key property is
f(n/2) = (n/2)2 = 1/4 n2 = θ(n2) = θ(f(n))
∑i=1..n i2 = 12 + 22 + 32 + . . . + n2
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
f(i) = n2
Þ = θ(n·f(n)) = θ(n · n2)
∑i=1..n f(i) = ?
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
f(i) = nθ(1)
∑i=1..n ir = 1r + 2r + 3r + . . . + nr
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
f(i) = nθ(1)
f(n/2) = θ(f(n))
The key property is
The key property is
f(n/2) = (n/2)r = 1/2r nr = θ(nr) = θ(f(n))
∑i=1..n ir = 1r + 2r + 3r + . . . + nr
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
Þ = θ(n·f(n)) = θ(n · nr)
f(i) = nθ(1)
∑i=1..n 2i = 21 + 22 + 23 + . . . + 2n
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
f(i) = nθ(1)
f(n/2) = θ(f(n))
The key property is
The key property is
∑i=1..n 2i = 21 + 22 + 23 + . . . + 2n
f(n/2) = 2(n/2) = θ(2n) = θ(f(n))
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
f(i) = nθ(1)
Þ = θ(n·f(n)) = θ(n · 2n)
∑i=1..n 1 = n · 1
= n · f(n)
Middle Extreme:
Upper Extreme:
∑i=1..n i1000 = 1/1001 n1001
= 1/1001 n · f(n)
All functions
in between.
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
Adding Made Easy
Half done
f(i) = 1
∑i=1..n f(i) = n
n
Sum of Shrinking Function
f(i) = ?
∑i=1..n f(i) = n1/2
n
Sum of Shrinking Function
1/i1/2
f(i) = 1/i
∑i=1..n f(i) = log n
n
Sum of Shrinking Function
f(i) = 1/2i
∑i=1..n f(i) = 2
Sum of Shrinking Function
¥
If most of the terms f(i) have roughly the same value, then the sum is roughly the number of terms, n, times this value.
Does the statement hold
for functions f(i) that shrink?
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
If most of the terms f(i) have roughly the same value, then the sum is roughly the number of terms, n, times this value.
∑i=1..n 1/i = 1/1 + 1/2 + 1/3 + 1/4 + 1/5 + … + 1/n
Does the statement hold
for the Harmonic Sum?
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
Does the statement hold
for the Harmonic Sum?
∑i=1..n 1/i = 1/1 + 1/2 + 1/3 + 1/4 + 1/5 + … + 1/n
∑i=1..n f(i) = ?
θ(n · f(n))
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
Does the statement hold
for the Harmonic Sum?
∑i=1..n 1/i = 1/1 + 1/2 + 1/3 + 1/4 + 1/5 + … + 1/n
∑i=1..n f(i)
θ(n · f(n))
= ∑i=1..n 1/i = ?
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
Does the statement hold
for the Harmonic Sum?
∑i=1..n 1/i = 1/1 + 1/2 + 1/3 + 1/4 + 1/5 + … + 1/n
∑i=1..n f(i)
θ(n · f(n))
= ∑i=1..n 1/i =
θ(log n)
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
Does the statement hold
for the Harmonic Sum?
∑i=1..n 1/i = 1/1 + 1/2 + 1/3 + 1/4 + 1/5 + … + 1/n
∑i=1..n f(i)
= θ(n · f(n))
= ∑i=1..n 1/i =
θ(log n)
?
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
Does the statement hold
for the Harmonic Sum?
∑i=1..n 1/i = 1/1 + 1/2 + 1/3 + 1/4 + 1/5 + … + 1/n
∑i=1..n f(i)
= θ(n · f(n))
= ∑i=1..n 1/i =
θ(log n)
θ(1) = θ(n · 1/n)
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
Does the statement hold
for the Harmonic Sum?
∑i=1..n 1/i = 1/1 + 1/2 + 1/3 + 1/4 + 1/5 + … + 1/n
∑i=1..n f(i)
= θ(n · f(n))
= ∑i=1..n 1/i =
θ(log n)
θ(1) = θ(n · 1/n)
≠
No the statement does not hold!
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
Adding Made Easy
not included
Does the statement hold
for the almost Harmonic Sum?
∑i=1..n 1/i0.9999
Shrinks slightly slower
than harmonic.
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
Does the statement hold
for the almost Harmonic Sum?
∑i=1..n 1/i0.9999
∑i=1..n f(i)
= θ(n · f(n))
= ∑i=1..n 1/i0.9999 =
?
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
Does the statement hold
for the almost Harmonic Sum?
∑i=1..n 1/i0.9999
∑i=1..n f(i)
= θ(n · f(n))
= ∑i=1..n 1/i0.9999 =
θ(n0.0001)
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
Does the statement hold
for the almost Harmonic Sum?
∑i=1..n 1/i0.9999
∑i=1..n f(i)
= θ(n · f(n))
= ∑i=1..n 1/i0.9999 =
θ(n0.0001)
?
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
Does the statement hold
for the almost Harmonic Sum?
∑i=1..n 1/i0.9999
∑i=1..n f(i)
= θ(n · f(n))
= ∑i=1..n 1/i0.9999 =
θ(n0.0001)
θ(n0.0001) = θ(n · 1/n0.9999)
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
Does the statement hold
for the almost Harmonic Sum?
∑i=1..n 1/i0.9999
∑i=1..n f(i)
= θ(n · f(n))
= ∑i=1..n 1/i0.9999 =
θ(n0.0001)
θ(n0.0001) = θ(n · 1/n0.9999)
=
The statement does hold!
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
∑i=1..n 1 = n · 1
= n · f(n)
Middle Extreme:
Lower Extreme:
∑i=1..n 1/i0.9999 = θ(n0.0001)
= θ(n · f(n))
All functions
in between.
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
∑i=1..n 1 = n · 1
= n · f(n)
Middle Extreme:
Lower Extreme:
∑i=1..n 1/i0.9999 = θ(n0.0001)
= θ(n · f(n))
Upper Extreme:
∑i=1..n i1000 = 1/1001 n1001
= 1/1001 n · f(n)
f(i) = nθ(1)-1 Þ ∑i=1..n f(i) = θ(n·f(n))
Arithmetic Like:
Arithmetic Like
If f(n) = c ban nd loge (n)
c Î ?
a Î ?
b Î ?
d Î ?
e Î ?
f(n) = Ω, θ ?
then ∑i=1..n f(i) = θ(n · f(n)).
n-1+θ(1)
> 0
= 0
or b = 1
> -1
(-¥,¥)
(For +, -, ×, , exp, log functions f(n))
Conclusion
Adding Made Easy
Done
Adding Made Easy
Harmonic
Harmonic Sum
∑i=1..n 1/i
= 1/1 + 1/2 + 1/3 + 1/4 + 1/5 + …+ 1/n
= Q(log(n))
Adding Made Easy
If the terms f(i) decrease towards zero
sufficiently quickly,
then the sum will be a constant.
The classic example
∑i=0..n 1/2i = 1 + 1/2 + 1/4 + 1/8 + … = 2.
f(n) £ n-1-Ω(1) Þ ∑i=1..n f(i) = θ(1)
Bounded Tail:
If f(i) decays even faster, then the tail of the sum is more bounded.
2i
∑i=1..n 22 = θ(1).
1
f(n) £ n-1-Ω(1) Þ ∑i=1..n f(i) = θ(1)
Bounded Tail:
Upper Extreme:
∑i=1..n 1/i1.0001 = θ(1)
f(n) £ n-1-Ω(1) Þ ∑i=1..n f(i) = θ(1)
Bounded Tail:
Upper Extreme:
∑i=1..n 1/i1.0001 = θ(1)
No Lower Extreme:
2i
∑i=1..n 22 = θ(1).
1
All functions
in between.
f(n) £ n-1-Ω(1) Þ ∑i=1..n f(i) = θ(1)
Bounded Tail:
Bounded Tail
If f(n) = c ban nd loge (n)
c Î ?
a Î ?
b Î ?
d Î ?
e Î ?
f(n) = Ω, θ ?
then ∑i=1..n f(i) = θ(1).
> 0
< 0
(-¥,¥)
(-¥,¥)
Conclusion
or b < 1
c nd loge (n)
c > 0
a > 0
b > 1
ban
Bounded Tail
If f(n) = c nd loge (n)
c Î ?
a = 0
b = 1
d Î ?
e Î ?
f(n) = Ω, θ ?
then ∑i=1..n f(i) = θ(1).
= n-1-Ω(1)
> 0
< -1
(-¥,¥)
Conclusion
Adding Made Easy
Done
Adding Made Easy
Missing Functions
1/nlogn
logn/n
Adding Made Easy
Geometric Like: If f(n) ³ 2Ω(n), then ∑i=1..n f(i) = θ(f(n)).
Arithmetic Like: If f(n) = nθ(1)-1, then ∑i=1..n f(i) = θ(n · f(n)).
Harmonic: If f(n) = 1/n , then ∑i=1..n f(i) = logen + θ(1).
Bounded Tail: If f(n) £ n-1-Ω(1), then ∑i=1..n f(i) = θ(1).
(For +, -, ×, , exp, log functions f(n))
This may seem confusing, but it is really not.
It should help you compute most sums easily.
Recurrence Relations
T(1) = 1
T(n) = a T(n/b) + f(n)
Recurrence Relations
» Time of Recursive Program
Recurrence relations
arise from the timing
of recursive programs.
Let T(n) be the # of “Hi”s
on an input of “size” n.
procedure Eg(In)
n = |In|
if(n£1) then
put “Hi”
else
loop i=1..f(n)
put “Hi”
loop i=1..a
In/b = In cut in b pieces
Eg(In/b)
?
Given size 1,
the program outputs
T(1)=1 Hi’s.
Recurrence Relations
» Time of Recursive Program
procedure Eg(In)
n = |In|
if(n£1) then
put “Hi”
else
loop i=1..f(n)
put “Hi”
loop i=1..a
In/b = In cut in b pieces
Eg(In/b)
Given size n,
the stackframe outputs
f(n) Hi’s.
Recurrence Relations
» Time of Recursive Program
procedure Eg(In)
n = |In|
if(n£1) then
put “Hi”
else
loop i=1..f(n)
put “Hi”
loop i=1..a
In/b = In cut in b pieces
Eg(In/b)
Recursing
on an instances of size n/b
generates T(n/b) “Hi”s.
Recurrence Relations
» Time of Recursive Program
procedure Eg(In)
n = |In|
if(n£1) then
put “Hi”
else
loop i=1..f(n)
put “Hi”
loop i=1..a
In/b = In cut in b pieces
Eg(In/b)
Recursing
a times
generates a·T(n/b) “Hi”s.
Recurrence Relations
» Time of Recursive Program
procedure Eg(In)
n = |In|
if(n£1) then
put “Hi”
else
loop i=1..f(n)
put “Hi”
loop i=1..a
In/b = In cut in b pieces
Eg(In/b)
For a total of
T(1) = 1
T(n) = a·T(n/b) + f(n)
“Hi”s.
Recurrence Relations
» Time of Recursive Program
procedure Eg(In)
n = |In|
if(n£1) then
put “Hi”
else
loop i=1..f(n)
put “Hi”
loop i=1..a
In/b = In cut in b pieces
Eg(In/b)
Solving Technique 1
Guess and Verify
Recurrence Relation:
T(1) = 1 & T(n) = 4T(n/2) + n
Guess: G(n) = 2n2 – n
Verify:
Left Hand Side Right Hand Side
T(1) = 2(1)2 – 1
T(n)
= 2n2 – n
1
4T(n/2) + n
= 4 [2(n/2)2 – (n/2)] + n
= 2n2 – n
Recurrence Relation:
T(1) = 1 & T(n) = 4T(n/2) + n
Guess: G(n) = an2 + bn + c
Verify:
Left Hand Side Right Hand Side
T(1) = a+b+c
T(n)
= an2 +bn+c
1
4T(n/2) + n
= 4 [a (n/2)2 + b (n/2) +c] + n
= an2 +(2b+1)n + 4c
Solving Technique 2
Guess Form and Calculate Coefficients
Recurrence Relation:
T(1) = 1 & T(n) = 4T(n/2) + n
Guess: G(n) = an2 + bn + 0
Verify:
Left Hand Side Right Hand Side
T(1) = a+b+c
T(n)
= an2 +bn+c
1
4T(n/2) + n
= 4 [a (n/2)2 + b (n/2) +c] + n
= an2 +(2b+1)n + 4c
Solving Technique 2
Guess Form and Calculate Coefficients
c=4c
c=0
Recurrence Relation:
T(1) = 1 & T(n) = 4T(n/2) + n
Guess: G(n) = an2 - 1n + 0
Verify:
Left Hand Side Right Hand Side
T(1) = a+b+c
T(n)
= an2 +bn+c
1
4T(n/2) + n
= 4 [a (n/2)2 + b (n/2) +c] + n
= an2 +(2b+1)n + 4c
Solving Technique 2
Guess Form and Calculate Coefficients
b=2b+1
b=-1
Recurrence Relation:
T(1) = 1 & T(n) = 4T(n/2) + n
Guess: G(n) = an2 - 1n + 0
Verify:
Left Hand Side Right Hand Side
T(1) = a+b+c
T(n)
= an2 +bn+c
1
4T(n/2) + n
= 4 [a (n/2)2 + b (n/2) +c] + n
= an2 +(2b+1)n + 4c
Solving Technique 2
Guess Form and Calculate Coefficients
a=a
Recurrence Relation:
T(1) = 1 & T(n) = 4T(n/2) + n
Guess: G(n) = 2n2 - 1n + 0
Verify:
Left Hand Side Right Hand Side
T(1) = a+b+c
T(n)
= an2 +bn+c
1
4T(n/2) + n
= 4 [a (n/2)2 + b (n/2) +c] + n
= an2 +(2b+1)n + 4c
Solving Technique 2
Guess Form and Calculate Coefficients
a+b+c=1
a-1+0=1
a=2
Recurrence Relation:
T(1) = 1 & T(n) = aT(n/b) + f(n)
Solving Technique 3
Approximate Form and
Calculate Exponent
which is bigger?
Guess
Recurrence Relation:
T(1) = 1 & T(n) = aT(n/b) + f(n)
Guess: aT(n/b) << f(n)
Simplify: T(n) » f(n)
Solving Technique 3
Calculate Exponent
In this case, the answer is easy. T(n) = Q(f(n))
Recurrence Relation:
T(1) = 1 & T(n) = aT(n/b) + f(n)
Guess: aT(n/b) >> f(n)
Simplify: T(n) » aT(n/b)
Solving Technique 3
Calculate Exponent
In this case, the answer is harder.
Recurrence Relation:
T(1) = 1 & T(n) = aT(n/b)
Guess: G(n) = cna
Verify:
Left Hand Side Right Hand Side
T(n)
= cna aT(n/b)
= a [c (n/b) a ]
= c a b-a na
Solving Technique 3
Calculate Exponent
(log a/log b)
= cn
1 = a b-a
ba = a
a log b = log a
a = log a/log b
Recurrence Relation:
T(1) = 1 & T(n) = 4T(n/2)
Guess: G(n) = cna
Verify:
Left Hand Side Right Hand Side
T(n)
= cna aT(n/b) + f(n)
= c [a (n/b) a ]
= c a b-a na
Solving Technique 3
Calculate Exponent
1 = a b-a
ba = a
a log b = log a
a = log a/log b
(log a/log b)
= cn
(log 4/log 2)
= cn
2
= cn
Logs
log 27
log 9
=
Logs
log? 27
log? 9
=
Which base?
Logs
log2 27
log2 9
=
It does not matter.
log2 c
log2 c
· logc 27
· logc 9
=
logc 27
logc 9
Which is easiest?
Logs
log3 27
log3 9
=
log3 33
log3 32
=
3
2
Please no calculators in exams.
And I wont ask
log 25
log 9
Recurrence Relation:
Solving Technique 3
Calculate Exponent
If bigger then
T(n) = Q(f(n))
If bigger then
(log a/log b)
T(n) = Q(n )
And if aT(n/b) » f(n)
what is T(n) then?
T(1) = 1 & T(n) = aT(n/b) + f(n)
4: Decorate The Tree
T(n) = a T(n/b) + f(n)
T(1) = 1 & T(n) = aT(n/b) + f(n)
f(n)
T(n/b)
T(n/b)
T(n/b)
T(n/b)
T(n)
=
T(1)
T(1) = 1
1
=
a
f(n)
T(n/b)
T(n/b)
T(n/b)
T(n/b)
T(n)
=
a
f(n)
T(n/b)
T(n/b)
T(n/b)
T(n)
=
a
f(n/b)
T(n/b2)
T(n/b2)
T(n/ b2)
T(n/ b2)
a
f(n)
T(n)
=
a
f(n/b)
T(n/b2)
T(n/b2)
T(n/ b2)
T(n/ b2)
a
f(n/b)
T(n/b2)
T(n/b2)
T(n/ b2)
T(n/ b2)
a
f(n/b)
T(n/b2)
T(n/b2)
T(n/ b2)
T(n/ b2)
a
f(n/b)
T(n/b2)
T(n/b2)
T(n/ b2)
T(n/ b2)
a
11111111111111111111111111111111 . . . . . . 111111111111111111111111111111111
f(n)
T(n)
=
a
f(n/b)
T(n/b2)
T(n/b2)
T(n/ b2)
T(n/ b2)
a
f(n/b)
T(n/b2)
T(n/b2)
T(n/ b2)
T(n/ b2)
a
f(n/b)
T(n/b2)
T(n/b2)
T(n/ b2)
T(n/ b2)
a
f(n/b)
T(n/b2)
T(n/b2)
T(n/ b2)
T(n/ b2)
a
Evaluating: T(n) = aT(n/b)+f(n)
Level
0
1
2
i
h
Evaluating: T(n) = aT(n/b)+f(n)
Level Instance
size
0
1
2
i
h
Evaluating: T(n) = aT(n/b)+f(n)
Level Instance
size
0 n
1
2
i
h
Evaluating: T(n) = aT(n/b)+f(n)
Level Instance
size
0 n
1 n/b
2
i
h
Evaluating: T(n) = aT(n/b)+f(n)
Level Instance
size
0 n
1 n/b
2 n/b2
i
h
Evaluating: T(n) = aT(n/b)+f(n)
Level Instance
size
0 n
1 n/b
2 n/b2
i n/bi
h n/bh
Evaluating: T(n) = aT(n/b)+f(n)
Level Instance
size
0 n
1 n/b
2 n/b2
i n/bi
h n/bh
Evaluating: T(n) = aT(n/b)+f(n)
Level Instance
size
0 n
1 n/b
2 n/b2
i n/bi
h n/bh = 1
base case
Evaluating: T(n) = aT(n/b)+f(n)
Level Instance
size
0 n
1 n/b
2 n/b2
i n/bi
h n/bh = 1
Evaluating: T(n) = aT(n/b)+f(n)
Level Instance
size
0 n
1 n/b
2 n/b2
i n/bi
h = log n/log b n/bh = 1
bh = n
h log b = log n
h = log n/log b
Evaluating: T(n) = aT(n/b)+f(n)
Level Instance
size Work
in stack
frame
0 n
1 n/b
2 n/b2
i n/bi
h = log n/log b 1
Evaluating: T(n) = aT(n/b)+f(n)
Level Instance
size Work
in stack
frame
0 n f(n)
1 n/b f(n/b)
2 n/b2 f(n/b2)
i n/bi f(n/bi)
h = log n/log b 1 T(1)
Evaluating: T(n) = aT(n/b)+f(n)
Level Instance
size Work
in stack
frame # stack frames
0 n f(n)
1 n/b f(n/b)
2 n/b2 f(n/b2)
i n/bi f(n/bi)
h = log n/log b n/bh T(1)
Evaluating: T(n) = aT(n/b)+f(n)
Level Instance
size Work
in stack
frame # stack frames
0 n f(n) 1
1 n/b f(n/b) a
2 n/b2 f(n/b2) a2
i n/bi f(n/bi) ai
h = log n/log b n/bh T(1) ah
Evaluating: T(n) = aT(n/b)+f(n)
Level Instance
size Work
in stack
frame # stack frames
0 n f(n) 1
1 n/b f(n/b) a
2 n/b2 f(n/b2) a2
i n/bi f(n/bi) ai
h = log n/log b n/bh T(1) ah
Evaluating: T(n) = aT(n/b)+f(n)
Level Instance
size Work
in stack
frame # stack frames
0 n f(n) 1
1 n/b f(n/b) a
2 n/b2 f(n/b2) a2
i n/bi f(n/bi) ai
h = log n/log b n/bh T(1) ah
ah = a
= n
log n/log b
log a/log b
Evaluating: T(n) = aT(n/b)+f(n)
Level Instance
size Work
in stack
frame # stack frames Work in Level
0 n f(n) 1
1 n/b f(n/b) a
2 n/b2 f(n/b2) a2
i n/bi f(n/bi) ai
h = log n/log b n/bh T(1)
n
log a/log b
Evaluating: T(n) = aT(n/b)+f(n)
Level Instance
size Work
in stack
frame # stack frames Work in Level
0 n f(n) 1 1 · f(n)
1 n/b f(n/b) a a · f(n/b)
2 n/b2 f(n/b2) a2 a2 · f(n/b2)
i n/bi f(n/bi) ai ai · f(n/bi)
h = log n/log b n/bh T(1)
n
log a/log b
n · T(1)
log a/log b
Total Work T(n) = ∑i=0..h ai×f(n/bi)
Evaluating: T(n) = aT(n/b)+f(n)
= ∑i=0..h ai×f(n/bi)
If a Geometric Sum
∑i=0..n xi = θ(max(first term, last term))
Evaluating: T(n) = aT(n/b)+f(n)
Level Instance
size Work
in stack
frame # stack frames Work in Level
0 n f(n) 1 1 · f(n)
1 n/b f(n/b) a a · f(n/b)
2 n/b2 f(n/b2) a2 a2 · f(n/b2)
i n/bi f(n/bi) ai ai · f(n/bi)
h = log n/log b n/bh T(1)
n
log a/log b
n · T(1)
log a/log b
Dominated by Top Level or Base Cases
Evaluating: T(n) = aT(n/b)+f(n)
Is the sum Geometric?
Simplify by letting f(n) = nc logkn
T(n) = ∑i=0..h ai×f(n/bi)
= ∑i=0..h ai×(n/bi)c ×logk(n/bi)
= nc ∑i=0..h 2[log a – c log b] · i ×logk(n/bi)
Geometrically Increasing
Arithmetic Sum
Geometrically Decreasing
Sum = θ(last term)
= θ( )
Sum = θ(any term ×# terms)
= θ(f(n) × log n)
Sum = θ(first term)
= θ(f(n)).
log a – c log b > 0
log a – c log b = 0
log a – c log b < 0
c < log a/log b
c = log a/log b & k<-1
c = log a/log b & k>-1
c > log a/log b
n
log a/log b
(n/..)c = nc
ai = 2[log a]·i
(../bi)c = 2[-c log b]·i
= nc ∑i=0..h 2-d i ×logk(n/bi)
Evaluating: T(n) = aT(n/b)+f(n)
Is the sum Geometric?
Simplify by letting f(n) = nc logkn
T(n) = ∑i=0..h ai×f(n/bi)
= ∑i=0..h ai×(n/bi)c ×logk(n/bi)
= nc ∑i=0..h 2[log a – c log b] · i ×logk(n/bi)
Geometrically Increasing
Arithmetic Sum
Geometrically Decreasing
Sum = θ(last term)
= θ( )
Sum = θ(any term ×# terms)
= θ(f(n) × log n)
Sum = θ(first term)
= θ(f(n)).
log a – c log b > 0
log a – c log b = 0
log a – c log b < 0
c < log a/log b
c = log a/log b & k<-1
c = log a/log b & k>-1
c > log a/log b
n
log a/log b
k=-1 Þ logk(n/bi)
= 1/(logn – i × logb)
» 1/i (backwards)
= nc ∑i=0..h 20 i ×logk(n/bi)
(back wards)
de
Evaluating: T(n) = aT(n/b)+f(n)
Is the sum Geometric?
Simplify by letting f(n) = nc logkn
T(n) = ∑i=0..h ai×f(n/bi)
= ∑i=0..h ai×(n/bi)c ×logk(n/bi)
= nc ∑i=0..h 2[log a – c log b] · i ×logk(n/bi)
Geometrically Increasing
Arithmetic Sum
Geometrically Decreasing
Sum = θ(last term)
= θ( )
Sum = θ(any term ×# terms)
= θ(f(n) × log n)
Sum = θ(first term)
= θ(f(n)).
log a – c log b > 0
log a – c log b = 0
log a – c log b < 0
c < log a/log b
c = log a/log b & k<-1
c = log a/log b & k>-1
c > log a/log b
n
log a/log b
= nc ∑i=0..h 2+d i ×logk(n/bi)
Evaluating: T(n) = 4T(n/2)+ n3/log5n
Time for top level?:
Evaluating: T(n) = 4T(n/2)+ n3/log5n
Time for top level: f(n) = n3/log5n
Time for base cases?:
Evaluating: T(n) = 4T(n/2)+ n3/log5n
Time for top level: f(n) = n3 /log5n
Time for base cases:
Evaluating: T(n) = 4T(n/2)+ n3/log5n
θ(n ) =
log a/log b
θ(n )
log ?/log ?
Time for top level: f(n) = n3 /log5n
Time for base cases:
Evaluating: T(n) = 4T(n/2)+ n3/log5n
θ(n ) =
log a/log b
θ(n ) = ?
log 4/log 2
Time for top level: f(n) = n3/log5n
Time for base cases:
Dominated?: c = ?
Evaluating: T(n) = 4T(n/2)+ n3/log5n
θ(n ) =
log a/log b
θ(n ) = θ(n2)
log 4/log 2
log a/log b = ?
Time for top level: f(n) = n3/log5n
Time for base cases:
Dominated?: c = 3 > 2 = log a/log b
Evaluating: T(n) = 4T(n/2)+ n3/log5n
θ(n ) =
log a/log b
θ(n ) = θ(n2)
log 4/log 2
Hence, T(n) = ?
Time for top level: f(n) = n3/log5n
Time for base cases:
Dominated?: c = 3 > 2 = log a/log b
Evaluating: T(n) = 4T(n/2)+ n3/log5n
θ(n ) =
log a/log b
θ(n ) = θ(n2)
log 4/log 2
Hence, T(n) = θ(top) = θ(f(n)) = θ(n3/log5n).
Time for top level: f(n) = 2n
Time for base cases:
Dominated?: c = ? > 2 = log a/log b
Evaluating: T(n) = 4T(n/2)+ 2n
θ(n ) =
log a/log b
θ(n ) = θ(n2)
log 4/log 2
Hence, T(n) = θ(top) = θ(f(n)) = θ(2n).
bigger
>big
The time is even more dominated
by the top level of recursion
Time for top level: f(n) = n log5n
Time for base cases:
Dominated?: c = ? 2 = log a/log b
Evaluating: T(n) = 4T(n/2)+ n log5n
θ(n ) =
log a/log b
θ(n ) = θ(n2)
log 4/log 2
Hence, T(n) = ?
1<
= θ(base cases) = θ(n ) = θ(n2).
log a/log b
Time for top level: f(n) = log5n
Time for base cases:
Dominated?: c = ? 2 = log a/log b
Evaluating: T(n) = 4T(n/2)+ log5n
θ(n ) =
log a/log b
θ(n ) = θ(n2)
log 4/log 2
Hence, T(n) = ?
0<
= θ(base cases) = θ(n ) = θ(n2).
log a/log b
Time for top level: f(n) = n2
Time for base cases:
Dominated?: c = ? 2 = log a/log b
Evaluating: T(n) = 4T(n/2)+ n2
θ(n ) =
log a/log b
θ(n ) = θ(n2)
log 4/log 2
Hence, T(n) = ?
2=
= θ(f(n) log(n) ) = θ(n2 log(n)).
Time for top level: f(n) = n2 log5n
Time for base cases:
Dominated?: c = 2 = 2 = log a/log b
Evaluating: T(n) = 4T(n/2)+ n2 log5n
θ(n ) =
log a/log b
θ(n ) = θ(n2)
log 4/log 2
d = ?
5 ?
Hence, T(n) = ?
> -1
= θ(f(n) log(n) ) = θ(n2 log6(n)).
Time for top level: f(n) = n2/log5n
Time for base cases:
Dominated?: c = 2 = 2 = log a/log b
Evaluating: T(n) = 4T(n/2)+ n2/log5n
θ(n ) =
log a/log b
θ(n ) = θ(n2)
log 4/log 2
d = ?
Hence, T(n) = ?
-5 ?
< -1
= θ(base cases) = θ(n ) = θ(n2).
log a/log b
Time for top level: f(n) = n2/log n
Time for base cases:
Dominated?: c = 2 = 2 = log a/log b
Evaluating: T(n) = 4T(n/2)+ n2/log n
θ(n ) =
log a/log b
θ(n ) = θ(n2)
log 4/log 2
d = ?
Hence, T(n) = ?
-1 ?
= -1
= θ(nc loglog n) = θ(n2 loglog n).
Did not do before.
Sufficiently close to:
T(n) = 4T(n/2)+ n3 = θ(n3).
T2(n) = ?
Evaluating: T2(n) = 4 T2(n/2+n1/2)+ n3
θ(n3).
Evaluating: T(n) = aT(n-b)+f(n)
h = ?
n-hb
n-ib
n-2b
n-b
T(0)
f(n-ib)
f(n-2b)
f(n-b)
f(n)
n
Work in Level
# stack frames
Work
in stack
frame
Instance
size
a
ai
a2
a
1
n/b
a · T(0)
ai · f(n-ib)
a2 · f(n-2b)
a · f(n-b)
1 · f(n)
n/b
|base case| = 0 = n-hb
h = n/b
h = n/b
i
2
1
0
Level
Likely dominated by base cases
Exponential
Evaluating: T(n) = 1T(n-b)+f(n)
h = ?
Work in Level
# stack frames
Work
in stack
frame
Instance
size
1
1
1
1
1
f(0)
f(n-ib)
f(n-2b)
f(n-b)
f(n)
n-b
n
n-hb
n-ib
n-2b
T(0)
f(n-ib)
f(n-2b)
f(n-b)
f(n)
h = n/b
i
2
1
0
Level
Total Work T(n) = ∑i=0..h f(b·i)
= θ(f(n)) or θ(n·f(n))
End
Restart Relevant Mathematics
Iterative Algorithms
End of math review
More Math
421
$
$
"
³
£
£
c
c
n
n
n
c
g
n
f
n
c
g
n
1
2
0
0
1
2
,
,
,
,
(
)
(
)
(
)
$
"
³
$
£
£
n
n
n
c
c
c
g
n
f
n
c
g
n
0
0
1
2
1
2
,
,
(
)
(
)
(
)
,
,
$
$
"
³
>
>
c
c
n
n
n
1
0
2
0
0
0
,
,
,
,
.
.
.
”
”
$
³
>
>
c
c
n
n
n
c
g
n
f
n
or
f
n
c
g
n
1
2
0
0
1
2
,
,
,
,
(
)
(
)
(
)
(
)
$
”
g
b
loves
b
g
,
,
(
,
)
”
$
b
g
loves
b
g
,
,
(
,
)
2
1)(n n
S
1+2+3+. . .+ n-1+n=S
n+n-1+n-2+ . . . +2+1=S
(n+1) + (n+1) + (n+1) + . . . + (n+1) + (n+1) = 2S
n (n+1) = 2S
1+2+3+. . .+ n-1+n=S
n+n-1+n-2+ . . . +2+1=S
(n+1) + (n+1) + (n+1) + . . . + (n+1) + (n+1) = 2S
n (n+1) = 2S
1+2+3+. . .+ n-1+n=S
n+n-1+n-2+ . . . +2+1=S
(n+1) + (n+1) + (n+1) + . . . + (n+1) + (n+1) = 2S
n (n+1) = 2S
1+2+3+. . .+ n-1+n=S
n+n-1+n-2+ . . . +2+1=S
(n+1) + (n+1) + (n+1) + . . . + (n+1) + (n+1) = 2S
n (n+1) = 2S
2
1)(n n
S
1+2+3+. . .+ n-1+n=S
n+n-1+n-2+ . . . +2+1=S
(n+1) + (n+1) + (n+1) + . . . + (n+1) + (n+1) = 2S
n (n+1) = 2S
n
n
n
n
log
/docProps/thumbnail.jpeg