![](/user_photo/1144_wzNgE.jpg)
Полезная методичка
.pdf![](/html/1144/349/html_rS5Bm8Zart.Ng0Z/htmlconvd-iF9jw3201x1.jpg)
|
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
![](/html/1144/349/html_rS5Bm8Zart.Ng0Z/htmlconvd-iF9jw3202x1.jpg)
|
|
|
|
|
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
![](/html/1144/349/html_rS5Bm8Zart.Ng0Z/htmlconvd-iF9jw3203x1.jpg)
ñëè ó ó ë 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
![](/html/1144/349/html_rS5Bm8Zart.Ng0Z/htmlconvd-iF9jw3206x1.jpg)
Пс око тополо ич ской сортиро ки
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