Lecture 3: Asymptotic
Transcript of Lecture 3: Asymptotic
Lecture 3: Asymptotic Analysis + Recurrences
Data Structures and
Algorithms
CSE 373 SU 18 β BEN JONES 1
Warmup β Write a model and find Big-O
for (int i = 0; i < n; i++) {
for (int j = 0; j < i; j++) {
System.out.println(βHello!β);
}
}
CSE 373 SP 18 - KASEY CHAMPION 2
Summation
1 + 2 + 3 + 4 +β¦ + n =
π=1
π
π
= f(a) + f(a + 1) + f(a + 2) + β¦ + f(b-2) + f(b-1) + f(b)
Definition: Summation
π=π
π
π(π)
T(n) =
π=0
πβ1
π=0
πβ1
π
for (int i = 0; i < n; i++) {
for (int j = 0; j < i; j++) {
System.out.println(βHello!β);
}
}
Simplifying Summations
CSE 373 WI 18 β MICHAEL LEE 3
T(n) =
π=0
πβ1
π=0
πβ1
π =
π=0
πβ1
ππ Summation of a constant
= π
π=0
πβ1
π Factoring out a constant
=ππ π β 1
2 Gaussβs Identity
=π
2π2 β
π
2π O(n2)
Function Modeling: Recursion
public int factorial(int n) {
if (n == 0 || n == 1) {
return 1;
} else {
return n * factorial(n β 1);
}
CSE 373 SP 18 - KASEY CHAMPION 4
+1
+3+c
+????
Function Modeling: Recursion
public int factorial(int n) {
if (n == 0 || n == 1) {
return 1;
} else {
return n * factorial(n β 1);
}
CSE 373 SP 18 - KASEY CHAMPION 5
+c1
+T(n-1)
+c2
C1
C2 + T(n-1)T(n) =
when n = 0 or 1
otherwise
Mathematical equation that recursively defines a sequence
The notation above is like an if / else statement
Definition: Recurrence
Unfolding Method
T(3) =
T(n) = C1 +
Summation of a constant
T(n) = C1 + (n-1)C2
CSE 373 SP 18 - KASEY CHAMPION 6
T(n) = when n = 0 or 1
otherwise
C1
C2 + T(n-1)
π=0
πβ1
πΆ2
C2 + T(3 β 1) = C2 + (C2 + T(2 β 1)) = C2 + (C2 + (C1)) = 2C2 + C1
Announcements
- Course background survey due by Friday
- HW 1 is Due Friday
- HW 2 Assigned on Friday β Partner selection forms due by 11:59pm Thursday
https://goo.gl/forms/rVrVUkFDdsqI8pkD2
CSE 373 SU 18 β BEN JONES 7
A Detour on Style
- Checkstyle for project- No packages for HW1
- Braces for blocks
- Good style is easy to read
- Javadoc on public methods (not needed if interface has Javadoc)
- Comment non-obvious code
- Self-Documenting code is better than commented code
- Good variable and method names go a long way towards this
- No magic numbers (numbers larger than 2 or 3 should probably be class constants unless thereβs a really good reason)
- No code duplication
- Use Idioms!
ex. for (int I = 0; I < 10; i++) instead of for (int I = 0; I == 9; i = i + 1)
naming: CONSTANTS_USE_CAPS, ClassName, methodName
CSE 373 SU 18 β BEN JONES 8
Tree Method
Idea:
-Since weβre making recursive calls, letβs just draw out a tree, with one node for each recursive call.
-Each of those nodes will do some work, and (if they make more recursive calls) have children.
-If we can just add up all the work, we can find a big-Ξ bound.
CSE 373 SU 18 - ROBBIE WEBER 9
Solving Recurrences I: Binary Search
CSE 373 SU 18 - ROBBIE WEBER 10
π π =1 π€βππ π β€ 1
2ππ
2+ π ππ‘βπππ€π
π
2+ 1 ππ‘βπππ€ππ π
0. Draw the tree.
1. What is the input size at level π?2. What is the number of nodes at level π?3. What is the work done at recursive level π?4. What is the last level of the tree?
5. What is the work done at the base case?
6. Sum over all levels (using 3,5).
7. Simplify
Solving Recurrences I: Binary Search
CSE 373 SU 18 - ROBBIE WEBER 11
π π =1 π€βππ π β€ 1
2ππ
2+ π ππ‘βπππ€π
π
2+ 1 ππ‘βπππ€ππ π
0. Draw the tree.
1. What is the input size at level π?2. What is the number of nodes at level π?3. What is the work done at recursive level π?4. What is the last level of the tree?
5. What is the work done at the base case?
6. Sum over all levels (using 3,5).
7. Simplify
β¦
1
1
1
1
Solving Recurrences I: Binary Search
CSE 373 SU 18 - ROBBIE WEBER 12
π π =
1 π€βππ π β€ 1
2ππ
2+ π ππ‘βπππ€ππ ππ
π
2+ 1 ππ‘βπππ€ππ π
Level Input Size Work/call Work/level
0 π 1 1
1 π/2 1 1
2 π/22 1 1
π π/2π 1 1
log2π 1 1 1
Οπ=0log2 πβ1 1 + 1 = log2 π
0. Draw the tree.
1. What is the input size at level π?2. What is the number of nodes at level π?3. What is the work done at recursive level π?4. What is the last level of the tree?
5. What is the work done at the base case?
6. Sum over all levels (using 3,5).
7. Simplify
Solving Recurrences II:
13
n
n
2
n
2
n
4
n
4
n
4
n
4
n
8
n
8
n
8
n
8
n
8
n
8
n
8
n
8
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
β¦ β¦ β¦ β¦ β¦ β¦ β¦ β¦β¦ β¦ β¦β¦ β¦ β¦ β¦ β¦
π π =1 π€βππ π β€ 1
2ππ
2+ π ππ‘βπππ€ππ π
CSE 373 SU 18 - ROBBIE WEBER
Tree Method Formulas
How much work is done by recursive levels (branch nodes)?1. What is the input size at level π?
- π= 0 is overall root level.
2. At each level π, how many calls are there?
3. At each level π, how much work is done??
How much work is done by the base case level (leaf nodes)?4. What is the last level of the tree?
5. What is the work done at the last level?
6. Combine and Simplify
CSE 373 SU 18 - ROBBIE WEBER 14
π πππ’ππ ππ£π π€πππ =
π=0
πππ π‘π πππ’ππ ππ£ππΏππ£ππ
πππππβππ’π π πππππβππππ(π)
ππππ πππ’ππ ππ£π π€πππ = ππππππππ΅ππ ππΆππ π Γ ππ’πππππΆππππ
π π =1 π€βππ π β€ 1
2ππ
2+ π ππ‘βπππ€ππ π
2π
(π/2π)
π=0
log2 πβ1
2ππ
2π
1 β 2log2 π = π
π π =
π=0
log2 πβ1
2ππ
2π+ π = π log2 π + π
2π(π/2π) = π
(π/2π) = 1β 2π = π β π = log2 π
Solving Recurrences III
CSE 373 SU 18 - ROBBIE WEBER 15
πn2
πn
16
2
πn
16
2
πn
16
2
πn
16
2
πn
16
2
πn
16
2
πn
16
2
πn
16
2
πn
16
2
β¦ β¦β¦ β¦ β¦β¦ β¦ β¦β¦ β¦ β¦β¦ β¦ β¦β¦ β¦ β¦β¦ β¦ β¦β¦ β¦ β¦β¦ β¦ β¦β¦
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
Answer the following
questions:
1. What is input size on
level π?2. Number of nodes at
level π?3. Work done at
recursive level π?4. Last level of tree?
5. Work done at base
case?
6. What is sum over all
levels?
π π =5 π€βππ π β€ 4
3ππ
4+ ππ2 ππ‘βπππ€ππ π
πn
4
2
πn
4
2
πn
4
2cπ
4
2
cπ
4
2
ππ
4
2
ππ2
Solving Recurrences III
CSE 373 SU 18 - ROBBIE WEBER 16
Level (i)Number of
Nodes
Work per
Node
Work per
Level
0 1 ππ2 ππ2
1 3 ππ
4
2 3
16ππ2
2 32 ππ
42
2 3
16
2
ππ2
π 3π ππ
4π
2 3
16
π
ππ2
Base =
log4π β 13log4 πβ1 5
5
3πlog4 3
1. Input size on level π?
2. How many calls on level π?
3. How much work on level π?
4. What is the last level?
5. A. How much work for each leaf node?
B. How many base case calls?
π
4π
ππ
4π
2
When π
4π= 4β log4 π β 1
5
π π =5 π€βππ π β€ 4
3ππ
4+ ππ2 ππ‘βπππ€ππ π
6. Combining it all togetherβ¦
3πππ
4π
2
=3
16
π
ππ2
π π =
π=0
log4 π β23
16
π
ππ2 +5
3πlog43
3log4 πβ1 =3log4 π
3 power of a log
π₯logπ π¦ = π¦logπ π₯
=πlog4 3
3
3π
Solving Recurrences III
CSE 373 SU 18 - ROBBIE WEBER 17
π π =
π=0
log4 π β23
16
π
ππ2 +5
3πlog43
π π β€ ππ21
1 β316
+5
3πlog43
π π = ππ2316
log4 πβ1
β 1
316 β 1
+5
3πlog43
π π β π(π2)
π=π
π
ππ(π) = π
π=π
π
π(π)
factoring out a
constantπ π = ππ2
π=0
log4 π β23
16
π
+5
3πlog43
π=0
πβ1
π₯π =π₯π β 1
π₯ β 1
finite geometric series
π=0
β
π₯π =1
1 β π₯
infinite geometric
series
when -1 < x < 1
If weβre trying to prove upper boundβ¦
π π β€ ππ2
π=0
β3
16
π
+5
3πlog43
Closed form:
7. Simplifyβ¦
Another Example
π π = α1 if π = 12 if π = 2
π π β 2 + 4 otherwise
CSE 373 SU 18 - ROBBIE WEBER 18
Is there an easier way?
We do all that effort to get an exact formula for the number of operations,
But we usually only care about the Ξ bound.
There must be an easier way
Sometimes, there is!
CSE 373 SU 18 - ROBBIE WEBER 19
Master Theorem
CSE 373 SU 18 - ROBBIE WEBER 20
π π = απ π€βππ π β€ some constant
πππ
π+ ππ otherwise
Given a recurrence of the following form:
The big-theta solution always follows this pattern:
π π is Ξ ππlogπ π < π
logπ π = π π π is Ξ ππ log π
logπ π > π π π is Ξ πlogπ π
If
If
If
then
then
then
Where a, b, c, and d are all constants.
Apply Master Theorem
CSE 373 SU 18 - ROBBIE WEBER 21
π π =1 π€βππ π β€ 1
2ππ
2+ π ππ‘βπππ€ππ π
π π =π π€βππ π β€ some constant
πππ
π+ ππ ππ‘βπππ€ππ π
logπ π = π π π is Ξ ππ log π
logπ π > π π π is Ξ πlogπ π
If
If
π π is Ξ ππlogπ π < πIf then
then
then
Given a recurrence of the form:
a = 2
b = 2
c = 1
d = 1logπ π = π β log2 2 = 1
π π is Ξ ππ log2 π β Ξ π1 log2 π
Reflecting on Master Theorem
The case - Recursive case conquers work more quickly than it divides work
- Most work happens near βtopβ of tree
- Non recursive work in recursive case dominates growth, nc term
The case - Work is equally distributed across levels of the tree
- Overall work is approximately work at any level x height
The case - Recursive case divides work faster than it conquers work
- Most work happens near βbottomβ of tree
- Work at base case dominates.
CSE 373 SU 18 - ROBBIE WEBER 22
logπ π < π
logπ π = π
logπ π > π
ππππππππ β π πlogπ π
βπππβπ‘ β logπ π
πππππβππππ β ππlogπ π
π π =π π€βππ π β€ some constant
πππ
π+ ππ ππ‘βπππ€ππ π
logπ π = π π π is Ξ ππ log π
logπ π > π π π is Ξ πlogπ π
If
If
π π is Ξ ππlogπ π < πIf then
then
then
Given a recurrence of the form:
Benefits of Solving By Hand
If we had the Master Theorem why did we do all that math???
Not all recurrences fit the Master Theorem.
-Recurrences show up everywhere in computer science.
-And theyβre not always nice and neat.
It helps to understand exactly where youβre spending time.
-Master Theorem gives you a very rough estimate. The Tree Method can give you a much more precise understanding.
CSE 373 SU 18 - ROBBIE WEBER 23
Amortization
Whatβs the worst case for inserting into an ArrayList?
-O(n). If the array is full.
Is O(n) a good description of the worst case behavior?
-If youβre worried about a single insertion, maybe.
-If youβre worried about doing, say, π insertions in a row. NO!
Amortized bounds let us study the behavior of a bunch of consecutive calls.
CSE 373 SU 18 - ROBBIE WEBER 24
Amortization
The most common application of amortized bounds is for insertions/deletions and data structure resizing.
Letβs see why we always do that doubling strategy.
How long in total does it take to do π insertions?
We might need to double a bunch, but the total resizing work is at most O(n)
And the regular insertions are at most π β π 1 = π(π)
So π insertions take π(π) work total
Or amortized π(1) time.
CSE 373 SU 18 - ROBBIE WEBER 25
Amortization
Why do we double? Why not increase the size by 10,000 each time we fill up?
How much work is done on resizing to get the size up to π?
Will need to do work on order of current size every 10,000 inserts
Οπ=0
π
10000 10000π β 10,000 β π2
10,0002= π(π2)
The other inserts do π π work total.
The amortized cost to insert is ππ2
π= π(π).
Much worse than the π(1) from doubling!
CSE 373 SU 18 - ROBBIE WEBER 26