![](/user_photo/1144_wzNgE.jpg)
Полезная методичка
.pdfу м пом ч ть отриц т льным числом, солютно н ч ни которо о р но колич ст у у ло р . Ко о ъ ин ни р ьыполня тся по ук нному принципу, корн ой у л l р ы- числя тся сл ующим о р ом: P [l] := P[l] + P [q] , l è q - корни о ъ иня мых по р м ру р ь , прич м jP[l]j jP[q]j . При этом отцом ршины q ñò íî èòñÿ ðøèí l , ò. . P [q] := l .
Р ссмотрим сл ующий н ор р ь .
R2 |
|
|
R3 |
|
|
R5 |
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
2 |
n |
|
3 |
|
n |
4 n |
|
|
6 |
OC |
oS |
|
|||
|
|
|
|
C |
S |
|
|
|
|
|
|
|
C |
S |
|
|
|
|
|
C |
S |
|
|
|
|
|
|||||
5 |
n6 |
n 1 |
n7 n8 |
n |
То он у т пр ст л н сл ующим о р ом:
|
i |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
P [i] |
3 |
-2 |
-5 |
-1 2 |
3 |
3 |
3 |
|
|
|
È ýòîé ò ëèöû ñë ó ò, ÷òî ó ë |
i = 3 êîð íü ð |
R3 , |
|||||||||
ïðè÷ ì ð 5 ó ëî . Ïîñë î ú èí íèÿ ð ü R2 è |
R3 |
||||||||||
получим P [3] = 7; P[2] = 3 . |
|
|
|
|
|
|
|
|
Т ор м 4.4.1. Если при ыполн нии к ой оп р ции ОБ - ЕДИНИТ кор нь р с м ньшим числом у ло (при р нст у ло р тся лю о р о) пр о р у тся сын корня р сольшим числом у ло , то ысот р л су мо т остичьысоты h , только сли оно им т н м н 2h ó ëî .
Док т льст о. Док т льст о про м по ин укции. Для h = = 0 ут р ни рно, т к к к к о р о им т по кр йн й м р о ин у л. Пр поло им, что ут р ни рно ля с хн ч ний п р м тр , м ньших h ( 1 ). Пусть T р о ысоты h с н им ньшим числом у ло . То оно ол но ыло получитьсяр ульт т слияния р ь T1 è T2 , T1 р о ысоты
h 1 è ó í î ó ëî í îëüø , ÷ ì ó T2 . По пр поло нию ин укции, р о T1 èì ò í ì í 2h 1 ó ëî , è, í ÷èò ð î
81
T2 , èì ò í ì í 2h 1 ó ëî . Ñë î ò ëüíî, ð î T èì ò í ì í 2h 1 + 2h 1 = 2h ó ëî .
2
È ò îð ìû ñë ó ò, ÷òî íèê êî ð î è n ó ëî ïðè ÎÁ -
ЕДИНЕНИИ ПО РАЗМЕРУ н мо т им ть ысоту h îëüø , ÷ ì log2 n .
Сл ст и 4.4.1. Сло ность ыполн ния O(n) оп р ций НАЙТИ и ОБ ЕДИНИТ ПО РАЗМЕРУ н пр осхо ит O(n log n) .
3. Ал оритм ОБ ЕДИНЕНИ ПО В СОТЕ н п р с к ющихся мно ст
В н которых ч х н о хо имо ыполнить ОБ ЕДИНЕНИЕ ПО В СОТЕ (слияни ) р ь . В л оритм х о ъ ин ния мно-ст с помощью р ь по ысот ну но сл ить ысотойр , м сто р м р , и при о ъ ин нии кор нь р с м нь- ш й ысотой ст но ится сыном корня р с ольш й ысотой ( ол лу око о р ). Т ким о р ом, о ъ ин ни р ь поысот пр ст ля т со ой эл м нт рно и м н ни л оритм о ъ-ин ния по р м ру.
В л оритм о ъ ин ния р ь по ысот поиск эл м нт тр у т поря к O(log n) оп р ций, слияни р ь тр у т поря к O(1) оп р ций. Сл о т льно, ля ыполн ния посл о - т льности и O(m) оп р ций НАЙТИ и ОБ ЕДИНЕНИЕ ПО В - СОТЕ тр у тся оп р ций поря к O(n log n) .
Ал оритм поиск мно ст с с ти м пути
При р ли ции мно ст с помощью корн ых р ь , осно н я тру ность ключ тся проц ур НАЙТИ ( отличии от пр - ст л ния и списко ). Сущ ст у т усо рш нст о ни л о- ритм ыполн ния проц уры НАЙТИ, состоящ мо рни циир при ыполн нии поиск , которо н ы тся с ти м пути.
Ñ òè ïóòè ëÿ ó ë x корн ом р состоит н н - ч нии к ой ршин н пути от ршины x о корня р r íî î î îòö ó ë r .
82
![](/html/1144/349/html_rS5Bm8Zart.Ng0Z/htmlconvd-iF9jw383x1.jpg)
2 |
|
- |
|
|
|
|
2 |
|
|||||||
|
|
|
root YH |
|
|
|
|||||||||
root |
|
|
|
|
|
|
|
|
|
|
|||||
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
||||||
I@ |
|
|
|
|
|
|
* |
|
|
6 |
H |
H |
H |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ |
z |
|
|
|
|
|
H x |
||||||||
|
|
|
|||||||||||||
z |
3 |
|
|
|
|
|
y |
|
|
|
4 |
||||
Æy |
|
Æ |
|
|
Æ |
Æ |
|||||||||
}Z |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Z |
|
YHH 4 |
1 |
|
|
3 |
|
|
|
m |
|||||
|
|
Æ |
|
|
|
|
|
|
|
6 |
|||||
|
|
|
|
|
|
|
|
|
5 |
||||||
|
|
x |
|
|
|
|
|
|
|
|
|
Æ |
|||
|
|
|
|
Æ |
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
m |
5 |
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
Æ |
|
|
|
|
|
|
|
|
Ал оритм поиск с с ти м пути мо т ыть р ли о н сл -ующим о р ом.
function НАЙТИ(x); begin
stack = ;;
while P [x] > 0 do
{ x ! stack; x := P[x]; } |
||
|
6 ; |
do |
while stack = |
||
{ y |
stack; P [y] := x; } |
|
НАЙТИ:=x; |
|
end
Оц ним тру о мкость ыполн ния посл о т льности и O(n) оп р ций "поиск с с ти м пути"и "о ъ ин ния по р м ру". Для это о р ссмотрим функцию F , котор я опр ля тся сл ующим о р ом:
F (0) = 1
F (i) = 2F (i 1); i > 0:
Функция F р ст т оч нь ыстро: сли F(0) = 1 , то F (4) = 65536 . Опр лим функцию G(n) , к к н им ньш число k , ля которо о
F (k) n . Функция G ð ñò ò î÷ íü ì ë ííî: G(n) 5 ëÿ ñ õ
n 265536 .
Т ор м 4.4.2. Пусть c прои ольн я постоянн я. Н й тсяру я постоянн я c0 , исящ я от c , т к я, что л оритм о ъ-ин ния н п р с к ющихся мно ст по р м ру с с ти м пути
83
ыполнит посл о т льность и c n оп р ций ОБ ЕДИНИТ и НАЙТИ н n ýë ì íò õ ð ìÿ c0 n G(n) .
Опис нн я ыш т хник мо т ыть исполь о н ля р ш - ния широко о кру ч. Н прим р, пусть им тся мно ст о S компьют ро , эл м нты мно ст S с я ны м у со ой н которым о р ом. Если компьют ры i; j 2 S с я ны м у со ой, то с я ь м у ними ун пр л нн я, по оляющ я п р чу ф й- ло от о но о компьют р к ру ому. Мо но ли посл ть ф йл от лю о о компьют р i к лю ому ру ому компьют ру j р ссм - три мой компьют рной с ти? Что ы р шить эту чу, п р он - ч льно пом щ м к ый компьют р i 2 S îò ëüíî ìíî ñò î Ri; i 2 S . Д компьют р (x; y) ï ð þò ô éëû îò î íî î ê ðó-îìó, ñëè îíè í õî ÿòñÿ î íîì ìíî ñò ( î íîì ð ). Äëÿ ê îé ï ðû (x; y) компьют ро x è y , которы с я ны м -у со ой усторонн й с я ью, строим пути от x è y кор нь корн о о р , и, сли корни р ь ля компьют ро x è y р личны, то о ъ иня м р . Если x è y им ют о ин и тоткор нь, то они н хо ятся о ном р . Если посл просмотрс х п р компьют ро получим о но р о, то сть о мо ность посл ть ф йл и лю о о компьют р к лю ому ру ому компьют - ру. Если р ульт т о ъ ин ния р ь получ н л с р ь , то н о мо но посл ть ф йл к прои ольному компьют ру и н которо о ру о о компьют р .
4.5.ПРИОРИТЕТН Е ОЧЕРЕДИ
Куч ми у м н ы ть т ки структуры нных, которы по о- ляют ыполнять осно ны оп р ции: " о л ни эл м нт "и "у л ни миним льно о эл м нт ". Если оп р ция о л ния эл - м нт н тр у т ополнит льных о ъясн ний, то оп р ция "у - л ния миним льно о эл м нт "пр пол т, что ля к о о эл - м нт опр л но н которо н ч ни (ключ), по которому опр - ля тся "миним льность". В с мом простом ри нт н ч ни клю- ч мо т со п ть со н ч ни м эл м нт . В о щ м случ соотно- ш ни н ч ния эл м нт и о ключ мо ут им ть прои ольную
исимость. Н прим р, сли н ч ни ключ соот тст у т р - м ни поступл ния н которой я ки н о слу и ни , то мо но
84
пр пол ть, что миним льно н ч ни ключ им т т я к (эл м нт), котор я поступил р ньш . В этом случ ля мо - лиро ния проц сс о слу и ния мо но исполь о ть структуру нных "оч р ь". Если пр поло ить, что миним льно н - ч ни ключ им т т я к (эл м нт), котор я поступил по , то ля мо лиро ния проц сс о слу и ния мо но исполь о ть структуру нных "ст к". Но сли пр поло ить, что миним льнон ч ни ключ им т т я к (эл м нт), котор я м ньш с о мо т ть, ля мо лиро ния проц сс о слу и ния мо но исполь о ть т кую структуру нных, к к "Куч "(это у у т оч р ь, котор я учиты т приорит ты).
Сущ ст у т мно о спосо о р ли ции структуры нных "Ку- ч ", ни у ут р ссмотр ны н которы и них ( ин рны кучи, d -кучи, иноми льны кучи и кучи Фи он ччи).
4.5.1Áèí ðíû êó÷è
Полным ин рным р ом н ы тся т ко р о, котором к я ршин им т н ол ух "сыно й", полн ниршин осущ ст ля тся поря к от рхних уро н й к ни ним, прич м н о ном уро н полн ни ршин прои о ится сл н - пр о. Н рис.4.5.8. a) и о р но полно ин рно р о, которо
|
|
|
Óð.2 |
||
Æ |
Æ@ |
|
|
||
\\ |
|
|
@ |
|
|
|
|
@ |
|||
|
|
Óð.1 |
|||
Æ |
Æ |
Æ |
|
Æ |
|
|
|
|
Óð.0 |
||
Æ |
|
Æ Æ |
|
Рис. 4.5.8.: a) полно ин рно р о; b) н полно ин рно р о.
им т три уро ня. Н тором уро н н хо ится только о н пол- н нн я ршин a, котор я н ы тся корн ой. Н п р ом уро нполн ны ршины , , н нул ом уро н полн н о н р-
85
![](/html/1144/349/html_rS5Bm8Zart.Ng0Z/htmlconvd-iF9jw386x1.jpg)
шин . Д р о н рис.4.5.8. b) н я ля тся полным ин рным - р ом, т к к к полн ни ршин уро ня 0 осущ ст лялось н сл -н пр о (н полн н ршин м у ршин ми " "и " "). Н тру но у иться, что р о, и о р нно н рис.4.5.8. a), мо но о ить ( полнить) м ксимум три ршины, что ы коли- ч ст о уро н й н м н и м нилось. Если мы о им ( полним) ч тыр ршины, то получится полно ч тыр хуро н о ин рнор о, которо и о р но н рис.4.5.9.. Оч и но, что миним ль-
|
|
|
|
|
ÆH |
||
|
|
HH |
|
|
ÆA |
Æ@ |
|
|
@ |
|
|
|
|
|
|
Æ Æ |
Æ |
Æ |
Æ
Рис. 4.5.9.: Полно ч тыр хуро н о ин рно р о.
но колич ст о ршин полном тр хуро н ом ин рном р
р но 4, м ксим льно число полностью полн нном 7. Н сло но у и ть, что ля полно о ин рно о р ысоты h
м ксим льно колич ст о ршин сть
|
|
|
h |
2h+1 1 |
|
|
|
|
1 + 2 + |
|
+ 2h = |
2i = |
|
= 2h+1 |
|
1; |
|
|
|
|
Xi=0 |
2 1 |
|
|
|
миним льно колич ст о ршин сть
(1 + 2 + |
|
+ 2h 1) + 1 = h 1 2i + 1 = |
2h 1 |
+ 1 = 2h: |
|
|
Xi=0 |
2 1 |
|
Т ким о р ом, колич ст о ршин полно о ин рно о р ы- соты h è ì íÿ òñÿ îò 2h î (2h+1 1) .
Полно ин рно р о с K ршин ми л ко р ли у тся с помощью просто о м сси . Для это о н о хо имо пр ст ить, что у
86
![](/html/1144/349/html_rS5Bm8Zart.Ng0Z/htmlconvd-iF9jw387x1.jpg)
ýë ì íò ñ èí êñîì i сыно ьями я ляются эл м нты с ин кс ми 2 i è 2 i + 1 , 2 i K; 2 i + 1 K . Т к, полно ин рно р о
Æl
l
l
% ÆL Æ% L
%
Æ Æ Æ
ó ò ïð ñò ë íî è ì ññè :
Èí êñ |
1 |
2 |
3 |
4 |
5 |
6 |
|
|
|
|
|
|
|
 ðøèí |
|
|
|
|
|
|
|
|
|
|
|
|
|
Кром м сси , н о хо имо им ть п р м нную, котор я опр -ля т колич ст о ршин р . Пусть это у т п р м нн я Num . То ин кс м ст м сси , мо лирующ м полно и- н рно р о, ку оч р ной эл м нт у т о ляться, р н
Num + 1 .
Осно ным с ойст ом (ин ри нтом) структуры нных куч я ля тся усло и , что эл м нты н й ор ни о ны т ким о - р ом, что приорит т лю ой ршины н ни приорит т к о-о и "сыно й". Т к, сли к ч ст приорит т р ссм три тьр мя, которо эл м нт мо т "о и ть", то приорит т ршиныу т т м ыш , т м м ньш р мя о мо но о о и ния.
Бин рн я куч это полно ин рно р о, ля которо оыполня тся осно но с ойст о структуры нных куч .
Ни и о р ны полных ин рных р , но только л о я ля тся ин рной куч й.
87
![](/html/1144/349/html_rS5Bm8Zart.Ng0Z/htmlconvd-iF9jw388x1.jpg)
|
|
|
|
|
|
|
10 |
||
|
|
|
10 |
|
|
A |
|
Æ |
|
|
|
|
|
Æ |
|
|
|||
|
|
|
@ |
|
|
|
l |
||
|
|
21 |
@ |
|
UA |
21 |
l |
||
|
|
|
Æ |
|
16 |
|
Æ |
16 |
|
|
|
B |
|
ÆT |
|
|
\ |
Æ |
|
|
|
|
|
|
|
|
L |
||
|
29 60 Sw \29 60 |
||||||||
|
|
|
BB |
|
T |
|
|
|
L |
|
|
|
Æ |
Æ |
ÆC ÆÆÆ |
||||
25 |
|
|
20 |
|
18 |
|
20 |
||
|
ÆB |
|
Æ |
|
|||||
|
|
||||||||
|
B |
|
|
|
|
|
C |
|
|
25 |
40 |
|
33 |
|
|
25 |
40 |
33 |
|
ÆÆ Æ |
|
Æ Æ Æ |
Пусть H м сси р м р n , который у т исполь о тьсяля р ли ции ин рной кучи, Num колич ст о эл м нто куч , приорит т эл м нт опр ля тся о н ч ни м, прич м, ч м м ньш н ч ни эл м нт , т м ольш о приорит т. Осно - н я и я мо лиро ния состоит том, что "сыно ьями" ршины с ин ксом i я ляются ршины с ин кс ми 2i и 2i + 1 . Отсю-сл у т, что "отцом" ршины с ин ксом j я ля тся ршин с ин ксом bj=2c . Отм тим, что у корн ой ршины "отц "н т. Поэтому осно но с ойст о ин рной кучи о сп чи тся ыпол- н ни м усло ия, что ля лю ой тройки эл м нто с ин кс ми i , 2i , 2i + 1 эл м нт с ин ксом i ол н им ть м ксим льный приорит т ( куч и тр х эл м нто ол сильный с с рху). Ни при о ится спосо по р ния это о с ойст при ыпол- н нии осно ных оп р ций с ин рными куч ми.
Осно ны оп р ции с ин рными куч ми
1.Äî ë íèÿ ýë ì íò ê èí ðíîé êó÷ .
Пр поло им, что кучу, и о р нную н рис.4.5.10., н о - хо имо о ить но ый эл м нт с ключом 17. При ыполн нии оп р ции о л ния эл м нт , он ол н пом стится н с о-о но м сто, т. . по ицию с ин ксом Num + 1 . О н ко эт по иция мо т н соот тст о ть пр ильному поло нию эл м нт куч , т к к к н ним мо т н хо иться эл м нт, им ющий м ньший приорит т. Т к, при о л нии эл м нт с ключом 17, ля ршины с ин ксом 5 н руш тся осно - но с ойст о кучи. Прост йшим спосо ом р р ш ния этой ситу ции я ля тся о м н эл м нто , н которых прои ошло
88
н руш ни осно но о с ойст . При этом эл м нт с ольшим приорит том по ним тся рх, эл м нт с м ньшим приорит том ним т о м сто. Л ко и ть, что при т ком о - м н осно но с ойст о кучи ля ршин, стоящих ни , н н руш тся. Т ко пр о р о ни при о ит к но ому полному ин рному р у (см. рис.4.5.10.), которо щ н у о л - т оря т осно ному с ойст у кучи ( ля ршины с ин ксом 2). Поэтому, прим ня м н ло ичный о м н ля ршины с
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
10Æ@ |
|
|
|
""10Æ@ |
|||||
|
|
|
21 |
@16 |
|
|
|
21 |
16 |
|||
|
|
|
|
|
|
|
|
|
|
" |
@ |
|
|
|
|
ÆL |
|
|
ÆT |
|
|
|
|
17 |
Æ |
|
|
|
|
|
- |
|
ÆA |
T |
||||
|
|
|
|
20 |
||||||||
|
|
|
L |
|
|
T |
|
|
|
A |
|
T |
|
|
|
|
|
|
|
|
|
|
|||
|
|
25 |
29 |
20 |
60 |
|
|
25 |
|
|
60 |
|
|
|
ÆD ÆS |
Æ Æ |
|
|
|
ÆÆ Æ |
|||||
|
|
|
ÆB e |
|
||||||||
|
|
|
|
|||||||||
|
|
D |
S |
|
|
|
|
|
B |
|
e |
|
25 |
|
40 |
33 |
|
|
|
|
25 |
40 |
33 |
29 |
|
Æ Æ Æ Æ |
|
|
Æ Æ Æ Æ |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
|
|
|
|
|
|
|
|
|
Ðèñ. 4.5.10.:
èí êñîì 2. Ð óëüò ò ýòî î ïð î ð î íèÿ è î ð í íè . |
||||
|
|
|
|
|
|
|
|
10Æe |
|
|
|
e |
||
|
|
17 |
|
16 |
|
|
ÆT |
ÆJ |
|
|
|
T |
|
J |
|
21 |
|||
|
25 |
|
20 |
60 |
|
|
|
ÆÆ Æ |
|
|
DÆ@ |
|
||
|
D |
|
@ |
|
|
||||
25 |
40 |
33 |
29 |
|
Æ ÆÆ Æ
В р ульт т получ но полно ин рно р о, которо у о-л т оря т осно ному с ойст у кучи. Поэтому, проц ур о-
ë íèÿ ýë ì íò ðø í .
89
![](/html/1144/349/html_rS5Bm8Zart.Ng0Z/htmlconvd-iF9jw390x1.jpg)
При м про р ммную р ли цию оп р ции о л ния эл м нт x ê èí ðíîé êó÷ .
procedure insert(x:integer; var H: array [0 : : : n] of integer; var Num; code:integer);
var i:integer; begin
if Num = n then code := 1 else
{
Num := Num + 1; i := Num;
H[0] := x;
while (x < H[i div 2]) do
{
H[i] := H[i div 2]; i := i div 2;
}
H[i] := x; code := 0;
}
end;
Тру о мкость оп р ции о л ния опр ля тся колич - ст ом ыполн ния цикл while и н пр ыш т колич ст уро н й кучи, которо р но log2 Num .
2.У л ни миним льно о эл м нт и ин рной кучи.
Р ссмотрим с йч с р ли цию оп р ции у л ния мини- м льно о эл м нт .
В силу осно но о с ойст кучи эл м нт с м ксим льным приорит том н хо ится корн полно о ин рно о р , т. . им т ин кс 1. Поэтому, посл у л ния п р о о эл м нт ,о м сто йм т тот и о сыно й или посл ний эл м нт, кто им т ольший приорит т. Ос о о и ш ся м сто сынйм т о сын или посл ний эл м нт, и т к л . Посл т ких пр о р о ний нутри кучи н ол но ост ться "с о-о ных"м ст.
90