0% found this document useful (0 votes)
40 views70 pages

Tarahi Algorithms CH1

1) The document contains lecture notes on algorithms and data structures from an advanced data structures course taught by N. Razavi in 2006. 2) Various algorithms are presented such as sequential search, binary search, exchange sort, matrix multiplication, calculating sums, and calculating Fibonacci numbers. Pseudocode is provided to demonstrate implementations of these algorithms. 3) Recursive implementations of calculating Fibonacci numbers and runtime analysis are discussed. Caching previous Fibonacci number calculations is demonstrated to improve the recursive Fibonacci number algorithm from exponential to linear time.

Uploaded by

Blake Arnold
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
40 views70 pages

Tarahi Algorithms CH1

1) The document contains lecture notes on algorithms and data structures from an advanced data structures course taught by N. Razavi in 2006. 2) Various algorithms are presented such as sequential search, binary search, exchange sort, matrix multiplication, calculating sums, and calculating Fibonacci numbers. Pseudocode is provided to demonstrate implementations of these algorithms. 3) Recursive implementations of calculating Fibonacci numbers and runtime analysis are discussed. Caching previous Fibonacci number calculations is demonstrated to improve the recursive Fibonacci number algorithm from exponential to linear time.

Uploaded by

Blake Arnold
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 70

E-mail: [email protected].

ir

N. Razavi - AD course - 2006

N. Razavi - AD course - 2006

% &' n # $ " S
.&- % " &' n # ! "

! " .A
) + , . () *

&' n # $ " S
x &' .
# / .B
% %# % + , S
x
1 2 . 0
#
. % &5# 0 0 %# % + , 1 2 # *
N. Razavi - AD course - 2006


n S .A
x n S .B

<

5 "# , % 8" # 2 0 9 )# 5 : 6 "

=&- =& , ;#: + , : 6 " ) )

) ) >.
6 "
N. Razavi - AD course - 2006

n = 6 S = [10, 7, 11, 5, 13, 8] : ) )


[5, 7, 8, 10, 11, 13] :$? =#

x = 5 n = 6 S = [10, 7, 11, 5, 13, 8] : ) )


#
S x A % :$? =#
N. Razavi - AD course - 2006

B 6 " # %C

D#

8" S 2 ' #
5 %# x!
% AS E '
# #F - %
% + , A&- #& , x G# . % S
0. %
#& , # x
#
. & # 0 + , 1 2 # *

: / H>% % 5C
=& I ,

D # - ) ! /"

5C D#J
- )> %$ "
) ") %>%
% >.
> %$ "

C++ &
N. Razavi - AD course - 2006

-
.

1-1 C
M # # N&
1 T &)# % 5&

U2 % %# %

# S # . An

0 &- ) S

n %S # .

x&

D# 1
.: 6 "

Q" R S2 &' :( 5 "# ,) 5


x&
n

x G#) S

x > " Alocation : 5


0
(&- % "

N. Razavi - AD course - 2006

void seqsearch ( int n,


const keytype S [ ],
keytype x,
index& location )
{
location = 1 ;
while ( location <= n && S [location] != x)
location++ ;
if ( location > n)
location = 0 ;
}
N. Razavi - AD course - 2006

5 # . # = U # = S)

" <8 C++


5& D = %
X).
.& ) R S2 #&'#
Z" 5 ") %
% ; # V D 5 # &/%
# # .; H& (4-1 C D # & ) ") .C G " [)
:; Q" .C ] / Z " ; H % S" 5 # . C )# " & void example ( int n )
{
keytype S [2..n]

.C 5 U2 # F - % R S2 5 T &)# # = U # %
T &)# C
" = U # 5 # . # &- % V W
Y2# X). T &)#
G " # N R S2 #&'# #

N. Razavi - AD course - 2006

DE


:; Q"
if ( low G x G high ) {

}
:; Q"
exchange x and y ;

N. Razavi - AD course - 2006

DD

= U # &)# =& ) ] / C++

# = # F# )# # &
:C

.
] / (real) 8 8?

"

% T &)# ># ' %

(int) R S2 &' ># ' % # >. >#


`a% # false true
- " 9 ^ )# ! " '

"

8" &)#

"

S S2 Z " index
"
Z " number
"

# _ #&8"

: #&) # *

Z " bool
Z " keytype

repeat ( n times) {

}
N. Razavi - AD course - 2006

1
.&

C5 % # S

E'n # .

.n 1 T &)# % S # . An
.S

" #&'# b

" #&'# V

: 6 "

Q" R S2 &' : 5
$2 ? Asum : 5

N. Razavi - AD course - 2006

0
D

number sum ( int n, const number S [ ] )


{
index i ;
number result ;
result = 0 ;
for ( i = 1; i <= n; i++)
result = result + S [i] ;
return result ;
}
N. Razavi - AD course - 2006

D!

1
.&

.n 1 T &)# % 5 &
.

! "

() * !

# S # . An

() * !

% 5&

%# &

n: 6 "

Q" R S2 &' : 5
?S # .:5

N. Razavi - AD course - 2006

D#

void exchangesort ( int n, keytype S [ ] )


{
index i, j ;
for ( i = 1; i <= n - 1; i++)
for ( j = i + 1; j <= n; j++)
if ( S [j] < S [i] )
exchange S [i] and S [j];
}
N. Razavi - AD course - 2006

D$

5T
.&
##

-n

1 # >.

A &/%

" 9 c 4-1 C

/ # nxnT

"

D# 1

9 c $2 ? : 6 "

5 # . An Q" R S2 &' : 5
.& - % " n 1 T &)# % 5 >
5d

5>
5d
A #&'# # C &/%
#.:
0
.&- % " B A 9 c $2 ? ?
# =&- #`G
N. Razavi - AD course - 2006

D.

void matrixmult ( int n,


const number A [ ][ ],
const number B [ ][ ],
number C [ ][ ] )
{
index i, j, k ;
for ( i = 1; i <= n; i++)
for ( j = 1; j <= n; j++)
C[i][j]=0;
for ( k = 1; k <= n; k++)
C[i][j]=C[i][j]+A[i][k]*B[k][j];
}
N. Razavi - AD course - 2006

D0

N. Razavi - AD course - 2006

D2

5-1 C
. 0
.x &

# # N&

n 1 T &)# % S (

U2 % %# %

0 &- ) S

n %S! " # .

() *) ! " # . An
x G# ) S

x .&

D# 1

/ : 6 "

Q" R S2 &' : 5

x > " Alocation : 5


0
.(&- % "

N. Razavi - AD course - 2006

void binsearch ( int n,


const keytype S [ ],
keytype x,
index& location )
{
index low, high, mid ;
low = 1 ; high = n ;
location = 0 ;
while ( low <= high && location == 0) {
mid = ( low + high ) / 2 ;
if ( x == S [mid] )
location = mid ;
else if ( x < S [mid] )
high = mid 1 ;
else
low = mid + 1 ;
}
}

N. Razavi - AD course - 2006

n = 32

32 :
6:

# X).

S[16]

S[24]

S[28]

1st

2nd

3rd

S[30]

4th

S[31] S[32]

5th

6th

A&- % G (% 32 = #&)# % # # . 2 ' V # x G#


# . # 2 ' 1-1 $ .&)# =&- #`G = - 8" ! ! ? % 2 ' .& "
8" x %
N. Razavi - AD course - 2006


n:
lgn + 1 :(&- % 2 # )# n G#)

N. Razavi - AD course - 2006

I) )
.&

Vi# n

6-1 C

D# 1

/ # j)
) # Vi# n
: 6 "
.n U " * R S2 &'
:5
. j)
) # Vi# n
Afib : 5
0

int fib ( int n)


{
if ( n <= 1)
return n ;
else
return fib ( n 1) + fib ( n - 2) ;
}
N. Razavi - AD course - 2006

fib(5)

fib(3)

fib(1)

fib(4)

fib(2)

fib(0)

fib(2)

fib(1)

fib(3)

fib(0)

fib(1)

fib(1)

fib(2)

n
0

15

25

fib(0)

#
.

# =&-

S" %

N. Razavi - AD course - 2006

S" : .

fib(2) ; Q" #

fib(1)

'

)
YQ"
#

S" 1Y

" k #( # &?# 2 = #&)# % n


% 5
: / A&% " k #( # %# % 2 # k % =&-

#&/ A&%

T(n) > 2 * T(n - 2) > 2n/2

when n 2

T(n) > 2 * T(n - 2)


> 2 * 2 * T(n - 4)
> 2 * 2 * 2 * T(n 6)

> 2 * 2 * * 2 * T(0) = 2n/2


% n/2
N. Razavi - AD course - 2006

m# 8 #

% 1 l#
$

1-1
:

T(2) = 3 > 2 = 22/2


T(3) = 5 > 2.83 P 23/2

:
T( m) > 2m/2

,2Gm<n

:
T( n) = T( n - 1) + T( n - 2) + 1
m# 8 # n
> 2(n 1) / 2 + 2(n 2) / 2 + 1
> 2(n 2) / 2 + 2(n 2) / 2 = 2 * 2(n 2) / 2 = 2n / 2
N. Razavi - AD course - 2006

oH

n
.&

/ #

j)

1
) # Vi# n

.n U " * R S2 &'
. j)

) # Vi# n

N. Razavi - AD course - 2006

: 6 "
:5

Afib2 : 5

0
0

int fib2 ( int n)


{
int f [0 . . n] ;
f [0] = 0 ;
if ( n > 0) {
f [1] = 1 ;
for ( i = 2; i <= n; i++)
f [i] = f [i -1] + f [i 2] ;
}
return f [n] ;
}
N. Razavi - AD course - 2006

N. Razavi - AD course - 2006

:5C
= , #$N

E" [ ? #&8" # # > " [) # C D #


.
[) # 5 C D #

: ") %
&) #

%l l

# #>"
(&E8" &
(b " &

.&) #

.&- % "
] ^"

D # $ S # p&5

%l l

%
8"

l " $"# '

#( # ^ '
D X% ) a" F )
D X% ) T ) " ) %
= #&)#
5= # !

C D # G& I ,
D
5 "# ,

= #&)# # /% 0 &- % " C D # G& I , A$" '


X"
5 ?
G& I , S" % ># " ( ) #
5= # !
. G [)
N. Razavi - AD course - 2006

G& I , $ S
C D # 1 q( "
! ? % (... 9 c Ab

C G " [)

>" ! ? % .
S"
T ) ") %A
) " ) % > % A a" # $8 "
A 8" ) 2# 1 ' # # 1 / #&/
S"
= #&)#

T(n) V ) % /% C D #
.&- % "

N. Razavi - AD course - 2006

G& I , $ S
= #&)# n >.

#%

#> .

= #&)# # 8d " )#( "

5C

D# #

(
) 1-1 C
( # . 2 ' F " S" ) 2-1 C
# . 2 ' #&/ An :
= #&)# Q
( r /
! " ) 3-1 C
(
) 5-1 C
5>
5 d #&/ An :
= #&)# Q ( 5 T " 9 c ) 4-1 C

:C

% &'

! ? %#

(n) s q #&/ ! ? % #

= #&)#

# X% 5 C

= #&)# A&- % p# G
C
N. Razavi - AD course - 2006

:; Q"
D#
D#
D#
D#
D#

D# # 0 %

D#
" (m) 5 ;

G#
#&/


(
(

Vi# n
Vi# n

G % A I) )
# A I) )

) 6-1 C
) 7-1 C

D#
D#

# %# %

n>

&

# %V W

% #&/ =

N. Razavi - AD course - 2006

= #&)#
lg n+ 1
!

. - " 8" S # E '


2# $ ' # % & j 5 C
# . ># " A& 5

% x E ' 8 ? # `G % 5
D# # #
5
# / %
" V )# n # #&8" 5 # # % #
. )
8" # C D #

N. Razavi - AD course - 2006


= #&)# # #&8" 5 # # %

2# $ '

/ #&/ /
. - " V )#

$ ' & )#

"

5 A9 )#
N. Razavi - AD course - 2006

8" :

! "
.& - % 2#
$

n
&5

" V )# n ) )

m# % #

2# $ ' C

D#

#&/ = T(n)

(n %# %
1= 5

= #&)# %)

8" #&/ :&- % # . > "


#
n= 5
8" #&/ :&- ) # .
N. Razavi - AD course - 2006

:; Q"
x G#
x G#
.

( 2-1 C D # ) # . 2 ' F " S"


(3-1 C D # ) r /
! "
( 4-1 C D # ) 5 T " 9 c
N. Razavi - AD course - 2006

sum % # . # E '

> ( # : 2# $ '

# . 2 ' #&/ An :

= #&)#

: G& I , $ S
T(n) = n
# % % C # for 8 ? # `G % n A& - % j 5 # . 8" #
. - " V )# % n 2# $ '
N. Razavi - AD course - 2006

.&) - ! " & %

T ( n) =

n 1

1=

i =1 j =i +1

S[i] S[j] 8" : 2# $ '


# . 2 ' #&/ An :
= #&)#
: G& I , $ S
n 1

ni

i =1

n(n 1)
= (n 1) + (n 2) + ... + 1 =
2
N. Razavi - AD course - 2006

!E

for 8 ?

0#
5>

T ( n) =

i =1 j =1 k =1

1=

9c
: 2# $ '
5 d #&/ An :
= #&)#
: G& I , $ S
n

n=

i =1 j =1

N. Razavi - AD course - 2006

n 2 = n3

i =1

!D

n
W(n) = T(n)

T(n)

(1-1 C

D#)

W(n) = n
N. Razavi - AD course - 2006

# # % # _#

2# $ ' C

A(n) = T(n) = D). A&- % -#


.

# CX" n = #&)# %

"

"

D#
/ #&/ <
.&5 " V )# n = #&)# %

% 1W ?# 9 )#
:
" / d"

V
(1-1 C

N. Razavi - AD course - 2006

T(n) G#

D#)

x % # . E'
8" : 2# $ '
# . 2 ' #&/ An :
= #&)#
: G& I , $ S
S x C
" n (1

#
(1/n)

#>

&-% "( " D 5S 2 '


# . X) " 5 x
; ?#

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

A(n) = k = k =
=
n n k =1
n
2
2
k =1
n

N. Razavi - AD course - 2006

!!

&- ) S
&- % p %# % S
#>

#.

X) "

" (2

; ?# C
"n
&-% "( " D 5S 2 '
; ?# AS x
v- %
(p/n)

p
p n(n + 1)
p p

A(n) = k + n(1 p ) =
+ n(1 p ) = n1 +
2
n
n
2 2
k =1
n

N. Razavi - AD course - 2006

!#

n
B(n) = T(n)

T(n)

(1-1 C

D#)

B(n) = 1
N. Razavi - AD course - 2006

!$

A(n)

W(n)

B(n)
N. Razavi - AD course - 2006

!.

f(n) = n
f(n) = n2
f(n) = lgn
f(n) = 3n2 + 4n
N. Razavi - AD course - 2006

!0

: - "
k #( # % 5 $ / #

$"# ' <

# # # 1 / #&/ :
( - , C j $% N) .&%
)
# # # 1 / #&/ :
.&% "

k #( # % 5 $ / #

.&- % CX" &)#

# #>"

2# $ '
%
5 $ /#

k #( # A
= #&)#
5 $ /#

k #( # A
= #&)#

" )"

G& I , b%

! c

% n # 2# $ ' #
#
"
# % C D # :; Q"
#
2# $ ' V )# > " G# .&5 " V )# % n2 # 2# $ ' "
= D). x&- % "
2# $ ' V )# > " %# % 1000
n2 * t > n * 1000t  n > 1000
.&- % " "

# X%

#C

D # 1000 # G (%

N. Razavi - AD course - 2006

5 n m# % <8

/
!2

100n n
0.01n2 n2
n
100n 0.01n2

0.01n2 > 100n $ n > 10,000

N. Razavi - AD course - 2006

#E

:& ) " A G& I , b%#


5n2 + 100 5n2 : yS" V
0.1n2 + n + 100 :$" V

&%
b%#
b%#

) " C D#
(lgn), (n), (nlgn), (n2), (n3), (2n) : G& I , 5

(n2) - V

N. Razavi - AD course - 2006

#D

N. Razavi - AD course - 2006

N. Razavi - AD course - 2006

:(Big O)

&- % " g(n) & ) " G& I , b%# # # ' " $" - - O(f(n))
&'
c & ) " Q" 8 8? % l
$N#&? X). #
5 #%
-# n N 5 # %
H % #
N & ) " U " * R S2
. g(n) c f(n) AC - %

N. Razavi - AD course - 2006

#!

# f(n) z (%

i# g(n)C G

" Ag(n) O(f(n)) G#


n2 + 10n O(n2) :& ) "

n2 + 10n G n2 + 10n2 = 11n2


N = 1, c = 11
&-%

) U% ES " c N # % %

.&5 " # N b%
%
.&- % " f(n) % 0 % $N#&? g(n) :z (% i#
N. Razavi - AD course - 2006

z (% i#
X- /"
##

5n2 O(n2)
5n2 G 5n2 N = 0, c = 5
T(n) = n(n-1)/2 O(n2)
n(n-1)/2 G n(n)/2=(1/2)n2
N = 0, c = 1/2
n2 O(n2 + 10n)
N = 10, c = 1
n O(n2)
N = 1, c = 1
N. Razavi - AD course - 2006

#$

&- % " g(n) & ) " G& I , b%# # # ' " $" - - (f(n))
&'
c & ) " Q" 8 8? % l
$N#&? X). #
5 #%
-# n N 5 # %
H % #
N & ) " U " * R S2
. g(n) c f(n) AC - %
g(n)
b%
.

C G " A g(n) (f(n)) G# .&- % " f(n) D"i# #


%

! "

# f(n) &% % $N#&? g(n) :

N. Razavi - AD course - 2006

#$
.&5

D"i#" #N

X- ] / -

#.

5n2 (n2)
5n2 1 x n2 N = 0, c = 1
n2 + 10n (n2)
n2 + 10n n2 N = 0, c = 1
T(n) = n(n-1)/2 (n2)
n 2 n -1 n/2
n(n-1)/2 (n/2)(n/2) = n2/4
N = 2, c =
n3 (n2)
N. Razavi - AD course - 2006

#0

&- % " g(n) & ) " G& I , b%# # # ' " $" - - (f(n))
R S2 &'
d c & ) " Q" 8 8? 5 % l X). #
5 #%
:C - % -# n N 5 # %
H % #
N&)" U" *

c f(n) g(n) d f(n)

N. Razavi - AD course - 2006

#2

(f(n)) = O(f(n)) (f(n))


g(n)
g(n) (f(n))

f(n)

N. Razavi - AD course - 2006

$E

(Exchange sort) T(n) = n(n-1)/2 (n2)


T(n) O(n2) , T(n) (n2)
T(n) O(n2) (n2)
T(n) (n2)

N. Razavi - AD course - 2006

$D

:(Small o) &' (

&- % " g(n) & ) " G& I , b%# # # ' " $" - - o(f(n))
&'
$N#&? A c & ) " Q" 8 8? % l 5 # # % X). #
5 #%
-# n N 5 # %
H % #
N & ) " U " * R S2
. g(n) c f(n) AC - %

g(n)
f(n)

g(n) o(f(n)) G#
f(n)
g(n)

N. Razavi - AD course - 2006

n o(n2)
:C - % -# n N 5 # % C % n
& %. #c> 0C
"n
n G cn2 1/c G n
A&- % c = 0.01 G# YQ" .C 9 ^ )# # N 1/c 5
#
#% %
.&- % 100
" G (% N & %

n o(5n) (proof by contradiction)


contradiction

& % = D). A&- % n o(5n) G# .&- % c = 1/6 C


"n
:C - % -# n N 5 # % &- % -#
n G (1/6)5n = (5/6)n
N

n o(5n)
N. Razavi - AD course - 2006

&

"

% l yN

#
$

g(n) o(f(n)) g(n) O(f(n)) - (f(n))


g(n) (f(n)) f(n) (g(n))
( G& I ,

) #( "

5 '

" %#

b%# 8% k ) # % G& I ,
b%
" = U # G& I ,
(1) A(n2) :YQ" AC
N. Razavi - AD course - 2006

G& I , b%#
.& " C 8
=

# ! *# "
>.
"
...
$!

g(n) O(f(n)) f(n) (g(n))


g(n) (f(n)) f(n) (g(n))
logan (logbn)

b >1 a > 1

b>a>0

an o(bn)
N. Razavi - AD course - 2006

$#

&%

) b%

5 # n!

:& D% [)

/ an o(n!) C # Aa > 0 5 # %
. #
] ^" G& I ,

##

(1), (lgn), (n), (nlgn), (n2), (nj), (nk),


(an), (bn), (n!), (nn)
. b > a > 1 k > j > 2 >.
G& I ,
|j
bN# G& I ,
g(n) G#
. g(n) o(f(n)) = D). A&- % f(n)
N. Razavi - AD course - 2006

$$

g(n) O(f(n))

d > 0

c 0

h(n)(f(n))

c g(n) + d h(n) (f(n))

N. Razavi - AD course - 2006

$.

(3 G} ) .&) G " # N G& I ,

D b%# V

(log4 n) = (lg n)

#
$

& j b% 5 A #
& j b% 5 # X%
b% 5 # X%
X)
) b% 5
lg n o(n)

n10 o(2n)

:C #

X)
) b%

D b% 5
5 # X% X)
.&- % "

2n o(n!)

; '# %

" H % 0. G}

5n + 3lg n + 10n lg n + 7n2 (n2)

.C # #

" #

p`? =

#= # 5A

N. Razavi - AD course - 2006

"

/
$0

3-1 rN 1

c
g(n)
= 0
lim
n
f(n)

g(n) ( f (n)), c > 0


g (n) o( f (n))
f ( n) o( g ( n)

N. Razavi - AD course - 2006

$2


7 A6 A3

14 A12 A10

24 A22 A21 A19

35 A34 A33 A32 A31 A29 A28 A26


N. Razavi - AD course - 2006

.E

You might also like