Полезная методичка
.pdfИсключ ни эл м нт и оч р и, р ли о нной и списко ой структуры
if head = nil then { î÷ ð ü ïóñò } else
{
x := head " :val; dop := head;
head := head " :next; dispose(dop);
if head = nil then tail := nil;
}
Тру о мкость с х опис нных ыш проц ур сть O(1) .
4.2. ГРАФ . ОСНОВН Е ОПРЕДЕЛЕНИ И СПОСОБ ЗАДАНИ
Ãð ô G = (V; E) состоит и н пусто о мно ст у ло V è ìíî-ñò ï ð ó ëî ( ðøèí) E . Â ëüí éø ì ó ì ïð ïîë òü, ÷òî jV j = n è jEj = m .
Åñëè ìíî ñò î E пр ст л но и упоря оч нных п р у - ло (v; w) , то р ф н ы тся ори нтиро нным (ор р фом), упоря оч нн я п р у ло (v; w) í û òñÿ ó îé ( v í ÷ ëî è w кон ц у и ); проти ном случ р ф н ы тся н ори н- тиро нным, п р у ло н ы тся р ром.
Пут м р ф н ы тся посл о т льность ршин и
v1; v2; vk 1; vk;
(vi; vi+1) 2 E; i = 1; ; k 1 .
Путь н ы тся простым, сли с у лы р личны. Цикл это простой путь, который н чин тся и конч тся о ном и том у л .
Гр ф н ы тся с я ным, сли ля лю ой п ры ршин су- щ ст у т путь, их со иняющий. В проти ном случ , р ф н ы-
òñÿ í ñ ÿ íûì. Åñëè v н котор я ршин р ф , то м к- сим льно колич ст о ршин, которы сущ ст у т путь и v , поро ют компон нту с я ности р ф .
61
Гр ф н ы тся у ольным, сли мно ст о о ршин мо - но р ить н по мно ст ( оли) т ким о р ом, что к о р ро со иня т только ршины р личных по мно ст . Гр ф н ы тся полным у ольным, сли к я ршин о ной оли со ин н с к ой ршиной ру ой оли.
Н пр ктик р ф ч сто и о р ют сл ующим о р ом: к ому у лу ст ится соот тст ии точк плоскости, ля и о р ния р р ( у ) исполь уют линии (н пр л нны линии), со иняющи соот тст ующи точки. Н рис. 4.2.1. и о-
ð í îð ð ô G0 = (V 0; E0) , |
|
V 0 = |
f1; 2; 3; 4; 5; 6g; E0 = |
|||
= f(1; 2); (1; 3); (3; 2); (3; 4); (5; 4); (5; 6); (6;5)g: |
|
|||||
|
|
|
2 |
|
5 |
|
3 |
|
|
Æ |
ÆKA |
||
|
||||||
1 |
|
6 |
|
|||
|
|
|
4Æ A |
|||
Æ |
|
|
|
|
A |
|
Z |
|
|
|
|
|
|
~Z |
|
|
|
AU |
||
Z |
|
|
|
|
|
|
3Æ |
|
6Æ |
Рис. 4.2.1.: Ори нтиро нный р ф.
Спосо ы пр ст л ния р ф п мяти.
1.Кл ссич ским спосо ом ния р ф я ля тся м триц
см ности A р м р n n , avw = 1 , сли сущ ст у т р ро ( у ), и ущ и ршины v w , и avw = 0 проти ном случ . Т к ля ор р ф , и о р нно о н рис. 4.2.1. м триц см ности у т им ть и :
|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
1j |
0 |
1 |
1 |
0 |
0 |
0 |
||||||
2j |
0 |
0 |
0 |
0 |
0 |
0 |
||||||
3j |
0 |
1 |
0 |
1 |
0 |
0 |
||||||
4j |
0 |
0 |
0 |
0 |
0 |
0 |
||||||
5j |
0 |
0 |
0 |
1 |
0 |
1 |
||||||
6j |
0 |
0 |
0 |
0 |
1 |
0 |
||||||
|
|
62 |
|
|
|
|
|
|
|
|
Ïð èìóù ñò î ò êî î ïð ñò ë íèÿ êëþ÷ òñÿ òîì, ÷òîO(1) мо но ть от т н опрос "сущ ст у т ли р ро ( у ) (v; w) ?". Н ост ток ключ тся том, что о ъ м тр у мой п мяти н исимости от колич ст р р ( у ) сост ля т n2 .
2.Дру им тр иционным спосо ом пр ст л ния р ф слу-ит м триц инци нтности. то м триц A ñ n стро- к ми, соот тст ующим ршин м, и m ñòîë ö ìè, ñîîò ò-
ст ующим р р м. Для ор р ф стол ц, соот тст ующийу (v; w) , ñî ð èò 1 строк , соот тст ующ й ршин v , ñî ð èò 1 строк , соот тст ующ й ршин w , и нули о с х ост льных строк х (п тлю у о но пр ст лятьру им н ч ни м, н прим р, 2 ). Т к ля р ф , и о р н- но о н рис.4.2.1., м триц инци нтности у т им ть и :
|
(1; 2) |
(1; 3) |
(3; 2) |
(3; 4) |
(5; 4) |
(5; 6) |
(6; 5) |
1j |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
2j |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
3j |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
4j |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
5j |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
6j |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
тот спосо ния р ф им т ря н ост тко , т.к. он
î-ï ð ûõ, òð ó ò n m яч к п мяти, которы с о мольшинст полн ны нулями;
о- торых, от ты н опросы: "сущ ст у т ли у (v; w) ?", "к к ким ршин м ут р р и ршины
v ?"тр уют ху ш м случ п р ор с х стол цо м - трицы ( m ø î ).
3. Бол экономным отнош нии п мяти, осо нно, ко m n2 , í ïðèì ð, m = O(n) (÷èò òñÿ: m í ìíî î ì íüø
n2 ), я ля тся м то пр ст л ни р ф с помощью списк п р, соот тст ующим р р м: п р v; w ñîîò òñò ó ò ð ðó
(v; w) .
63
1 |
1 |
3 |
3 |
5 |
5 |
6 |
2 |
3 |
2 |
4 |
4 |
6 |
5 |
|
|
|
|
|
|
|
Î ú ì ï ìÿòè ýòîì ñëó÷ ñîñò ëÿ ò O(m) , но н у о ст оключ тся ольшом колич ст ш о ( ху ш м случ поря к m ), н о хо имом ля получ ния мно ст ршин,
к которым ут р р и нной ршины.
4.Во мно их ситу циях н и ол при мл мым спосо ом нияр ф я ля тся структур нных, которую н ы ют спис- к ми см ности.
type
uk = " el; el = record key : byte; next : uk; end;
var graf : array [1::n] of uk;
Ì ññè graf ñò òè÷ ñêèé ì ññè , i -ый эл м нт которо-о я ля тся ук т л м н н ч ло лин йно о списк ршин, см ных с i -ой ршиной; сли и ршины i í ò ûõî ÿ- ùèõ ó , òî graf[i] = nil . Ò êèì î ð îì, ð ô ïð ñò ë íè n списко см ност й, по о ному ля к ой ршины.
1 |
|
- |
2 |
|
|
- |
3 |
nil |
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2nil
3 |
- |
2 |
|
|
- |
4 |
nil |
|
|
|
|||||
|
|
|
|
||||
|
|
|
|
|
|
|
|
4nil
|
- |
|
|
|
|
|
|
- |
|
|
5 |
|
4 |
|
|
6 |
nil |
||||
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
6- 5 nil
Î ú ì ï ìÿòè ýòîì ñëó÷ O(m + n) .
64
4.3.ДЕРЕВ . ОСНОВН Е ОПРЕДЕЛЕНИ И СПОСОБ ЗАДАНИ
Д р ом н ы тся с я ный р ф цикло . Н пр ктик ч сто прихо ится им ть ло со сп ци льными и ми р ь . Н и о- л р спростр н нным ср и них я ля тся корн о р о.
Êîðí û ð üÿ
Корн о р о это ори нтиро нный р ф, который у о л т о- ря т сл ующим усло иям:
им тся точности о ин у л, который н хо ит ни о ну (кор нь);
к ый у л, кром корня, хо ит ро но о н у ;
и корня им тся путь к к ому у лу;
Åñëè êîðí îì ð ñóù ñò ó ò ïóòü è v w , òî v í û-þò ïð êîì ó ë w , w потомком у л v . Если у л н им т потомко , то о н ы ют т рмин льной ршиной или листом. Н т рмин льную ршину н ы ют нутр нн й.
Åñëè (v; w) ó êîðí î î ð , òî v н ы тся отцом (н поср ст нным пр ком) у л w , w н ы тся сыном (н поср ст нным потомком) у л v .
Ó ë v êîðí î î ð T и о потомки м ст о р уют
ïî ð î êîðí î î ð T ñ êîðí ì ðøèí v .
Ãëó èíîé ó ë v корн ом р н ы тся лин пути и корня этот у л.
Высотой у л v корн ом р н ы тся лин с мо олинно о пути и v о о но о и о потомко (лист ). Высотой корн о о р н ы тся ысот о корня.
Óðî í ì ó ë v н ы тся р ность ысоты корн о о р
è ëó èíû ó ë v .
Упоря оч нно корн о р о это корн о р о, у которо оу и, ыхо ящи и к ой ршины упоря оч ны ( льн йш му м счит ть, что они упоря оч ны сл н пр о).
Понятно, что ля пр ст л ния р ь (корн ых р ь ) мо ут ыть исполь о ны структуры нных, нны р н ля
65
р фо . О н ко н пр ктик ля пр ст л ния корн ых р ь исполь уют т к н ы мо к нонич ско пр ст л ни . При т - ком пр ст л нии ля к о о у л хр нится ук т ль н отц . Для корн о о р , и о р нно о н рис.4.3.2., к нонич ско
1ÆH
2 + 3? Hj4ÆB Æ Æ 6Æ= 5BNÆ 7Æ
Ðèñ. 4.3.2.: Êîðí î ð î.
пр ст л ни у т им ть сл ующий и :
i- ó ë |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
|
|
|
|
|
|
|
p[i] - îò ö |
0 |
1 |
1 |
1 |
2 |
2 |
4 |
Áèí ðíû ð üÿ
Îñî ííî íóþ ðîëü ñð è êîðí ûõ ð ü è ð þò èí ðíûð üÿ.
Бин рно р о это упоря оч нно корн о р о у к ойршины которо о им тся н ол ух сыно й. В ин рном - р к ый сын прои ольно о у л опр ля тся ли о к к л ый сын, ли о к к пр ый сын. По р о ( сли оно сущ ст у т), корн м которо о я ля тся л ый сын у л v , í û òñÿ ë ûì ïî ð -îì ó ë v . Ан ло ичным о р ом опр ля тся пр о по р оля у л v .
Сущ ст у т н сколько спосо о пр ст л ния ин рных р -ь (пр пол м, что у лы р нум ро ны ц лыми числ - ми от 1 î n ).
1. Ïð ñò ë íè è óõ ì ññè î : Left è Right . Åñëè ó ë j я ля тся л ым (пр ым) сыном у л i , òî Left[i] = = j (Right[i] = j) ; ñëè ó ó ë i í ò ë î î (ïð î î) ñûí , òî Left[i] = 0 (Right[i] = 0) .
66
2. Пр ст л ни и списко ой структуры:
type
tree_ptr =" tree_node; tree_node=record
element : element_type; left : tree_ptr;
right : tree_ptr; end;
О ним и сп ци льных случ ин рных р я ляются полны ин рны р ья. Полным ин рным р ом у м н ы ть т ко упоря оч нно корн о р о, котором
ê ÿ ðøèí èì ò í îë óõ ñûíî é;
полн ни р осущ ст ля тся от корня к листьям по уро ням;
ïîëí íè óðî í é ïðîè î èòñÿ ñë í ïð î;
Полны ин рны р ья о ычно пр ст ляются и о ном р- но о м сси R : R[1] кор нь р , ля прои ольно о у л iî ë ûé ñûí ð ñïîë òñÿ ýë ì íò R[2i] , ïð ûé R[2i+1] Îò ö ó ë , í õî ÿù îñÿ ïî èöèè j , р споло н по иции [j=2] . Н рис.4.3.3. и о р ны ин рных р , но только л о и них я ля тся полным ин рным р ом.
|
|
|
|
|
|
|
Æ@ |
|
|
Æ |
|
|
@R |
|
|
@ |
|
|
@R |
||||
|
|
@ |
|
|
|
/ Æ |
|
Æ |
Æ Æ |
||
|
|
|
|||
|
|
|
|
||
|
|
|
|
|
/ |
Æ |
|
|
|
Æ |
Æ |
Ðèñ. 4.3.3.:
67
Бин рны поиско ы р ья
Ещ о ним сп ци льным случ м ин рных р ь я ляются и- н рны поиско ы р ья. Пр поло им, что к ому у лу ин р- но о р соот тст у т н которо ключ о н ч ни (н прим р, ц ло число). Бин рно р о н ы тся р ом поиск , ( ин р- ным поиско ым р ом) сли оно ор ни о но т к, что ля к -о о у л v спр ли о ут р ни , что с ключи л ом по -р у л v ì íüø êëþ÷ ó ë v , с ключи пр ом по -р ольш . Отм тим, что поиско ом р н т ух у ло с о ин ко ыми ключ ыми н ч ниями. Н рис.4.3.4. и о р ны
ин рных р , но только л о и них я ля тся ин рным поиско ым р ом.
|
|
|
|
|
6Æ@ |
|
|
6Æ@ |
|
R@ |
|
|
|
R@ |
|
|
|
= |
|
2ÆJ |
8Æ |
2 |
ÆJ |
8Æ |
^J4 |
|
1 |
4 |
|
|
|
= |
^J |
|
1 |
|
Æ Æ |
||
Æ= Æ |
|
|
/ |
~Z |
|
|
|
Z |
|
|
|
|
|
7 |
3Æ |
|
3Æ |
Æ |
Ðèñ. 4.3.4.:
Сп ци льными случ ями ин рных поиско ых р ь я ляются и льно с л нсиро нны р ья и с л нсиро нны р -ья.
Д р о н ы тся и льно с л нсиро нным, сли оно я ля-тся ин рным поиско ым р ом и число ршин о л ых и пр ых по р ьях отлич тся н ол ч м н 1 .
Д р о н ы тся с л нсиро нным, сли оно я ля тся ин р- ным поиско ым р ом и ысоты ух по р ь к ой и оршин отлич ются н ол ч м н 1 . Т ки р ья ч сто н ы-ют АВЛ р ьями (по им ни их откры т л й: Г.М. А льсон- В льский и Е.М. Л н ис) ( с и льно с л нсиро нны р ья
68
я ляются т к и АВЛ р ьями). Н рис.4.3.5. пр ст л ны
ин рных поиско ых р , о н ко только л о р о я ля тся АВЛ- р ом (но н я ля тся и льно с л нсиро нным).
6
ÆZZ
Z
Z~
2ÆA 8ÆAU4 7 1ÆÆÆ 3 /
Æ
|
|
6 |
|
|
|||
|
|
Æ |
|
||||
|
|
|
Q |
|
|||
|
|
|
|
|
|||
|
|
|
|
sQ8 |
|||
|
2Æ@ |
|
|
|
|
Æ |
|
R@ |
|
|
|||||
1 |
4 |
Æ |
|
||||
Æ |
|
||||||
|
|
Z |
~Z |
|
|||
|
|
|
|||||
|
/ |
|
|
|
|
|
|
|
3Æ |
|
|
|
5Æ |
Рис. 4.3.5.: Бин рны поиско ы р ья.
Спосо ы о хо у ло ин рных р ь
Мно и л оритмы, р от я с ин рными корн ыми р ьями, пос щ ют к ый у л р н котором поря к . Сущ ст у- ют три н и ол р спростр н нных спосо о хо ин рно о - р (пр пол м, что ин рно р о но списко ой структурой).
1.Прямой поря ок (с рхуни ), ключ тся том, что кор нь пос щ тся р ньш , ч м по р ья. Р курси но: кор нь, л -î ïî ð î, ïð î ïî ð î.
procedure order1(t : tree_ptr); if{t 6= nil then
P (t);
order1(t " left); order1(t " right);
}
end;
69
2.О р тный поря ок (сни у- рх), ключ тся том, что ко- р нь пос щ тся посл по р ь . Р курси но: л о по - р о, пр о по р о, кор нь.
procedure order2(t : tree_ptr); if{t 6= nil then
order2(t " left); order2(t " right);
P (t);
}
end;
3.Внутр нний поря ок (сл -н пр о). Р курси но: л о по -р о, кор нь, пр о по р о.
procedure order3(t : tree_ptr); if{t =6 nil then
order3(t " left);
P (t);
order3(t " right);
}
end;
Для ин рно о р , и о р нно о н рис.4.3.6., при м поря-ок о хо о у ло при прямом, о р тном и нутр нн м о хо :
прямой о хо : 1,2,4,5,6,7,3,8,9,10,11;
î ð òíûé î õî : 4,6,7,5.2,8,10,11,9,3,1;
íóòð ííèé î õî : 4,2,6,5,7,1,8,3,10,9,11.
Сильно т ящи ся р ья
Корн ы р ья, ршины которых им ют ол ух сыно й, н ы ют сильно т ящимися р ьями (multiway trees). Пр - пол тся, что т ко р о р ито н по р ья и эти по р -ья о но р м нно оступны. Т ки по р ья н ы ют стр ни- ц ми. В 1970 о у Р.Бэй р и Е.М ккр йт сформулиро ли сл ующий крит рий: к я стр ниц (кром о ной) ол н со р ть
70