You are on page 1of 27

Advanced Algorithms

Analysis & Design


Lecture No : 2

By
Dr. Abdelghafar Refat Elshenawy
What is Algorithms ?
Analysis & Design Algorithms
Analysis Algorithms

Loop if = > &


while < ==
|| ! Loop
Analysis Signal D0 while
print

Analysis Blood Analysis Code


Whey Analysis Algorithms

 Is that correct ? Better? what is better?

 How to evaluate that algorithm?

 Measuring time? Ridiculous ! Why?

 What to count?

 Count with respect to what ?


Analysis Algorithms
Analysis Algorithms
• How good is the algorithm?
1. Time Efficiency Running Time
2. Space Efficiency

• How do you analyze the algorithm?


Experimental Studies Theoretical Analysis
How do you count to analyze the
algorithm?
1 Example ( Constant )

1 2 4
for ( int i = 0; i < 10; i++ ) 1 1 + (11) + 10
{ 3
System.out.println("Advanced Algorithm"); 2 10

} 5
System.out.println("End"); 3 1

F(n) = 1 + 11 +10 + 10 + 1 = 33
2 Example ( Linear or n)
Master Statement

Follower Statement

1 2 4
for ( int i = 0; i < n; i++ ) 1 1 + (n+1) + n
{ 3
System.out.println("Advanced Algorithm"); 2 n

} 5
System.out.println("End"); 3 1

F(n) = T(n) = C * (1+(n+1)+n+n+1) = C * (3n + 3)


C = 1 ms
N=1000 F(n) = 1 (3 * 1000 + 3 ) = 3003 ms
3 Example (Quadratic Function)
1 2 7
for ( int i = 0; i < n; i++) 1 1 + (n+1) + n
{ 3 4 6
for ( int k = 0 ; k< n; k++) 2 (1 + (n+1) + n) * n
5
println("Advanced Algorithm"); 3 n*n

2
F(n) = (2n +2) + (2n+2) * n + n Loop 3n + 2

= 3 n2 + 4 n + 2
4 Example ( Quadratic, cubic function)
Loop 3n + 2

Loop 1 1 + (n+1) + n Loop 1 1 + (n+1) + n

Loop 2 (3n + 2) * n Loop 2 (3n + 2) * n

Loop 3 (3n + 2) * n * n

F(n) = (2n +2) + (3n+2) * n

= 3 n2 + 4 n + 2 F(n) = (2n +2) + (3n+2) * n + (3n + 2) * n * n


3 2
=3n 5n +4n+ 2
5 Example ( Linear Function Two Varible)

1 2 7
for ( int i = 0; i < n; i++) 1 1 + (n+1) + n
{ 3 4 6
for ( int k = 0 ; k< M; k++) 2 (1 + (M+1) + M) * n
5
println("Advanced Algorithm"); 3 M*n

F(n) = T(n) = C * (3n + 3Mn + 4 )


6 Example ( Log Function)
N= 32 1 1
for ( int i = 1; i < n; i ×=2 )
{ 2 2
System.out.println("Advanced Algorithm");
3 4
} 4 8

Minimize to 5 16

32  6 6 32

log 32 2  5

( log 32) + 1  6
2
6 Example ( Log Function)

for ( int i = 1; i < n; i ×=2 ) 1 1 + ( log n +1) + log n


{ 2 2

System.out.println("Advanced Algorithm"); 2 log n


2
}

F(n) = 3 log n + 2
2
7 Example ( Log Function)
N= 8 1 8
for ( int i = n; i > 1; i /=2 )
{ 2 4
System.out.println("Advanced Algorithm");
3 2
} 4 1

Minimize to
8  4
log 8 2  3

( log 8) + 1  4
2
7 Example ( Log Function)

for ( int i = n; i > 1; i /=2 ) 1 1 + ( log n +1) + log n


{ 2 2

System.out.println("Advanced Algorithm"); 2 log n


2
}

F(n) = 3 log n + 2
2
8 Example ( Log Function)

I ×=2 log n I ÷=2 log n


2 2
i×=4 log n i÷=4 log n
4 4
i×=10 log n i÷=10 log n
10 10
9 Example (Arithmetic Progression)
1 2 7
for ( int i = 0; i < n; i++) 1 1 + (n+1) + n
{ 3 4 6
for ( int k = 0 ; k< i; k++) 2 n+?+?
5
println("Advanced Algorithm"); 3 ?

i=0 i=1 i=2 i=3 i=4


n= 5 k< 0
k< 0 1 k< 0 k< 0 k< 0
2
k< 1 k< 1 k< 1
i= 0,1,2,3,4,5 3 k< 1
k< 2 4 k< 2 5
k< 2
k< 3
k< 3
k< 4
9 Example (Arithmetic Progression)
1 2 7
for ( int i = 0; i < n; i++) 1 1 + (n+1) + n
{ 3 4 6
for ( int k = 0 ; k< i; k++) 2 n+?+?
5
println("Advanced Algorithm"); 3 ?

5 6
9 Example (Arithmetic Progression)
1 2 7
for ( int i = 0; i < n; i++) 1 1 + (n+1) + n
{ 3 4 6
for ( int k = 0 ; k< i; k++) 2 n+?+?
5
println("Advanced Algorithm"); 3 ?

5 6
10 Example (Arithmetic Progression)
Example (Arithmetic Progression)
1 2 6
1 1 + (n+1) + n
for ( int i = 0; i < n; i++)
{ 3 2 n
int k = i; 4
while ( k< i; 3 ?
5 K- -; 3 ?
}

i=0 i=1 i=2 i=3


n= 4
k< 0 1 k< 0 k< 0 k< 0
i= 0,1,2,3,4 2
k< 1 k< 1 k< 1
3
k< 2 4
k< 2
k< 3
Example (Arithmetic Progression)
1 2 6
1 1 + (n+1) + n
for ( int i = 0; i < n; i++)
{ 3 2 n
int k = i; 4
while ( k< i; 3 n(n+1) / 2
5 K- -;
4 n(n-1) / 2
}

5
By
Dr. Abdelghafar Refat Elshenawy

You might also like