ΠΛΗ30 - ΜΑΘΗΜΑ 1.4

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 42

30

1:
1.4:

T(n)=aT(n/b)+f(n)

, 30, 1.4: T(n)=aT(n/b)+f(n)

.
.
1.
1. BinarySearch
2. MergeSort

2.

.
1. T(n)=aT(n/b)+f(n)
1.
2.

, 30, 1.4: T(n)=aT(n/b)+f(n)

.
:


T(n)=aT(n/b)+f(n)


T(n)=aT(n/b)+f(n)

MergeSort
BinarySearch

, 30, 1.4: T(n)=aT(n/b)+f(n)

.
1.

.

.
.

:
procedure recursive(n)
...
...
recursive(n-1)
...
...
end procedure

:
BinarySearch
MergeSort

, 30, 1.4: T(n)=aT(n/b)+f(n)

.
1.
1. BinarySearch (1. )
BinarySearch :
: A, x
:
,
x .
, 0.
:
:
x, .
x

x

, 30, 1.4: T(n)=aT(n/b)+f(n)

.
1.
1. BinarySearch (2. )
BinarySearch
procedure BinarySearch(A,x,start,finish)
if start>finish then
return 0
else
middle=(start+finish) div 2
if (x==A[middle]) then
return middle
else if (x<A[middle]) then
pos=BinarySearch(A,x,start,middle-1)
return pos
else if (x>middle) then
pos=BinarySearch(A,x,middle+1,finish)
return pos
end if
end if
end procedure

, 30, 1.4: T(n)=aT(n/b)+f(n)

.
1.
1. BinarySearch (3. )
11 :
1

10

11

12

13

14

15

11

13

17

21

23

27

31

33

37

41

43

: BinarySearch(A,11,1,15): middle=(1+15) div 2=8.

x<A[middle]

10

11

12

13

14

15

11

13

17

21

23

27

31

33

37

41

43

start

finish

: BinarySearch(A,11,1,7) : middle=(1+7) div 2=4

x>A[middle]

10

11

12

13

14

15

11

13

17

21

23

27

31

33

37

41

43

start

finish

: BinarySearch(A,11,5,7) : middle=(5+7) div 2=6

x<A[middle]

10

11

12

13

14

15

11

13

17

21

23

27

31

33

37

41

43

start

finish

: BinarySearch(A,11,5,5) : middle=(5+5) div 2=5

x=A[middle]

10

11

12

13

14

15

11

13

17

21

23

27

31

33

37

41

43

start=finish

, 30, 1.4: T(n)=aT(n/b)+f(n)

.
1.
1. BinarySearch (4. )
: x
.
T(n)=5 T(n)=(1).
: x :
T(n) n.
8
( 2
)
n
2 1
n
n, T(n), 2 1
T n2 1

1 .
n
T
(
n
)
=
T
1 + 9
:
2
n=0 1 ( )

, 30, 1.4: T(n)=aT(n/b)+f(n)

.
1.
1. BinarySearch (4. )
:
1,
n=0

T ( n) = n
T
1 + 9, n > 0
2

,
:
n2 1 n2
:
1,
n=0

n
T (n) =
T + 9, n > 0
2


: T (n) = (log n)

, 30, 1.4: T(n)=aT(n/b)+f(n)

10

.
1.
2. MergeSort (1. )
MergeSort :
: () A n
:
: :


, 30, 1.4: T(n)=aT(n/b)+f(n)

11

.
1.
2. MergeSort (2. )
MergeSort
procedure MergeSort(A,start, finish)
if |A|<=2 then

else
middle=(start+finish) div 2
A1=MergeSort(A,start,middle)
A2=MergeSort(A,middle+1,finish)
A=Merge(A1,A2)
end if
end procedure

2
.
2
.
Merge

, 30, 1.4: T(n)=aT(n/b)+f(n)

12

.
1.
2. MergeSort (2. )
Merge
:
procedure Merge(A,)
i=1, j=1, k=1
while (i<=n AND j<=m)
if (ai<bj) then
ck=ai ; i=i+1
else
ck=bj ; j=j+1
end if
k=k+1
end while
B C
return C
end procedure

||=n, |B|=m

, 30, 1.4: T(n)=aT(n/b)+f(n)

13

.
1.
2. MergeSort (3. )
MergeSort(,1,16)
1

10

11

12

13

14

15

16

18

11

20

22

19

14

10

13

, 30, 1.4: T(n)=aT(n/b)+f(n)

14

.
1.
2. MergeSort (3. )
MergeSort(,1,16)
1

10

11

12

13

14

15

16

18

11

20

22

19

14

10

13

10

11

12

13

14

15

16

18

11

20

22

19

14

10

13

, 30, 1.4: T(n)=aT(n/b)+f(n)

15

.
1.
2. MergeSort (3. )
(A,1,8)
1

10

11

12

13

14

15

16

18

11

20

22

19

14

10

13

10

11

12

13

14

15

16

18

11

20

22

19

14

10

13

18

11

20

, 30, 1.4: T(n)=aT(n/b)+f(n)

16

.
1.
2. MergeSort (3. )
(A,1,4)
1

10

11

12

13

14

15

16

18

11

20

22

19

14

10

13

10

11

12

13

14

15

16

18

11

20

22

19

14

10

13

18

11

20

18

11

, 30, 1.4: T(n)=aT(n/b)+f(n)

17

.
1.
2. MergeSort (3. )
(A,1,2):
1

10

11

12

13

14

15

16

18

11

20

22

19

14

10

13

10

11

12

13

14

15

16

18

11

20

22

19

14

10

13

18

11

20

18

11

, 30, 1.4: T(n)=aT(n/b)+f(n)

18

.
1.
2. MergeSort (3. )
(A,3,4):
1

10

11

12

13

14

15

16

18

11

20

22

19

14

10

13

10

11

12

13

14

15

16

18

11

20

22

19

14

10

13

18

11

20

18

11

, 30, 1.4: T(n)=aT(n/b)+f(n)

19

.
1.
2. MergeSort (3. )
(A,1,4):
1

10

11

12

13

14

15

16

18

11

20

22

19

14

10

13

10

11

12

13

14

15

16

18

11

20

22

19

14

10

13

11

18

20

18

11

, 30, 1.4: T(n)=aT(n/b)+f(n)

20

.
1.
2. MergeSort (3. )
(A,5,8)
1

10

11

12

13

14

15

16

18

11

20

22

19

14

10

13

10

11

12

13

14

15

16

18

11

20

22

19

14

10

13

11

18

20

18

11

20

, 30, 1.4: T(n)=aT(n/b)+f(n)

21

.
1.
2. MergeSort (3. )
(A,5,6):
1

10

11

12

13

14

15

16

18

11

20

22

19

14

10

13

10

11

12

13

14

15

16

18

11

20

22

19

14

10

13

11

18

20

18

11

20

, 30, 1.4: T(n)=aT(n/b)+f(n)

22

.
1.
2. MergeSort (3. )
(A,7,8):
1

10

11

12

13

14

15

16

18

11

20

22

19

14

10

13

10

11

12

13

14

15

16

18

11

20

22

19

14

10

13

11

18

20

18

11

20

, 30, 1.4: T(n)=aT(n/b)+f(n)

23

.
1.
2. MergeSort (3. )
(A,5,8):
1

10

11

12

13

14

15

16

18

11

20

22

19

14

10

13

10

11

12

13

14

15

16

18

11

20

22

19

14

10

13

11

18

20

18

11

20

, 30, 1.4: T(n)=aT(n/b)+f(n)

24

.
1.
2. MergeSort (3. )
(A,1,8):
1

10

11

12

13

14

15

16

18

11

20

22

19

14

10

13

10

11

12

13

14

15

16

11

18

20

22

19

14

10

13

11

18

20

18

11

20

, 30, 1.4: T(n)=aT(n/b)+f(n)

25

.
1.
2. MergeSort (3. )
(9,16)
1

10

11

12

13

14

15

16

18

11

20

22

19

14

10

13

10

11

12

13

14

15

16

11

18

20

10

13

14

19

22

10

11

12

13

14

15

16

11

18

20

14

19

22

10

13

18

11

10

11

12

20

19

22

14

13

14

15

16

10

13

, 30, 1.4: T(n)=aT(n/b)+f(n)

26

.
1.
2. MergeSort (3. )
(A,1,16):
1

10

11

12

13

14

15

16

10

11

13

14

18

19

20

22

10

11

12

13

14

15

16

11

18

20

10

13

14

19

22

10

11

12

13

14

15

16

11

18

20

14

19

22

10

13

18

11

10

11

12

20

19

22

14

13

14

15

16

10

13

, 30, 1.4: T(n)=aT(n/b)+f(n)

27

.
1.
2. MergeSort (4. )
Merge :

T ( n) = (n + m)
MergeSort :

(1),
n =1 n = 2

n
T (n) = n
T
+ T + (n),
n>2
2
2

n n n
=
2 2 2

(1),
n =1 n = 2

T ( n) = n
2T
+ (n),
n>2
2

. : (n)=(nlogn)

, 30, 1.4: T(n)=aT(n/b)+f(n)

28

.
1. T(n)=aT(n/b)+f(n)
T(n)=aT(n/b)+f(n)
:
,

,
(
).
:
,
.




( 2
3 ..)
.

, 30, 1.4: T(n)=aT(n/b)+f(n)

.
1. T(n)=aT(n/b)+f(n)
1.
(Master Theorem) :
:
n
T ( n) = aT + f ( n)
b

a1, b>1 , f(n) .


:
log a
) f (n) = O(n b ) >0, :

T (n) = n logb a

f (n) = (n logb a ) :

T (n) = n logb a log n

log a +
) f (n) = (n b ) >0
n
a f c f (n) c<1, :
b

T (n) = ( f (n) )

29

, 30, 1.4: T(n)=aT(n/b)+f(n)

30

.
1. T(n)=aT(n/b)+f(n)
1.
:
a,b f(n)
logba.
f(n) n log a :
b

f (n) < n log a


b

log
f (n) = n

f (n) > n
(!
2 )
logb a

, 30, 1.4: T(n)=aT(n/b)+f(n)

.
1. T(n)=aT(n/b)+f(n)
1. ( )

:
:
n
: T ( n) = 8T + n

:
: a = 8, b = 2,

f (n) = n, log b a = log 2 8 = 3

3
: f (n) = n = O(n ) >0

T ( n ) = ( n 3 )

31

, 30, 1.4: T(n)=aT(n/b)+f(n)

.
1. T(n)=aT(n/b)+f(n)
1. ( )

:
:
n
: T ( n) = 9T + n 2

:
: a = 9, b = 3,

f ( n) = n 2 , log b a = log 3 9 = 2

2
2
: f (n) = n = (n )

T (n) = (n 2 log n)

32

, 30, 1.4: T(n)=aT(n/b)+f(n)

33

.
1. T(n)=aT(n/b)+f(n)
1. ( )
2 ,
n
c>0 a f b c f (n).
c a, b f(n) f(n/b).
:
n 3
: T ( n) = 4T + n

:
: a = 4, b = 2,

f ( n) = n 3 , log b a = log 2 4 = 2

3
2+
: f (n) = n = (n ) >0

c<1 :
3

n3
4
1
n
n
n
3
af cf (n) 4 f cf ( n) 4 cn 4 3 cn 3 c c
2
8
2
b
2
2
c<1.
:

T ( n ) = ( n 3 )

, 30, 1.4: T(n)=aT(n/b)+f(n)

34

.
1. T(n)=aT(n/b)+f(n)
2.

T(n)=aT(n/b)+f(n),
:

1. 3 (
T (n) = ... T n3 + .... )
b

2. k (
T (n) = ... T nk + .... )
b

3. ( b k = n0 n0
k). .. n0=1
k=logbn
4. k 2.
5. .

, 30, 1.4: T(n)=aT(n/b)+f(n)

35

.
1. T(n)=aT(n/b)+f(n)
2. ( 1: 3 )
1 3
.
,

n
:
5T
+ n,
: T (n) = 3
1,

n > 1
n = 1

n
T (n) = 5T + n
3
n n
n
n
= 55T 2 + + n = 52 T 2 + 5 + n
3
3
3 3

n n
n
n
n
n
= 5 5T 3 + 2 + 5 + n = 53 T 3 + 52 2 + 5 + n =
3
3
3
3
3 3
2

n
T (n) = 5T + n
3
n
n n
T = 5T 2 +
3
3 3
n
n n
T 2 = 5T 3 + 2
3
3 3

, 30, 1.4: T(n)=aT(n/b)+f(n)

36

.
1. T(n)=aT(n/b)+f(n)
2. ( 2: k)
2 k
n
( T (n) = ... T b k + ....

()

n
n
n
= 53 T 3 + 5 2 2 + 5 + n =
3
3
3
= ... =
n
= 5k T k
3

n
k 1 n
2 n
+
...
+
5
+
5
+n
+5
k 1
2
3
3
3

, 30, 1.4: T(n)=aT(n/b)+f(n)

37

.
1. T(n)=aT(n/b)+f(n)
2. ( 3: k)
n
= n0
bk

(
k).

()


n
=1
3k
n = 3k
log 3 n = log 3 3k
log 3 n = k log 3 3
k = log 3 n

n0

, 30, 1.4: T(n)=aT(n/b)+f(n)

38

.
1. T(n)=aT(n/b)+f(n)
2. ( 4: k)
k
2.
.
()

k=log3n (n) :
n
n
n
n
T (n) = 5log 3 n T log3 n + 5log3 n 1 log3 n 1 + ... + 52 2 + 5 + n
3
3
3
3

n
n
n
= 5log3 n T (1) + 5log 3 n 1 log 3 n 1 + ... + 52 2 + 5 + n
3
3
3
n
n
n
= 5log3 n + 5log3 n 1 log3 n 1 + ... + 52 2 + 5 + n
3
3
3

, 30, 1.4: T(n)=aT(n/b)+f(n)

39

.
1. T(n)=aT(n/b)+f(n)
2. ( 5: )
.

: x = x 1
n +1

i =0

()

n
n
+
5
+n=
log 3 n 1
2
3
3
3
n
n
n

= 5log3 n + n + 5 + 52 2 + ... + 5log3 n 1 log3 n 1 =


3
3
3

i
log 3 n 1 i n
log 3 n 1 5
log 3 n
log 3 n
=5
+ i =0 5 i = 5
+ ni =0
=
i
3
3

T (n) = 5log3 n + 5log3 n 1

x 1

+ ... + 52

log n 1
5
=5
+ ni =0 = 5log3 n + ni =03 1,66i =
3
1,66log3 n 1+1 1 log3 n
log 3 n
=5
+n
=5
+ 1,5 n 1,66log3 n 1,5n
1,66 1
log 3 n

log 3 n 1

T (n) = 5log3 n + 1,5 n 1,66 log3 n 1,5n

, 30, 1.4: T(n)=aT(n/b)+f(n)

.
1

:
A)
B)
C)

n
T (n) = 8T + n 2
2
n
T (n) = 8T + n 3
2
n 4
T (n) = 8T + n
2

40

, 30, 1.4: T(n)=aT(n/b)+f(n)

.
2
:
A)
B)

n
T (n) = 5T + n 2
2
n
T (n) = 5T + n 3
2

41

, 30, 1.4: T(n)=aT(n/b)+f(n)

.
3
:

n
6T
+ n,
A) T (n) = 2
1,
n 2
4T
+n ,
B) T (n) = 3
1,

n > 1
n = 1
n > 1
n = 1

42

You might also like