You are on page 1of 70

E-mail: razavi@Comp.iust.ac.

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