
Полезная методичка
.pdf
|
|
|
|
|
|
|
||
|
|
|
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 |
|
||||||||||
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
? |
|
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 |
|
|
|||
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