Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Полезная методичка

.pdf
Скачиваний:
82
Добавлен:
01.04.2014
Размер:
1.09 Mб
Скачать

à ë 1

РЕКУРРЕНТН Е УРАВНЕНИ

1.1.ПОН ТИЕ РЕКУРРЕНТНОГО УРАВНЕНИ

Для н которой чи по по ч й мы у м поним ть ту -чу, но с м ньшим числом п р м тро , или чу с т м числом п р м тро , но при этом хотя ы о ин и п р м тро им т м ньшн ч ни . О ним и осно ных спосо о р ш ния ч я ля тся их с ни к р ш нию т ко о н ор по ч, что ы, исхо я и р ш - ний по ч, ыло о мо но получить р ш ни исхо ной чи. Н й нный спосо с ния исхо ной чи к р ш нию н которых по ч мо т ыть пис н и соотнош ний, которыхн ч ни функции, соот тст ующ й исхо ной ч , ыр тся ч р н ч ния функций, соот тст ующих по ч м.

Соотнош ния, с я ы ющи о ни и т функции, но с р лич- ными р ум нт ми, н ы ются р курр нтными соотнош ниями, или р курр нтными ур н ниями. Р курр нтно ур н - ни н ы тся пр ильным, сли н ч ния р ум нто у лю ой и функций пр ой ч сти соотнош ния м ньш н ч ния р у- м нто у лю ой и функций л ой ч сти соотнош ния; сли р у- м нто н сколько, то ост точно ум ньш ни о но о и них.

Ïðèì ð 1.

T (n) = T(n 1) + T (n 2) пр ильно р курр нтно ур н ни ;

T (n) = T (n 1) + T (n+ 1) н пр ильно р курр нтно ур н ни .

Пр ильно р курр нтно ур н ни н ы тся полным, сли оно опр л но ля с х опустимых н ч ний р ум нто .

Ïðèì ð 2.

T (i) = T (i 1) + ai; i > 1; T (1) = a1:

11

При м прим ры р курр нтных ур н ний.

1.Í õî íè ì êñèì ëüíî î ýë ì íò è n ýë ì íòî ì ññè-:

T(n) = T (n 1) + C = (T (n 2) + C) + C = = C (n 1); T (1) = 0;

C = O(1):

2.Í õî íè í è îëüø î è í èì íüø î è n ýë ì íòî ì ñ- ñè :

T (n) = 1; ïðè n = 2;

T (n) = 2T n2 + 2; ïðè n > 2:

1.2. СПОСОБ РЕ ЕНИ РЕКУРРЕНТН Х УРАВНЕНИЙ

Р ссмотрим осно ны м то ы р ш ния р курр нтных ур н ний:

1.Ì òî èò ð öèé.

2.По ст но очный м то .

3.М то р курси ных р ь .

Ì òî èò ð öèé

Д нный м то ключ тся том, что нно р курр нтно ур н ни р списы тся ч р мно ст о ру их и т м поисхо ит суммиро ни получ нно о ыр ния.

Ïðèì ð 1.

Í éòè ð ø íè ëÿ ð êóð íòíî î óð í íèÿ

T (n) = 2T n2 + 5n2 T (1) = 7

ì òî îì èò ð öèé.

12

 

 

Для простоты мы пр поло им, что

 

n ÿ ëÿ òñÿ ñò ï íüþ 2 ,

ò. .

n = 2k .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

2

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

n

 

 

 

 

 

T (n) = 2T

 

2

 

+ 5n = 2(2T

 

4

 

+ 5

 

2

 

 

) + 5n = 2(2(2T

 

8

 

+

+5

 

n

2

)+5

n

 

2

 

 

 

 

2

= 2

k

T

(1)+2

k

 

1

5

 

 

 

n

 

 

 

2

+ +2 5

 

n

2

 

 

 

2

:

4

 

2

 

 

 

)+5n

 

 

 

 

 

 

2k

 

1

 

 

 

2

 

+5n

 

 

Ïîñë í

ûð íè

 

 

ìî ò

ûòü ïð ñò ë íî

ñë óþù é

суммой:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k 1 n2

 

 

 

 

 

 

 

 

 

 

 

k 1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7n + 5 Xi=0 2i = 7n + 5n2 Xi=0

 

:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2i

 

 

 

 

 

 

 

 

 

 

 

 

Учиты я, что

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

1

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Xi=1

 

 

= 1

 

 

 

;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2i

 

2n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

получим

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

2

 

 

 

 

 

 

 

2

 

 

 

 

T (n) = 7n + 5n

 

 

2

2

k 1

 

= 7n + 5n

 

 

 

2

 

n

= 7n + 10n

 

 

 

10n = 10n2

 

 

3n:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Т ким о р ом мы получили точно р ш ни р курр нтно о

óð í íèÿ.

Ïðèì ð 2.

Í éòè ð ø íè ëÿ ð êóð íòíî î óð í íèÿ

T (n) = aT (n 1) + bn; 0 < a < 1; b > 0; n > 1

T (1) = 0

ì òî îì èò ð öèé.

Ð ñïèø ì ííî ð êóð íòíî óð í íè ÷ ð ìíî ñò î ðó-èõ:

 

T (n) = aT(n

 

1) + bn = a (aT(n

 

 

2) + b(n

 

1)) + bn = bn +

 

 

 

 

2

 

 

2) = bn + ab(n

 

 

2

b(n

 

3

 

3) =

+ ab(n 1) + a T

(n

 

 

1) + a

 

2) + a T(n

 

= b

n 2

ai(n i)

 

 

n

 

2

ai:

 

 

 

 

 

 

 

 

P

 

 

 

bn

P

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i=0

 

 

 

 

i=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ò ê ê ê 0

< a <

1 , òî ó û þù ÿ îì òðè÷ ñê ÿ ïðî ð ññèÿ

мо т ыть о р нич н конст нтой, н исящ й от n , ò. .

 

 

 

 

 

 

 

 

 

 

 

 

n 2

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Xi=0 ai <

 

:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 a

 

 

 

 

 

 

 

Сл о т льно, тру о мкость л оритм сть O(n) и л оритм им т лин йную сло ность.

13

cn log2 n 2cn2 log2 n2 + n cn log2 n cn(log2 n 1) + n
cn log2 n cn log2 n cn + n

По ст но очный м то

Ïðèì ð 1.

Ïð ïîëî èì, ÷òî í î õî èìî ð øèòü ñë óþù ð êóðð íòíî

óð í íè :

T(n) = 2T n2 + n:

Д нный м то ключ тся том, что м то ом по ор н хо-ится т к я функция g(n) , при по ст но к которой р курр нтно ур н ни м сто T(n) получ тся рно н р нст о

g(n) 2g n2 + n:

Функция ол н ыть н им ньш о о мо но о поря к .

По ст им функцию g(n) = cn ýòî óð í íè cn 2 cn2 + n:

Получ м ло но н р нст о:

cn cn + n:

По ст им т п рь функцию g(n) = cn2 ýòî óð í íè cn2 2c n2 2 + n:

Получ м н р нст о:

cn2 cn22 + n

èëè

c > n2 ;

которо рно ля c 2 .

Сл о т льно, функция g(n) = cn2 я ля тся р ш ни м р с- см три мо о р курр нтно о ур н ния и тру о мкость л орит- м н пр ыш т O(n2) . Попыт мся т п рь ум ньшить поря ок м орирующ й функции. Пусть g(n) = cn log2 n , òî

14

cn n рно н р нст о. Сл о т льно, тру о мкость

л оритм по кр йн й м р O (n log2 n) .

Ïðèì ð 2.

Ð øèòü ì òî îì ïî ñò íî îê ñë óþù ð êóðð íòíî óð í -

íè :

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

T(n) = 2T 2 + b:

 

 

 

 

 

 

Пусть g(n) = cn , òî í ð íñò î cn

 

cn + b ëî íî.

 

2

2

 

n

 

2

 

 

cn2

 

Ïóñòü g(n) = cn

 

, òî cn

2c 2

 

 

+ b

è

2

b ðíî ëÿ

n > (2b=c) . Сл о т льно, тру о мкость л оритм н пр ы-

ø òpO(n2) . Попыт тся улучшить.

 

 

 

 

 

 

 

 

 

Пусть g(n) = c1n + c2 , òî c1n + c2

2(c1

n

+ c2) + b: Åñëè

2

c1n + c2 c1n + 2c2 + b , òî c2

b . Ñë î ò ëüíî, c2 := b .

Поэтому тру о мкость л оритм сть O(n) .

 

 

 

 

 

М то р курси ных р ь

Д нный м то ключ тся том, что по и у р курр нтно о ур н ния строится р о и н я структур :

1.Н п р ой ит р ции формиру тся р о сл ующ о и :

кор нь р носится с о о ный чл н исхо но о р - курр нтно о ур н ния;

сыно ьями это о корня я ляются р курр нтны функции пр ой ч сти исхо но о соотнош ния.

2.Н посл ующих ит р циях ля к о о и сыно й строитсян ло ичн я р о и н я структур .

Проц сс постро ния р о и ной структуры к нчи тся, ко-

с н ч ния исячих ршин р ны T (1) , при этом н ч ниянутр нних ршин р сть н которы я ны функции (н р - курр нтны ) от р м р чи. З м тим, что исячи ршины постро нной р о и ной структуры н о я т льно о ин ко о у - л ны от корня.

Посл постро ния р суммиро ни н ч ний ршин х прои о ится сл ующим о р ом:

15

T ( 27n )

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

3

Æ

 

 

 

 

 

 

A

 

 

 

 

 

 

 

 

 

 

 

A

 

n

 

 

 

 

 

2n

 

 

 

 

 

 

 

 

 

9Æ

 

 

 

 

 

9Æ

 

 

 

E

 

 

 

 

e

 

 

 

EE

 

 

 

 

e

 

 

 

 

 

 

 

e

T (

2n

)

T (

2n

)

 

T (

4n

)

 

 

 

 

27

 

 

27

 

 

27

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

PP

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ÆPPP

 

 

 

 

 

 

 

 

 

P

2n

 

 

 

 

 

 

 

 

 

 

 

 

 

3

Æ

 

 

 

 

 

 

 

 

 

 

S

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2n

 

 

 

 

 

 

 

 

4n

 

 

 

 

 

 

 

9Æ

 

 

 

 

 

9Æ

 

 

 

 

E

 

 

 

 

 

C

 

 

 

 

EE

 

 

 

 

 

CC

 

T (

2n

) T (

4n

)

T (

4n

)

T (

8n

)

 

 

 

 

 

 

27

 

27

 

 

 

27

 

27

 

Рис. 1.2.1.: М то р курси ных р ь

1.Опр ляются суммы н ч ний ля р ноу л нных от корняршин (эти ршины н хо ятся н о ном уро н ).

2.Í õî èòñÿ ì êñèì ëüí ÿ ñóìì ïî óðî íÿì.

3.О щ я тру о мкость л оритм о р нич н с рху о ним и сл ующих н ч ний:

м ксим льной суммой, умно нной н колич ст о уро - н й;

суммой, получ нной р ульт т суммиро ния суммн ч ний по уро ням.

З м тим, что колич ст о уро н й ля р сть O(log2 n) .

Ïðèì ð 1.

Ïð ïîëî èì, ÷òî í î õî èìî ð øèòü ñë óþù ð êóðð íòíî óð í íè :

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

3 3

Н рис.1.2.1. и о р н р о и н я структур ля р ссм три -мо о прим р . Оц ним тру о мкость л оритм . Т к к к сумм

16

1920 n ,

n

1920 n

1920 2 n

T ( 125n )

 

 

n

 

 

 

 

5

Æ

 

 

A

 

 

 

 

A

n

 

 

3n

 

 

 

 

25Æ

 

20Æ

 

E

 

 

e

 

E

 

 

e

 

E

 

 

e

T ( 1003n ) T ( 1003n ) T ( 980n )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n PP

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ÆPPP

 

 

 

 

 

 

 

 

P

3n

 

 

 

 

 

 

 

 

 

 

 

4

Æ

 

 

 

 

 

 

 

 

 

S

 

 

 

 

 

 

 

 

 

 

 

 

 

S

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3n

 

 

 

 

 

 

 

 

9n

 

 

 

 

 

 

20Æ

 

 

 

 

 

16Æ

 

 

 

E

 

 

 

 

 

C

 

 

 

 

EE

 

 

 

 

 

CC

T (

3n

) T (

9n

)

T (

9n

)

T (

27n

)

 

 

 

 

100

 

80

 

 

 

80

 

64

 

Рис. 1.2.2.: М то р курси ных р ь

í ÷ íèé í ê îì óðî í í ïð îñõî èò n и колич ст о уро - н й сть log 32 n = C log2 n , òî

T (n) = T n + T 2n + n Cn log2 n

3 3

и тру о мкость л оритм O(n log2 n) .

Ïðèì ð 2.

Ïð ïîëî èì, ÷òî í ì í î õî èìî ð øèòü ñë óþù ð êóð- ð íòíî óð í íè :

T(n) = T n + T 3n + n:

5 4

Н рис.1.2.2. и о р н р о и н я структур ля р ссм три -мо о прим р . Оц ним тру о мкость л оритм . Сумм н ч ний н нул ом уро н сть n , í ï ð îì óðî í í ïð îñõî èò

н тором н пр осхо ит 1920 2 n и т. . Колич ст о уро н й сть log 43 n . Суммиро ни сумм н ч ний по уро ням при о ит н с к

îì òðè÷ ñêîé ïðî ð ññèè ñî í ì í ò ë ì q = 1920 < 1 , è ò ê ê ê ñóìì ñêîí ÷íî ñõî ÿù éñÿ îì òðè÷ ñêîé ïðî ð ññèè ð -

17

н конст нт , то

n

3n

+ n < n(1 + q + q2 + + q

log

4

n

 

T (n) = T 5

+ T 4

3

 

) C1n:

Тру о мкость л оритм O(n) .

1.3. ТЕОРЕМА О РЕ ЕНИИ РЕКУРРЕНТНОГО УРАВНЕНИ

Т ор м 1.3.1. Пусть a; b; c; k н которы конст нты. То

ð ø íè ð êóðð íòíî î óð í íèÿ

T (n) = aT(n=b) + cnk; T(1) = c

èì ò è :

T (n) = O(nlogb a); ñëè a > bk;

T (n) = O(nk log n); ñëè a = bk;

T (n) = O(nk); ñëè a < bk:

Äîê ò ëüñò î.

Б о р нич ния о щности у м пр пол ть, что n = bm(m = logb n) .

T(n) =

=

=

=

Îòì òèì, ÷òî

a

aT(n=b2) + c(n=b)k

+ cnk

 

m

 

 

m

1

m 1

)

k

+

a T (1) + a

 

 

c(n=b

 

 

 

m

 

 

 

 

 

 

 

 

 

c

i=0 am ibik

 

 

 

 

 

cam

m

(bk=a)i:

 

 

 

 

 

P Pi=0

 

 

 

 

 

 

 

 

+ ac(n=b)k + cnk

(1.1)

am = alogb n = nlogb a:

Сумм , фи урирующ я (1.1) я ля тся ом трич ской про р сси-й, н ч ни которой исит от р цион льно о числ r = bk=a . Р ссмотрим три о мо ных случ я:

1.Пусть r < 1 . Учиты я, что сумм скон чно схо ящ йсяом трич ской про р ссии р н конст нт , то сть

1

1

 

 

Xi=0 ai =

 

 

ëÿ 0 < a < 1;

1 a

 

18

 

 

получим, что

m

1

 

Xi=0 ri <

я ля тся конст нтой:

 

1 r

Ñë î ò ëüíî,

 

 

T(n) = O(am) = O(nlogb a):

2. Пусть r = 1 . Ò ê ê ê r = bk=a , òî a = bk è am = bmk = nk; (bm = n):

Ê òîìó

m

X ri = m + 1 = (m = logb n) = logb n + 1:

i=0

Ñë î ò ëüíî,

m

 

 

 

c

 

 

cam

ri = cnk(log

 

n + 1) =

 

nk log n + cnk

b

 

Xi=0

 

 

log b

 

 

 

 

 

è

T (n) = O(nk log n):

3.Пусть r > 1 . Учиты я н р нст о ля суммы ом трич - ской про р ссии

n

 

an+1 1

 

 

 

Xi=0

ai =

 

 

ëÿ a > 1;

 

 

a 1

 

получим, что

 

 

 

 

 

 

m

 

 

rm+1 1

 

 

Xi=0

ri =

 

= O(rm):

 

 

r 1

 

Ò êèì î ð îì,

T (n) = O(amrm) = O(am(bk=a)m) = O(bkm) = O(nk):

2

З м ч ни 1.3.1. Н сло но пок ть, что т ор м ссимптотик O мо т ыть м н н ссимптотикой .

19

1.4.ПРИМЕР

Ïðèì ð 1.

Вычислить н ч ни ыр ния y = 2n .

При м три простых л оритм р ш ния пост л нной чи и оц ним их тру о мкость, построи ля к о о и них р курр нтно ур н ни .

Ал оритм 1

F := 1;

for i := 1 to n do

F := F + F;

Ð êóðð íòíî óð í íè : T (1) = 2; T(n) = T (n 1) + 1; n > 1: Р ш я это ур н ни м то ом ит р ций, получ м

T (n) = T (n 1) + 1 = T (n 2) + 2 = = T (1) + (n 1) = n + 1;

ò. . T (n) = (n) . Ò ê ê ê n = 2l , то тру о мкость л оритм 1сть (2l) , т. . л оритм 1 я ля тся экспон нци льным.

Ал оритм 2

function F(k:byte):word; begin

if k = 1 then F := 2; else

if k òíî then F := F (k=2) F (k=2) else F := F((k 1)=2) F((k 1)=2) 2;

end;

Ð êóðð íòíî óð í íè : T (1) = 2; T (n) = T (n=2)+T (n=2)+2; n > > 1: Сл мо , р но 2 р курр нтном ур н нии, о о н ч т

êîì í û óìíî íèÿ ûð íèè F := F ((k 1)=2) F ((k

1)=2) 2: По т ор м о р ш нии р курр нтных ур н ний T (n) = = (nlogb a) = (n) . Ò ê ê ê n = 2l , то тру о мкость л оритм 2

ñòü (2l) , т. . л оритм 2 т к я ля тся экспон нци льным.

20

Соседние файлы в предмете Структуры и алгоритмы обработки данных