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

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

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

 

v1

m

 

 

 

-v2 Sm

 

 

 

 

 

 

 

 

 

 

 

S

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Sw

 

 

m

 

 

 

 

 

 

 

 

5

v3

 

 

 

 

 

 

 

 

 

+

 

 

 

 

 

v

 

 

m

 

v4

m

 

 

 

 

 

 

S

 

Z

 

 

 

 

 

 

 

 

 

 

ZZ

 

 

 

 

 

S

 

 

 

 

 

 

 

S

 

 

 

 

~Z

 

/

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

wS

 

 

 

 

 

v7

 

 

 

 

v6

m

 

 

 

 

 

 

 

 

 

Рис. 6.6.10.: Ациклич ский р ф.

Тополо ич ск я сортиро к это т к я нум р ция у ло циклич ско о р ф , при которой, ном р у л vj ольш ном р у л vi , сли им тся путь и у л vi у л vj .

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

Тополо ич ско упоря оч ни у ло ори нтиро нно о цикли- ч ско о р ф н с о но н чно.

Для р ф н рис. 6.6.10. при ны тополо ич ских упоря-оч ния у ло :

íîì ð

1

2

3

4

5

6

7

ó ë

v1

v2

v5

v4

v3

v7

v6

 

 

 

 

 

 

 

 

íîì ð

1

2

3

4

5

6

7

ó ë

v1

v2

v5

v4

v7

v3

v6

Тополо ич ск я сортиро к мо т ыть исполь о н ля р - ш ния р личных ч. Н прим р, уни рсит тских про р мм х н которы курсы ол ны чит ться по ру их, поскольку н которы и них осно ы ются н м т ри л , и ло нном ру их курс х. Пусть курс м соот тст уют у лы V ор р ф G = (V; E) ,у (v; w) о н ч т, что м т ри л курс v исполь у тся курс w , (v; w) 2 E . Лю я у (v; w) ор р ф , с помощью которо о

201

 

 

 

 

 

2

 

-

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Æ

 

 

 

Æ

 

 

 

 

3

 

6

 

 

 

Z

ZZ

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

Z~

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Æ

 

 

 

 

 

 

 

?

 

 

Æ

H

H

 

 

 

 

 

 

 

 

3

 

 

 

HHj

 

 

-

 

 

 

 

 

 

3Æ

5

 

 

 

 

 

 

Æ

 

- 3 - 2 - 4 - 5? - 6 1Æ Æ Æ Æ Æ Æ6

Рис. 6.6.11.: Ч стично упоря оч нно мно ст о. Лин йно р споло ни ч стично упоря оч нно о мно ст .

пр ст л н ся про р мм чит мых уни рсит т курсо , ук -ы т, что курс v ол н ыть конч н пр , ч м н ч т курс w . Тополо ич ско упоря оч ни у ло т ко о ор р ф о н ч т, что ни о ин курс н чит тся р н т х, которы о по р и - ют.

Н прим р, н рис. 6.6.11. ля и о р нно о рху р ф ни-у при но о но и о мо ных упоря оч ний.

Ал оритм тополо ич ской сортиро ки

Пом стить оч р ь с у лы хо ящих них у . Пок оч р ь н пуст ыполнить сл ующую посл о т льность ш о .

1. И л чь и оч р и у л (пусть v ).

2. Äëÿ ê î î ó ë w , ò êî î, ÷òî (v; w) 2 A(v) , ыполнить:у лить у у (v; w) ;

202

ñëè ó ó ë w н ост лось хо ящих у , то пом ститьо оч р ь.

Ïð ïîëî èì, ÷òî ìíî ñò î S и отнош ни ч стично о поря к пр ст л ны п р ми, которы пр ст ляют со ой у и ор-р ф G = (V; E) , и которо о пр ст л н ч стичн я упоря-оч нность мно ст S .

Вы р м структуру пр ст л ния мно ст S и о отнош - ния поря к . Вы ор пр ст л ния мно ст опр ля тся оп - р циями, которы н о хо имо ыполнять, ч стности оп р ци йы ор эл м нт (у л ), н им ющ о пр ш ст ннико ( хо я- щих у л у ). К ый эл м нт мо но пр ст ить с помощью тр¼х х р кт ристик: ключ эл м нт (у л ), мно ст ом сл ующих ним эл м нто -посл о т л й (список см ност й) A(v) = = fw : (v; w) 2 Eg и сч тчиком пр ш ст ующих му эл м нто (число хо ящих у л у ). Поскольку р н число эл м нто мно ст S н но, то пр ст им ч стично упоря оч нно мно ст о S и мультисписк , структур к о о эл м нт которо о им т сл ующий и :

K - êëþ÷ ýë ì íò (ó ë );

b - число у , хо ящих ршину, опр ля мую ключом

K ;

P1 - ук т ль н сл ующий эл м нт мультисписк ;

P2 - ук т ль н эл м нты по списк , со р щ о у лыр ф , см ны с нным у лом v (ìíî ñò A(v) ).

Бу м счит ть, что ключи t(v); v 2 V ö ëû ÷èñë (í î ÿ - ò ëüíî ïîñë î ò ëüíû è è è ï îí 1; n ).  ð ññì òðè ìîì ñëó÷ êëþ÷ t(v) ршины v со п т с ном ром ршины. л - м нты к о о по списк ля н которой ршины v им ют сл у- ющую структуру:

r1 ном р см ной ршины, r1 2 A(v) ;

r2 - ук т ль н сл ующий эл м нт по списк .

203

Мультисписок о л т т м с ойст ом, что к ый и эл м н- то мно ст S ñî ð èòñÿ í ì ðî íî î èí ð .

Ïð ïîëî èì, ÷òî ìíî ñò î S и отнош ни ч стично о поря к н S ïð ñò ë íû ï ð ìè êëþ÷ é è õî íî î ô éë .

Èñõî íû ííû ëÿ ðèñ. 6.6.11. ïð ñò ë íû ñë óþùè ì î - ð îì:

1 2 3 5 1 3 3 2 4 6 2 4 1 6 4 5 5 6:

Посл о т льно о им исхо ны нны и строим мультисписок опис нной ыш структуры.

Поя ляющи ся и хо но о ф йл у лы x è y (x y) ищутся ср и эл м нто мультисписк и, сли они н м отсутст уют, тоо ляются к н му.

З т м по список ля x î ëÿ òñÿ ýë ì íò y è ñ÷ ò÷èê ÷èñ- ë ó , õî ÿùèõ ó ë y , у личи тся н иницу.

В р ульт т о нных, пр ст л нных ыш , у т постро н мультисписок со структурой, при нной н рис. 6.6.12..

Для прямо о оступ к эл м нт м ìóëüтисписк (у л м р ф ) мо но хр нить их м сси ai; i = 1; jV j , ai - óê ò ëü í ó ë ñ èí êñîì i мультисписк .

Н п р ом эт п л оритм и мультисписк , сформиро нно-о н ф о , ну но ы р ть у лы р ф с нул ым числомхо ящих у и пом стить их оч р ь. Бу м счит ть, что числохо ящих у ля к о о у л v хр нится м сси indegree[v] , v 2 V . Â ì ññè top_num(i ), i 2 V хр нятся ном р у ло р - ф , соот тст ующи тополо ич ской нум р ции.

Ни у т при н пс око л оритм тополо ич ской сортиро ки. Тополо ич ско упоря оч ни , получ нно р ульт тыполн ния пс око это поря ок, котором у лы р ф н - хо ятся оч р и.

Вр мя ыполн ния л оритм тополо ич ской сортиро ки

O(jV j + jEj) .

204

 

 

1

 

 

 

2

 

 

3

 

 

 

5

 

 

 

4

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

2

 

 

1

 

 

 

2

 

 

 

1

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

-

 

 

 

 

-

 

 

-

 

 

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

%

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

%

 

 

 

 

 

?

 

 

 

 

?

 

 

 

?

 

 

 

?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

?

 

 

 

 

 

2

 

 

 

 

 

4

 

 

 

5

 

 

 

 

6

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

?

 

 

 

 

 

 

 

 

?

 

 

 

 

 

 

 

 

?

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

""

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 6.6.12.: Cтруктур мультисписк , сформиро нно о р уль- т т о нных

205

Пс око тополо ич ской сортиро ки

Procedure topsort(G:graph); var

Q : QUEUE; counter : integer; v; w : vertex;

begin

 

make_null(Q); counter := 1;

{со ть пустую оч р ь}

for each vertex v do { ля к о о у л ыполнить}

if indegree[v] = 0 then

{ó ë v õî ÿùèõ ó ?}

enqueue(v; Q) ;

while not is_empty(Q) do

{ïîê î÷ ð ü í ïóñò }

{

 

v := dequeue(Q) ; {è ë ÷ü ýë ì íò è î÷ ð è}

top_num[v] := counter ;

{пом стить м сси топ. нум р цию}

counter := counter + 1;

for each w 2 A(v) do

{

indegree[w] := indegree[w] 1;

{ум ньш м число у , хо ящих у л w}

if indegree[w] = 0 then enqueue(w; Q) ;

{пом стить у л w õ. í î ó î÷ ð ü }

}

}

if counter < jV j then error("graph has a cycle"); end;

206

Ëèò ð òóð

[1]Альфр В. Ахо, Д он . Хопкрофт, Д ффри Д. Уль- м н. Структуры нных и л оритмы: П р. с н л.: Уч.пос. М.:И т льский ом "Вильямс",2000. 384 c.

[2]Альфр В. Ахо, Д он . Хопкрофт, Д ффри Д. Уль- м н. Постро ни и н ли ычислит льных л оритмо . М.:Мир,1979. 536 c.

[3]Ем лич В.А., М льнико О.И., С р но В.И., Тышк ич Р.И. Л кции по т ории р фо . М.: Н ук , 1990. 383с.

[4]Т. Корм н, Ч. Л й рсон, Р. Ри ст. Ал оритмы: постро ни ин ли . М.:МЦНМО,1999. 960с., 263ил.

[5]Кото В.М., Волко И.А., Л по А.И. М то ы л оритми ции: Уч но посо и ля 9 кл сс . Мн.: Н ро н я с т , 1997. 160с.

[6]Кото В.М., М льнико О.И. Информ тик . М то ы л оритми ции: Уч но посо и ля 10-11 êë ññ . Ìí.: Í ðî í ÿñ ò , 2000. 221ñ.

[7]Кристофи с Н. Т ория р фо . М.:Мир,1978.

[8]В. Липский. Ком ин торик ля про р ммисто . М.: Мир,1988. 214с.

[9]П п имитриу Х.,Ст й лиц К. Ком ин торн я оптими ция : Ал оритмы и сло ность. М.:Мир,1971.

[10]Mark Allen Weiss. Data structures and algorithm analysis. Benjamin/Cummings Publishing Company, 1992. 455p.

207

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