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

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

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

 

 

 

 

 

 

 

 

 

 

1

HH

 

 

 

 

 

 

ÆH

 

 

 

 

 

 

3

 

 

)

 

 

 

jH

 

 

 

2

 

 

 

 

Æ

 

 

Æ@

 

 

 

 

 

 

 

 

 

Z

 

 

 

R@

8 Z~

9

4

Æ

 

5

 

Æ Æ@

 

 

Æ

 

 

 

 

 

 

@

@R 10

11

 

 

 

 

 

 

@

 

 

 

@R

 

 

 

 

 

 

 

 

 

6Æ

 

7Æ Æ

Æ

 

 

 

Ðèñ. 4.3.6.:

 

 

 

при нном постоянном

n îò n î 2n ðøèí. Ñë î ò ëüíî,

ëÿ ð ñ N эл м нт ми и м ксим льным р м ром стр ницы

2n ðøèí ñ ìîì õó ø ì ñëó÷ ïîòð ó òñÿ O(logn N) о р - щ ний к стр ниц м, которы сост ляют осно ную ч сть тр т н

поиск.

Б- р ом н ы тся сильно т ящ ся р о, которо у о-л т оря т сл ующим с ойст м

1.Ê ÿ ñòð íèö ñî ð èò í îë 2n ýë ì íòî (êëþ÷ é).

2.Ê ÿ ñòð íèö êðîì êîðí îé ñî ð èò í ì í n ýë - ì íòî .

3.Ê ÿ ñòð íèö ëè î ïð ñò ëÿ ò ñî îé ëèñò (í èì ò ïî-

томко ), ли о им т m + 1 потомко , m число ключ й н этой стр ниц .

4. Вс стр ницы листья н хо ятся н о ном уро н .

В личин n í û òñÿ ïîðÿ êîì Á- ð .

Н рис.4.3.7. пр ст л но Б- р о торо о поря к с тр мя уро нями ( с стр ницы со р т 2,3 или 4 эл м нт исключ ни-м корн ой стр ницы, которой мо т н хо иться инст нный эл м нт).

71

 

 

 

 

 

 

 

25

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

H

HHHHH

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

)

 

 

 

 

 

 

 

 

 

 

 

jH

 

 

 

 

 

 

 

10,20

 

 

 

 

 

 

 

 

 

 

 

30,40

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

HH

HHH

 

 

 

 

 

 

Q

QQ

 

 

 

 

 

 

 

 

 

 

 

 

?

 

Hj

 

 

 

 

 

 

 

 

 

 

 

Qs

2,5,7,8

 

13,14,15,18

 

22,24

 

 

26,27,28

 

32,35,38

 

 

41,42,45,46

Ðèñ. 4.3.7.: Á- ð î òîðî î ïîðÿ ê ñ òð ìÿ óðî íÿìè.

4.4.МНОЖЕСТВА

"Мно ст о сть мно о , мыслимо н ми к к ино "(Г ор К нтор (1845-1918) о ин и со т л й т ории мно ст ).

Осно ными о ыми оп р циями н мно ст ми о ычно счит ются сл ующи :

1.Прин л ность эл м нт мно ст у.

2.О ъ ин ни н п р с к ющихся мно ст .

О ъ м п мяти, н о хо имый ля пр ст л ния мно ст , пропорцион л н колич ст у эл м нто н м. Вр мя, н о хо имо ляыполн ния о ых оп р ций, исит от структуры нных, ы-р нной ля р ли ции мно ст .

4.4.1Пр ст л ни мно ст с помощью списко

О ним и спосо о ния мно ст я ля тся м сси .

Пусть U н которо о о мно ст о, состоящ и n эл - м нто . Лин йно упоря очим это мно ст о. То лю о мно - ст о S U ìî íî îïð ëèòü ì ññè îì R р м рности n , у которо о R[i] -ый эл м нт р н нутр нн му им ни мно ст , которому прин л ит i -ûé ýë ì íò ìíî ñò U .

Т ко пр ст л ни у о но т м, что мо но опр лить прин - л ность i -î î ýë ì íò ìíî ñò ó ð ìÿ O(1) .

72

Оп р ция о ъ ин ния ух н п р с к ющихся мно ст A è B с получ ни м но о о мно ст C òð ó ò O(n) р м ни, т к к к ля это о н о посл о т льно просмотр ть м сси R è - ì íèòü ê ûé î ýë ì íò, ð íûé A èëè B , í C .

Если н н ч льном ш им тся n о ноэл м нтных мно ст , то н ними мо но ыполнить n 1 оп р цию о ъ ин ния, что-ы получить n -эл м нтно мно ст о. О щ я тру о мкость этих оп р ций (при опис нном ыш спосо р ли ции) р н O(n2) .

Н ост ток это о пр ст л ния ключ тся том, что р ссмотр нны о ы оп р ции н мно ст ми ним ют р мя, пропорцион льно мощности ы, н мощности р ссм три мых мно ст . По о но этому п мять, тр у м я ля хр н ния мно - ст S , пропорцион льн мощности ы.

Если ля р ли ции мно ст исполь у тся списко я структур , то оп р ция прин л ности н которо о эл м нт мно ст у тр у т р м ни O(n) , о ъ ин ния ух н п р с к ющихся мно-ст A è B òð ó ò ð ìÿ O(1) , n 1 îï ð öèÿ î ú èí íèÿ n о ноэл м нтных мно ст тр у т р мя O(n) .

Т ким о р ом п р о и пр ст л ний по оля т о ну и оп - р ций ыполнять ыстр , торо ру ую. О н ко н пр ктик ч сто н о хо имо ыполнять посл о т льность оп р ций. Пр - поло им, что ля р оты со мно ст ми н м н о хо имо ыполнять о оп р ции: НАЙТИ и ОБ ЕДИНИТ , прич м к ый р о ъ иняются только н п р с к ющи ся мно ст , эл м нты которых мо но счит ть ц лыми числ ми от 1 î n . Опиш м структуру нных, л о ря которой проц ур НАЙТИ(i) тр у т р - мя O(1) и проц ур ОБ ЕДИНИТ n 1 í ï ð ñ ê þù ñÿ ìíî ñò î òð ó ò ð ìÿ O(n log n) . Для это о н о хо имо поль-о ться сл ующими пр ил ми.

1.Сущ ст уют нутр нни им н , по которыми мно ст и -стны нутри про р ммы (они и ны только нутри про-р ммы и н ны поль о т лю), и н шни им н , которы с м поль о т ль прис и т мно ст м и которы я ляются оп р н ми ля оп р ции ОБ ЕДИНИТ . Внутр нни и

í øíè èì í ìíî ñò ìî óò í ñî ï òü.  ê ÷ ñò èì í ìíî ñò û èð þòñÿ, ê ê ïð èëî, ö ëû ÷èñë îò 1 î n è ïð ïîë òñÿ, ÷òî íèê êè ìíî ñò î èí è òîò

73

ìîì íò í í íû î èí êî î.

Ïð ïîëî èì, ÷òî ð ññì òðè þòñÿ ñë óþùè ìíî ñò :

1={1,3,5,7}

2={2,4,8}

3={6},

1,2,3 í øíè èì í ìíî ñò .

Пусть р ссмотр нны ыш мно ст им ют сл ующи нутр нни им н 1,2,3:

{1,3,5,7}=2 {2,4,8}=3 {6}=1.

Òî î íîì ðíûé ì ññè in_name , р м рность которо о р н колич ст у р ссм три мых мно ст , уст н ли т с я ь м у им н ми:

í øí èìÿ

1

2

3

in_name

2

3

1

 

 

 

 

ñü in_name[i] ñòü íóòð íí èìÿ ìíî ñò ñ í øíèì èì í ì i .

2. Мно ст хр нятся и списко ой структуры, р ли о-нной и о ном рных м сси о R è next р м рности n ,

i

1

2

3

4

5

6

7

8

 

 

 

 

 

 

 

 

 

R

2

3

2

3

2

1

2

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

next

3

4

5

8

7

0

0

0

 

 

 

 

 

 

 

 

 

R(i) нутр нн имя мно ст , которому прин л -ит эл м нт i ; next[i] н ч ни сл ующ о эл м нт то омно ст , которому прин л л эл м нт i .

74

3. При о ъ ин нии мно ст список, соот тст ующий м нь- ш му мно ст у, о ля тся п р списком, соот тст ующим ольш му мно ст у. При этом и м няются нутр н- ни им н только у эл м нто м ньш о списк . Для ыпол- н ния нных йст ий исполь уются о ном рны м сси ы first_el; size; out_name , р м рность которых р н колич - ст у р ссм три мых мно ст .

íóòð.èìÿ

1

2

3

 

 

 

 

first_el

6

1

2

size

1

4

3

out_name

3

1

2

 

 

 

 

Ç ñü first_el[i] н ч ни п р о о эл м нт списк , соот-тст ующ о мно ст у мощности size[i] ñ íóòð ííèì èì - í ì i è í øíèì èì í ì out_name[i] .

Опиш м р ли цию осно ных оп р ций: НАЙТИ( i ) и ОБ Е- ДИНИТ ( I; J; K ).

1.НАЙТИ( i ) : out_name[R[i]] н шн имя мно ст , которому прин л ит эл м нт i . Тру о мкость O(1) .

2.ОБ ЕДИНИТ ( I; J; K ):

(a) Îïð ëÿ ì íóòð ííè èì í ìíî ñò

in_I := in_name[I]; in_J := in_name[J];

(b)Ср ни м р м ры мно ст , что ы опр лить м ньший список.

size_I := size[in_I]; size_J := size[in_J];

max_name := in_I; íóòð. èìÿ îëüø î ìíî ñò ; min_name := in_J; íóòð. èìÿ ì íüø î ìíî ñò ; if size_I size_J then

change( max_name; min_name );

75

(c)Прохо им список эл м нто м ньш о мно ст и и м - ня м нутр нн имя м ньш о мно ст н нутр нн имя ольш о мно ст . При этом н хо им р с посл н о эл м нт м ньш о мно ст ( last ).

el := first_el[min_name]

while el =6 0 do

f [ ] := ;

R el max_name last := el;

el := next[el] ;

g

(d)До ля м список эл м нто м ньш о мно ст п р списком эл м нто ольш о мно ст . то н тру но с л ть, н я посл ний эл м нт м ньш о списк . При этом, ля получ нно о р ульт т слияния списк , опр -ляются о н ч ло и колич ст о эл м нто .

next[last] := first_el[max_name];

first_el[max_name] := first_el[min_name]; size[max_name] := size[max_name] + size[min_name];

(e)Прис и м получ нному мно ст у н шн имя K . Ïðè ýòîì íóòð ííè èì í ñò ðûõ í øíèõ èì í I; J счит ются н опр л нными.

out_name[max_name] := K; in_name[K] := max_name;

Для р ссмотр нно о ыш прим р , ыполн ни оп р ции ОБ ЕДИНИТ ( 1; 2; 4 ) при т к сл ующим р ульт т м:

i

1

2

 

3

 

4

5

6

7

8

R

2

2

 

2

 

2

2

1

2

2

 

 

 

 

 

 

 

 

 

 

 

 

next

3

4

 

5

 

8

7

0

0

1

 

 

 

 

 

 

 

 

 

í øí èìÿ

 

1

2

3

4

 

 

 

in_name

 

 

-

-

1

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

76

 

 

 

 

íóòð.èìÿ

1

2

3

4

first_el

6

2

-

-

 

 

 

 

 

size

1

7

-

-

 

 

 

 

 

out_name

3

4

-

-

 

 

 

 

 

Для оц нки сумм рной тру о мкости ыполн ния с х о мо - ных о ъ ин ний мно ст (м ксимум n 1 ), оц ним м ксим льно колич ст о п р м щ ний от льно о эл м нт (это соот тст у-т и м н нию о нутр нн о им ни). Ко эл м нт п р м щ т- ся, то он с ок ы тся мно ст , мощность которо о по кр йн й м р р ольш , ч м мощность то о мно ст ,котором он н хо ился о ыполн ния оп р ции. Сл о т ль-

но, о щ колич ст о п р м щ ний лю о о эл м нт н пр осхо-ит log2 n . Поэтому, ля n эл м нто о щ сумм рно колич ст о

ï ð ì ù íèé í ïð îñõî èò O(n log2 n) . Кром то о, н к ом ш ыполняются ру и оп р ции (слияни списко , поиск им н,

опр л ни р м р мно ст ) сумм рн я тру о мкость которыхсть личин Cn . Поэтому, тру о мкость опис нно о л оритмсть O(n log2 n) .

4.4.2Пр ст л ни мно ст с помощью корн ых - р ь

Пр поло им, что н н ор н п р с к ющихся мно ст Ri , эл м нты которых пр ст л ны ц лыми числ ми от 1 о n . Опи- ш м структуру нных, котор я по оля т ыполнить O(n) оп - р ций ОБ ЕДИНИТ ( Ri; Rj ) и НАЙТИ( i ) почти лин йнор мя.

Äëÿ õð í íèÿ ìíî ñò Ri ы р м т кую структуру нных, к к н ор корн ых р ь (л с). Кор нь р у м исполь о-ть ля хр н ния им ни мно ст Ri . Корн ы р ья пр - ст ляются к нонич ском и ( P [i] от ц ршины i ).

Ал оритм поиск мно ст

Функция НАЙТИ( i ) поиск мно ст , которому прин л ит

ýë ì íò i р ли у тся сл ующим о р ом. Фиксиру м у л i и по р курр нтной формул i; P [i]; P [P [i]] : : : îñóù ñò ëÿ ì è -

ни о корня. Функции НАЙТИ( i ) прис и м н ч ни корня

77

(имя мно ст , которому прин л ит эл м нт i ). Оч и но, что исполь о ни ук нной стр т ии поиск корня р тр у т O(h) îï ð öèé í èõó ø ì ñëó÷ , h ûñîò êîðí î î - ð .

Ал оритмы о ъ ин ния н п р с к ющихся мно ст

1. Ал оритм ОБ ЕДИНЕНИ н п р с к ющихся мно ст

Для р ли ции проц уры о ъ ин ния н п р с к ющихся мно-ст ОБ ЕДИНИТ (Ri; Rj) ост точно кор нь о но о и р -ь с л ть сыном корня ру о о р , прич м потомк ми о корня у ут потомки о оих корн ых р ь . Отм тим, что сло - ность слияния ух корн ых р ь р н конст нт , сли и -стны их корни.

Если н о хо имо ыполнить проц уру о ъ ин ния мно ст , которым прин л т эл м нты x è y , то н о хо имо сн ч л ы- полнить оп р ции НАЙТИ( x ) и НАЙТИ( y ), которы ут им - н мно ст Rk è Rl , которым прин л т x è y . Åñëè èì í ìíî ñò ñî ï þò, òî ýë ì íòû x è y прин л т о ному и тому мно ст у, и этом случ проц ур о ъ ин ния мно-ст н ыполня тся; проти ном случ ыполня м проц уру ОБ ЕДИНИТ ( Rk; Rl ).

Ïðèì ð 1.

Ï ð îí ÷ ëüíî èì ì 8 о ноэл м нтных мно ст Ri ( ê -î ìíî ñò î Ri состоит и инст нно о эл м нт i ), т. . с 8 эл м нто это корни 8 р ь , прич м имя мно ст соот т- ст у т н ч нию эл м нт .

1 2 3

R1 Æ R2Æ R3Æ R44Æ

 

 

7

 

5Æ

6Æ Æ

8Æ

R5

R6

R7

R8

 

78

 

 

i

1

2

3

4

5

6

7

8

 

 

 

 

 

 

 

 

 

P[i]

0

0

0

0

0

0

0

0

О ъ иним мно ст , которым прин л т эл м нты x = 3 è y = 7 . Í õî èì, ÷òî x 2 R3 è y 2 R7 . Ïðè î ú èí íèè êîð íü

ð ñ èì í ì R7 л м сыном р с им н м R3 .

1 2 3

R1 Æ R2Æ R3Æ6 R44Æ

 

 

7

 

5Æ

6Æ Æ

8Æ

R5

R6

 

R8

 ð óëüò ò î ú èí íèÿ èì ì:

i

1

2

3

4

5

6

7

8

 

 

 

 

 

 

 

 

 

P[i]

0

0

0

0

0

0

3

0

 

 

 

 

 

 

 

 

 

Ан ло ично о ъ иним р ья, которым прин л т у лы

x = 8 è y = 7 . Í õî èì, ÷òî

y 2 R3

 

è

x 2 R8 . Ïîë ì, ÷òî

P [8] = 3 .

1

 

 

 

 

 

 

 

 

 

 

2 3

 

 

 

 

Æ

Æ R

 

 

4

 

 

 

So

 

Æ

R1

 

 

 

 

Æ6

 

 

 

 

R2

 

3

 

 

S

R4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S

 

 

 

 

 

 

 

 

 

 

 

S

 

 

 

 

7

 

S

 

 

 

 

 

 

5Æ

 

6Æ Æ

8Æ

 

R5

 

R6

 

 

 

 

 

 

 

 

i

 

2

3

4

5

 

6

7

8

 

 

 

1

 

 

 

P[i]

0

0

0

0

0

 

0

3

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выполняя н ло ичным о р ом о ъ ин ния,

x = 1; y = 7 ; x 2 R1; y 2 R3 ; P [1] = 3 ;

79

 

x = 6; y = 3 ; x 2 R6; y 2 R3

; P [6] = 3 ;

 

x = 5; y = 2 ; x 2 R5; y 2 R2

; P [5] = 2 ;

 

x = 2; y = 8 ; x 2 R2; y 2 R3

; P [2] = 3 ;

 

x = 1; y = 4 ; x 2 R3; y 2 R4

; P [4] = 3 ;

получим о ъ ин ни с х эл м нто о но мно ст о.

R3

 

 

 

 

 

> 3

Qkn

 

 

 

 

 

 

 

 

7 MBI@

Q

 

 

 

 

 

 

 

 

 

B @ Q

 

 

 

 

 

 

 

 

 

 

B

@ QQ

 

 

2

 

n6

n1

 

n7

n8 n4

n

 

6

 

 

 

 

n

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

1

2

3

 

4

5

6

7

8

 

P[i]

 

3

3

0

 

3

2

3

3

3

 

Пр ло нный л оритм о ъ ин ния мно ст (слияни р -ь ) ыполня тся о ольно прои ольно. Отм тим, что сло ностьыполн ния посл о т льности и n оп р ций НАЙТИ и ОБ - ЕДИНИТ мо т ости ть O(n2 ).

2. Ал оритм ОБ ЕДИНЕНИ ПО РАЗМЕРУ н п р с к ющихся мно ст .

Cущ ст у т просто усо рш нст о ни это о л оритм , состоящ том, что ы кор нь р ольш о р м р пол ть отцом корня р м ньш о р м р . ту оп р цию о ъ ин ния мно ст у м н ы ть оп р ци й ОБ ЕДИНЕНИ ПО РАЗМЕРУ. Что ы осполь о ться ук нным принципом о ъ ин ния мно ст , мы ол ны им ть информ цию о р м р р (чис- л у ло р ), которую у м хр нить корн р . Что ы отличить кор нь р от ост льных у ло (н корн ых), кор нь

80

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