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

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

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

Исключ ни эл м нт и оч р и, р ли о нной и списко ой структуры

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

QQ

 

 

 

 

 

 

 

 

 

 

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

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