Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Running time
Memory
Simplicity .
Best case
Average case
The running time depends on Worst case
the input size
120
100
Running Time
80
60
40
It also depends on the input data:
Different inputs can have different 20
running times 0
1000
2000 3000
4000
Input Size
If x is odd
return x
15
If x is even 15
compute the sum S
of the first x integers
4
return S 10
Examples:
calling a method and returning from a method
arithmetic operations (e.g. addition)
comparing two numbers, etc.
currentMax
currentMax A[0]
for i 1 to n -1 do
if currentMax < A[i] then
currentMax A[i]
return currentMax
currentMax 5
currentMax A[0]
for i 1 to n -1 do
if currentMax < A[i] then
currentMax A[i]
return currentMax
currentMax 5
currentMax A[0]
for i 1 to n -1 do
if currentMax < A[i] then
currentMax A[i]
return currentMax
currentMax 13
currentMax A[0]
for i 1 to n -1 do
if currentMax < A[i] then
currentMax A[i]
return currentMax
currentMax 13
currentMax A[0]
for i 1 to n -1 do
if currentMax < A[i] then
currentMax A[i]
return currentMax
currentMax 13
currentMax A[0]
for i 1 to n -1 do
if currentMax < A[i] then
currentMax A[i]
return currentMax
currentMax A[0]
for i 1 to n -1 do
if currentMax < A[i] then
currentMax A[i]
return currentMax
return currentMax
5
7
8
10
11
12
14
16
17
20
15
1
12
3
9
7
6
4
2
2
return currentMax
CSI2110A (2013), Prof. Lucia Moura
21
Complexity - Summary
i0 1 assignment
while (A[i] element)
sizeA comparisons
i i+1
& assignment
return i (if we are not lucky)
Worst Case
c g(n)
f(n)
n0
CSI2110A (2013), Prof. Lucia Moura
24n
What does it mean
c g(n) ?
Example:
g(n) = n
2 g(n) = 2 n
3 g(n) = 3 n
f(n) = 2n+1
f(n) is O(n2)
f(n) c g(n) for n n0
f(n) g(n) for n 1+ 2
n
1+ 2
CSI2110A (2013), Prof. Lucia Moura
28
But also
f(n) = 2n+1
g(n) = n
n
f(n) c g(n) for n n0 29
CSI2110A (2013), Prof. Lucia Moura
But also
f(n) = 2n+1
2 g(n) = 2 n
n
f(n) c g(n) for n n0 30
CSI2110A (2013), Prof. Lucia Moura
But also
f(n) = 2n+1
3 g(n) = 3 n
log(n)
n0 n
5
n0 n
CSI2110A (2013), Prof. Lucia Moura
34
n =
2
16
256
1024
log log n
0
2
3
3.32
log n
1
4
8
10
n
2
16
256
1024
n log n
2
64
448
10 200
n2
4
256
65 500
1.05 * 106
n3
8
4 100
16 800 800
1.07 * 109
n
2 4
35 500
11.7 * 106
1.80 * 10308
Theorem:
O(f(n) + g(n)) = O(max(f(n), g(n)))
Ex 1:
2n3 + 3n2 = O (max(2n3, 3n2))
= O(2n3) = O(n3)
Ex 2:
n2 + 3 log n 7 = O(max(n2, 3 log n 7))
= O(n2)
CSI2110A (2013), Prof. Lucia Moura
37
Simple Big Oh Rule:
7n-3 is O(n)
5
13
4
8
6
2
3
8
1
2
5
9
7.3
7.5
CSI2110A (2013), Prof. Lucia Moura
41
Example of Asymptotic Analysis
Algorithm prefixAverages1(X, n)
5
13
4
7
6
2
3
8
1
2
5
13
4
7
6
2
3
8
1
2
j=1
5
9
5
13
4
7
6
2
3
8
1
2
j = 1,2
5
9
7.3
5
13
4
7
6
2
3
8
1
2
j = 1,2,3
5
9
7.3
7.5
5
13
4
7
6
2
3
8
1
2
for i 0 to n - 1 do
s X[0]
for j 1 to i do
s s + X[j]
A[i] s / (i + 1)
5
13
4
7
6
2
3
8
1
2
i=0 0
i=1 1
How many additions in total ?
i=2 2
i=3 3
i=4 4
..
i=n-1 n-1 CSI2110A (2013), Prof. Lucia Moura
48
Example of Asymptotic Analysis
Counting as basic operations: additions and divisions
Algorithm prefixAverages1(X, n)
TO REMEMBER
1 + 2 + + n = n(n+1)
2
Algorithm prefixAverages2(X):
Input: An n-element array X of numbers.
Output: An n -element array A of numbers such that A[i] is the
average of elements X[0], ... , X[i].
Let X be an array of n numbers.
s 0
for i 0 to n-1 do
s s + X[i]
A[i] s/(i+ 1)
return array A
5
13
4
7
6
2
3
8
1
2
s=0
5
13
4
7
6
2
3
8
1
2
s=5
5
9
5
13
4
7
6
2
3
8
1
2
s=18
5
9
7.3
5
13
4
7
6
2
3
8
1
2
s=22
5
9
7.3
7.5
Let X be an array of n numbers.
s 0
for i 0 to n-1 do
s s + X[i]
O(n) additions
A[i] s/(i+ 1)
O(n)
divisions
return array A
O(n) time
prefixAverages1
prefixAverages2
O(n2) O(n)
f(n) is (g(n))
if there exist c > 0 and n0 > 0 such that
f(n) c g(n) for all n n0
n0
n
CSI2110A (2013), Prof. Lucia Moura
59
big-Theta
is big theta
g(n) is (f(n))
<===>
if g(n) O(f(n))
AND
f(n) O(g(n))
f(n) is O(n2)
AND
f(n) is (n2)
f(n) is (n2)
CSI2110A (2013), Prof. Lucia Moura
61
Intuition for Asymptotic
Notation
Big-Oh
f(n) is O(g(n)) if f(n) is asymptotically
less than or equal to g(n)
big-Omega
f(n) is (g(n)) if f(n) is asymptotically
greater than or equal to g(n)
big-Theta
f(n) is (g(n)) if f(n) is asymptotically
equal to g(n)
properties of logarithms:
logb(xy) = logbx + logby
logb (x/y) = logbx logby
logb xa = alogbx
logba=
logxa/logxb
properties of exponentials:
a(b+c) = aba c
abc = (ab)c
ab /ac = a(b-c)
b = a logab
bc = a c*logab
CSI2110A (2013), Prof. Lucia Moura
63
More Math to Review
2S = nd + nd + nd + + nd
= (n+1) nd
S = d/2 n(n+1)
S = (rn+1-1)/(r-1)