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

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

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

Для ния р ф ыли исполь о ны списки см ности.

type

uk_out =" el;

el=record

 

val:byte;

ном р ршины

c:integer;

пропускн я спосо ность у и

f:integer;

т кущий поток по у

next : uk_out; end;

uk_in =" el1; el1=record val:byte; next : uk_in; end;

var

m_in:array[1..n] of uk_in; m_out:array[1..n] of uk_out;

Îòì òèì, ÷òî m_in[i] р с н ч л списк ршин, хо ящихршину i è m_out[i] р с н ч л списк ршин, ыхо ящих и ршины i ).

З ч н хо ния м ксим льно о колич ст пут й, н п р с к ющихся по р р м

Ìíî è ÷è í ð ô õ ìî óò ûòü ñ íû ê ÷ í õî-

ния м ксим льно о поток с ти с пропускной спосо ностьюу , р ной 1. Н прим р, ч н хо ния м ксим льно о колич ст пут й н п р с к ющихся по р р м ( ршин м).

Р ссмотрим фр м нт с ти, и о р нной н рис.6.4.8.a). Пропускны спосо ности с х у р ны 1.

Выполним ит р ции л оритм н хо ния м ксим льно о поток и ршины s = v1 ршину t = v10 .

Посл п р ой ит р ции получим у личи ющий путь, состоящий и посл о т льности ршин

v1; v2; v3; v5; v6 ; v10

191

 

 

 

 

 

 

 

 

 

 

 

 

v7

k v8

 

k

9

 

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

-

 

v

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

Q

Q

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sQ

 

 

v1

-

v2

 

-

 

v3

-

 

v5

-

 

v6

 

 

-

v10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

kv1; 1 kv2; 1 k

 

k k k

 

 

 

v3; 1 v5; 1 v6; 1

a)

1@@

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

@R

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

-

v

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k v11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

v4

k

12

 

 

 

 

k v10

k

 

v1 k v2

 

k

 

k-

 

 

 

 

 

k

6

 

 

 

 

-

 

 

 

-

v3

 

 

 

 

 

 

v5

 

-

v

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

v3; 1

 

 

 

 

v7;

 

1 -

v8; 1

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

v7

k v8

 

kv9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

@

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

@

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R@

 

k

b)

v1

k

2

 

k

3

k

 

 

5

 

 

k

 

k

10

 

 

 

-

v

 

 

-

v

 

-

 

v

 

 

 

-

 

v6

 

 

v

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

@ v3;

 

1

v5; 1

 

 

v

126; 1

 

 

 

 

v9; 1

 

 

v2; 1

@

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R@

 

 

k-

 

 

 

 

k-

 

 

 

 

 

 

 

 

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

v12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

v4

 

v11

 

 

 

 

 

 

 

 

 

 

 

v1; 1

v4; 1

v11; 1

 

 

 

 

 

 

 

 

 

 

 

 

 

v1 k-v4 k-v11 k-v12 k-v5 k v3 k-v7 k-v8 k-v9 k-v10 k

c)

 

 

-

 

-

 

-

 

 

 

 

 

 

-

 

v

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k v10

k

 

v1

k v2

k v3

kv7

k-v8 k

9

 

 

v

 

-

 

-

 

 

 

 

 

-

v

 

 

-

v

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

k v4

k v11

k-v12

k

5

 

k

 

6

 

k v10

k

Ðèñ. 6.4.8.:

192

(ñì. ðèñ.6.4.8.a)).

Посл торой ит р ции получим у личи ющий путь v1; v4; v11; v12; v5; v3; v7 ; v8; v9; v10

(ñì. ðèñ.6.4.8.b)). Ò ê ê ê ó (v3; v5) я ля тся о р тной, то р -ультирующий поток по н й у т р н нулю.

Посл о т льность у , по которым поток р н иниц , о - р уют пути и ршины s = v1 ршину t = v10 í ï ð ñ - ê þùè ñÿ ïî ð ð ì (ñì. ðèñ. 6.4.8.c)).

Т ким о р ом, ч х н хо ния м ксим льно о колич - ст пут й, н п р с к ющихся по р р м, р ульт т л оритм н хо ния м ксим льно о поток , мно ст о р р лится н

ïî ìíî ñò :

р р , по которым хо или (поток по ним р н 1);

р р , по которым н хо или (поток по ним р н 0).

Ал оритм н хо ния м ксим льно о колич ст пут й,

н п р с к ющихся по р р м

1.З н сти оч р ь ст рто ую ршину s .

2.Пок оч р ь н ст н т пустой или оч р ь н у т н с н кон чн я ршин t , ыполнять сл ующую посл о т льность ш о .

Ïð ïîëî èì, ÷òî ï ð îé î÷ ð è í õî èòñÿ ðøèí v . Для к ой ршины w1 ñì íîé ñ v :

ñëè (v; w1) р ро, которо относится к по мно-ст у р р, по которым н хо или, то ршину w1 носим оч р ь;

ñëè (v; w1) р ро, которо относится к по мно-ст у р р, по которым хо или, то нич о н - л м;

ñëè (w1; v) р ро, которо относится к по мно-ст у р р, по которым хо или, то ршину w1

носим оч р ь;

193

ñëè (w1; v) р ро, которо относится к по мно-ст у р р, по которым н хо или, то нич о нл м.

У ля м ршину v è î÷ ð è.

3.Åñëè êîí ÷í ÿ ðøèí t ыл н с н оч р ь, то л м оч р ь пустой и о р щ мся к ш у 1 л оритм . При этом р р , р ли ующи путь и s t , п р формиро ы м по сл ующ му пр илу:

прямы р р пути (эти р р р н относились к по - мно ст у р р, по которым н хо или) относим к по мно ст у р р, по которым хо или;

о р тны р р пути (эти р р р н относились к по - мно ст у р р, по которым хо или) относим к по - мно ст у р р, по которым н хо или.

4.Åñëè î÷ ð ü ïóñò , êîí ÷í ÿ ðøèí t í ûë í ñ í

оч р ь, то р р прин л щи по мно ст у р р, по которым хо или, о р уют м ксим льно колич ст о пут й,

н п р с к ющихся по р р м. Ал оритм к нчи т с ою р -оту.

Óïð í íè .

О о щить л оритм н хо ния м ксим льно о колич ст пу- т й н п р с к ющихся по р р м ля н скольких источнико и стоко .

6.5.МИНИМАЛ НОЕ ОСТОВНОЕ ДЕРЕВО ГРАФА

Пусть G = (V; E) ñ ÿ íûé ð ô, ê îìó ð ðó e 2 E которо о пост л н соот тст ии стоимость c(e) .

Îñòî íûì ð îì T ð ô G н ы тся н ори нтиро н- но р о, которо со р ит с ршины р ф .

З ч о н им ньш м осто ном р ключ тся постро нии осто но о р T ð ô G , сумм рн я стоимость р -р которо о миним льн .

О щ я стр т ия л оритм постро ния осто но о р состоит том, что н оч р ном ш ы ир тся р ро, которо н

194

о р у т цикл с у ы р нными н пр ы ущих ш х р р - ми. Для постро ния миним льно о осто но о р ост точно н к ом оч р ном ш ы ир ть р ро миним льной стоимости.

Р ссмотрим л оритм постро ния миним льно о осто но ор . К ый и р ссм три мых л оритмо при с о й р ли-ции исполь у т мно ст . Н помним, что осно ными оп р циями н мно ст ми я ляются:

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

ОБ ЕДИНИТ ( X; Y; Z ) проц ур о ъ ин ния н п р - с к ющихся мно ст с им н ми X è Y ìíî ñò î ñ èì - í ì Z .

Ал оритм 1 (Круск л )

1.Âñ ð ð e 2 E ð ô G пом щ м структуру нных куч , приорит том я ля тся стоимость р р .

2.Ê îé ðøèí i 2 V ð ô G соот тст у т о ноэл м нтно мно ст о. Пусть k колич ст о мно ст н н котором ш л оритм (п р он ч льно k = n ).

3. Пол м миним льно осто но р о T ð ô G пустым

(T = f;g ).

4.Пок колич ст о мно ст k ольш иницы, по торять сл -ующую посл о т льность ш о :

Пусть (i; j) 2 E н которо р ро, получ нно р уль- т т ыполн ния оп р ции у л ния миним льно о эл - м нт и кучи.

Пол м имя1:=НАЙТИ( i ); имя2:=НАЙТИ( j );

(т. . имя1 и имя2 им н мно ст , которым прин л -т ршины i è j ).

195

Åñëè èìÿ1 =6 имя2 (т. . ршины i è j прин л -т р ным мно ст м), то ыполнить сл ующи й- ст ия:

ОБ ЕДИНИТ (имя1,имя2,имя1); k := k 1;

T := T [ (i; j) .

Ни при о ится посл о т льность ш о л оритм Круск - л постро ния миним льно о осто но о р ля р ф , и о р -нно о н рис.6.5.9..

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

5

 

 

 

 

 

Æ

Æ

 

 

 

 

 

 

 

 

 

 

 

 

@

 

 

 

2

 

 

 

 

 

4

@

 

 

 

 

 

 

 

 

 

 

 

 

 

 

@

 

 

 

 

 

 

 

 

@

6

 

 

1

3

 

 

 

 

4

@

 

 

 

 

 

 

 

 

 

 

 

H

 

 

 

 

 

 

 

Æ

@

 

ÆH

 

 

 

 

 

 

 

 

1

HH

 

 

1

 

 

 

@

 

 

3

 

 

 

 

 

 

 

 

 

6

 

 

Æ

 

 

 

 

 

 

 

 

 

 

 

2

 

 

Æ

 

 

 

 

 

Ðèñ. 6.5.9.:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

èò ð öèÿ

 

 

ð ðî

 

ìíî ñò

 

 

 

0

 

 

 

 

 

 

 

{1}, {2},{3},{4},{5},{6}

 

 

1

 

 

 

(1,3)

 

{1,3}, {2},{4},{5},{6}

 

 

2

 

 

 

(2,5)

 

{1,3} ,{2,5},{4},{6}

 

 

3

 

 

 

(3,4)

 

{1,3,4} ,{2,5},{6}

 

 

 

4

 

 

 

(1,2)

 

{1,2,3,4,5}, {6}

 

 

 

5

 

 

 

(3,6)

 

{1,2,3,4,5,6}

 

 

 

Ä ð î T = f(1; 3); (2; 5); (3; 4); (1; 2); (3; 6)g я ля тся миним ль-

íûì îñòî íûì ð îì ð ô G .

 

Оц ним тру о мкость л оритм Круск л . Т к к к

òðó î-

мкость посл о т льности

è m оп р ций НАЙТИ и

ÎÁ -

ЕДИНИТ сть

O(m log n)

и тру о мкость у л ния m ýë ì í-

òî è êó÷è ñòü

O(m log n) , то тру о мкость л оритм 1 сть

O(m log n) .

 

 

 

 

 

196

 

Р ссмотрим щ о ин л оритм постро ния миним льно о осто но о р , который, отличии от л оритм 1, н исполь у т структуру нных куч .

Ал оритм 2

1.Ê îé ðøèí i 2 V ð ô G ïîñò èì ñîîò òñò è î íîýë ì íòíî ìíî ñò î V Si . Â ëüí éø ì, ê ÷ ñò èì í ìíî ñò V Si , ïðîù ñ î ð ññì òðè òü èì í îò 1 î n . Пусть k колич ст о н пустых мно ст (п р он ч льно k = n ).

2.Пол м, что миним льно осто но р о р ф G пусто ( T = f;g ).

3.Пок колич ст о н пустых мно ст ольш иницы ( k >1),ыполнять сл ующую посл о т льность ш о :

Îïð ëèòü ëÿ ê î î ìíî ñò V Si личину БЛИЖАЙ ЕЕ( V Si ), котор я п р он ч льно ля к -о о мно ст мо т ыть ят к к личин , ольш я м ксим льной и стоимост й р р р ф G .

Îïð ëèòü ëÿ ê î î ìíî ñò V Si н которо р ро РЕБРО( V Si ). П р он ч льно с РЕБРО( V Si )сть пусты мно ст .

Äëÿ ê î î ð ð (i; j) 2 E ыполнять сл ующи й- ст ия:

имя1:=НАЙТИ( i ); имя2:=НАЙТИ( j );

ñëè c(i; j) < БЛИЖАЙ ЕЕ(имя1)то { БЛИЖАЙ ЕЕ(имя1):= c(i; j) ; РЕБРО(имя1):= (i; j) ; }

ñëè c(i; j) БЛИЖАЙ ЕЕ(имя2)то { БЛИЖАЙ ЕЕ(имя2):= c(i; j) ; РЕБРО(имя2):= (i; j) ; }

Посл то о, к к просмотр ны с р р , получ н н ор р р

197

E0 ={ РЕБРО[1],РЕБРО[2],

РЕБРО[ n ]}.

 

Ïðîè î èì

слияни

ìíî ñò

V Si

ñîîò-

òñò èè ñ

ð ð ìè

è

E0

(ò. .

ëÿ

ê î î

 

2

 

 

 

 

6

 

 

(i; j)

 

E0

сли НАЙТИ( i )

=

НАЙТИ( j ) òî

ОБ ЕДИНИТ (НАЙТИ( i ),НАЙТИ( j ),НАЙТИ( i )) и ум ньшить колич ст о н пустых мно ст k ниницу).

Поло ить миним льно осто но р о T = T [ E0 .

Ни при о ится посл о т льность ш о л оритм 2 постро ния миним льно о осто но о р ля р ф , при нно о н рис.6.5.9.. Отм тим, что н тр ть м ш л оритм р р - рутся прои ольном поря к

Èò ð öèÿ 1 .

Ìíî ñò : V S =(1={1}, 2={2}, 3={3}, 4={4}, 5={5}, 6={6}) (ï ð ê ûì ìíî ñò îì óê íî î èìÿ).

Миним льно осто но р о T = f;g .

èì í ìíî ñò

1

2

3

4

5

6

 

 

 

 

 

 

 

 

 

РЕБРО

;

;

;

;

;

;

 

 

 

 

 

 

 

 

 

БЛИЖАЙ ЕЕ

7

7

7

7

7

7

 

 

 

 

 

 

 

 

 

c(1; 2) = 2 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

èì í ìíî ñò

 

1

2

 

3

4

 

5

 

6

 

 

 

 

 

РЕБРО

(1,2)

(1,2)

 

;

;

 

;

 

;

 

 

 

 

 

БЛИЖАЙ ЕЕ

 

2

2

 

7

7

 

7

 

7

 

 

 

 

 

c(1; 4) = 3 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

èì í ìíî ñò

 

1

2

 

3

4

 

 

 

5

 

 

6

 

 

РЕБРО

(1,2)

(1,2)

 

;

(1,4)

 

;

 

 

;

 

 

БЛИЖАЙ ЕЕ

 

2

2

 

7

3

 

 

 

7

 

 

7

 

 

c(1; 3) = 1 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

èì í ìíî ñò

 

1

2

 

3

 

 

4

 

 

 

5

 

6

РЕБРО

(1,3)

(1,2)

 

(1,3)

 

(1,4)

 

 

;

 

;

БЛИЖАЙ ЕЕ

 

1

2

 

1

 

 

3

 

 

 

7

 

7

c(2; 5) = 1 ;

198

èì í ìíî ñò

1

2

3

4

5

6

РЕБРО

(1,3)

(2,5)

(1,3)

(1,4)

(2,5)

;

БЛИЖАЙ ЕЕ

1

1

1

3

1

7

c(3; 5) = 4 ; c(3; 4) = 1 ;

èì í ìíî ñò

1

2

3

4

5

6

 

РЕБРО

(1,3)

(2,5)

(1,3)

(3,4)

(2,5)

;

 

БЛИЖАЙ ЕЕ

1

1

1

1

1

7

 

c(3; 6) = 2 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

èì í ìíî ñò

1

2

3

4

5

6

РЕБРО

(1,3)

(2,5)

(1,3)

(3,4)

(2,5)

(3,6)

БЛИЖАЙ ЕЕ

1

1

1

1

1

2

c(5; 6) = 7 ;

Í îð ð ð E0 = f(1; 3); (2; 5); (1; 3); (3; 4); (2; 5); (3; 6)g . T = T [ E0 = f(1; 3); (2; 5); (3; 4); (3; 6)g .

Ìíî ñò V S = (1 = f1; 3; 4; 6g; 2 = f2; 5g) . Колич ст о н пустых мно ст k = 2 .

Èò ð öèÿ 2 .

В р ульт т посл п р ой ит р ции получ ны мно ст :

1 = f1; 3; 4; 6g; 2 = f2; 5g:

Для простоты р ли ции, н ря у с получ нными мно - ст ми у м р ссм три ть "фикти ны "пусты мно ст (им н которых исч ли р ульт т слияния).

èì í ìíî ñò

1

2

 

3

4

5

6

РЕБРО

;

;

 

;

;

;

;

БЛИЖАЙ ЕЕ

7

7

 

7

7

7

7

Бу м р ссм три ть только т р р р ф , которы со и- няют ршины, прин л щи р ным мно ст м.

c(1; 2) = 2 ;

èì í ìíî ñò

1

2

 

3

4

5

6

РЕБРО

(1,2)

(1,2)

 

;

;

;

;

БЛИЖАЙ ЕЕ

2

2

 

7

7

7

7

 

 

199

 

 

 

 

 

c(3; 5) = 4 ; c(6; 5) = 7 ;

Í îð ð ðE E0 = f(1; 2); (1; 2); ;; ;; ;; ;g. При этом, н -ор р р 0 пусто мно ст о соот тст у т "фикти но-

ìó"ìíî ñò ó.

T = T [ E0 = f(1; 3); (2; 5); (3; 4); (3; 6); (1; 2)g . Ìíî ñò V S = (1 = f1; 2; 3; 4; 5; 6g) .

Колич ст о н пустых мно ст k = 1 и л оритм к нчи -т р оту. Д р о T я ля тся миним льным осто ным р -ом р ф G .

Оц ним тру о мкость л оритм 2. Посл ыполн ния ш 3л оритм , к ому и мно ст у т н й но ли йш , посл ч о прои ой т их слияни . Сл о т льно, н к ой ит р - ции л оритм колич ст о мно ст ум ньш тся по кр йн й м - р о . Т ким о р ом, колич ст о ит р ций л оритм 2 сть O(log n) . Т к к к тру о мкость о ной ит р ции л оритм сть

O(m) , то тру о мкость л оритм 2 постро ния миним льно о осто но о р сть O(m log n) .

6.6.ТОПОЛОГИЧЕСКА СОРТИРОВКА

Пусть н мно ст S эл м нто (о ъ кто ) опр л но отнош ни ч стично о поря к ля н которых п р эл м нто .

О о н чим отнош ни поря к сим олом (чит тся пр ш - ст у т). Отнош ни поря к у о л т оря т сл ующим тр м с ойст м:

1) ñëè x y è y z , òî x z (тр н ити ность);

2) ñëè x y , то н ыполня тся y x ( ссим тричность); 3) н ыполня тся z z (ирр фл кси ность).

Ч стичную упоря оч нность мно ст S мо но пр ст итьи ори нтиро нно о р ф , ршины которо о соот тст уют эл м нт м мно ст S , у и отнош нию поря к м у соот тст ующими ршин ми (эл м нт ми).

С ойст 1), 2) ч стично о поря к эл м нто мно ст S - р нтируют отсутст и цикло ор р ф .

200

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