Алгоритм Джонсона дозволяє знайти найкоротші шляхи між усіма парами вершин зваженого орієнтованого графу. Цей алгоритм працює, якщо у графі містяться ребра з додатною чи від'ємною вагою, але відсутні цикли з від'ємною вагою. Названо на честь [en], який опублікував цей алгоритм 1977 року.
Алгоритм
Дано граф з ваговою функцією . Якщо ваги всіх ребер у графі є невід'ємними, то можливо знайти найкоротші шляхи між усіма парами вершин, запустивши алгоритм Дейкстри по одному разу для кожної з вершин. Якщо в графі містяться ребра з від'ємною вагою, але відсутні цикли з від'ємною вагою, то можливо обчислити нову множину ребер з невід'ємними вагами, що дозволяє скористатися попереднім методом. Нова множина, що складається з ваг ребер , повинна відповідати таким властивостям:
- Для всіх ребер нова вага .
- Для всіх пар вершин шлях є найкоротшим шляхом з вершини до вершини з використанням вагової функції тоді й лише тоді, коли є також найкоротшим шляхом з вершини до вершини з ваговою функцією .
Збереження найкоротших шляхів
Лема (Зміна ваг зберігає найкоротші шляхи). Нехай дано зважений орієнтований граф з ваговою функцією , і нехай — довільна функція, що відображує вершини на дійсні числа. Для кожного ребра визначмо
Нехай є довільним шляхом з вершини до вершини . є найкоротшим шляхом з ваговою функцією тоді й лише тоді, коли він є найкоротшим шляхом з ваговою функцією , тобто рівність є рівносильною рівності . Крім того, граф містить цикл з від'ємною вагою з використанням вагової функції тоді й лише тоді, коли він містить цикл з від'ємною вагою з використанням вагової функції .
Зміна ваги
- Для даного графу створімо новий граф , де , для деякої нової вершини , а .
- Розширмо вагову функцію таким чином, щоби для всіх вершин зберігалася рівність .
- Далі визначмо для всіх вершин величину та нові ваги для всіх ребер .
Основна процедура
В алгоритмі Джонсона використовують алгоритм Беллмана — Форда та алгоритм Дейкстри, втілені у вигляді підпрограм. Ребра зберігають у вигляді переліків суміжних вершин. Алгоритм повертає звичайну матрицю розміром , де , або видає повідомлення про те, що вхідний граф містить цикл із від'ємною вагою.
Алгоритм Джонсона
Збудувати граф if Bellman_Ford = FALSE then print «Вхідний граф містить цикл з від'ємною вагою» else for для кожної do призначити величині значення , обчислене алгоритмом Беллмана — Форда for для кожного ребра do for для кожної вершини do обчислення за допомогою алгоритму Дейкстри величин для всіх вершин for для кожної вершини do return D
Складність
Якщо в алгоритмі Дейкстри неспадну чергу з пріоритетами втілено у вигляді фібоначчієвої купи, то тривалість роботи алгоритму Джонсона дорівнює . За простішого втілення неспадної черги з пріоритетами тривалість роботи стає рівною , але для розріджених графів ця величина в асимптотичній границі поводиться краще, ніж тривалість роботи алгоритму Флойда — Воршелла.
Див. також
Посилання
Література
- Томас Х. Кормен и др. Алгоритмы: построение и анализ. — 2-е изд. — М. : Издательский дом «Вильямс», 2007. — 726 с. — . (рос.)
- Томас Х. Кормен и др. Алгоритмы: построение и анализ. — 1-е изд. — М. : МЦНМО, 2004. — 523 с. — . (рос.)
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Algoritm Dzhonsona dozvolyaye znajti najkorotshi shlyahi mizh usima parami vershin zvazhenogo oriyentovanogo grafu Cej algoritm pracyuye yaksho u grafi mistyatsya rebra z dodatnoyu chi vid yemnoyu vagoyu ale vidsutni cikli z vid yemnoyu vagoyu Nazvano na chest en yakij opublikuvav cej algoritm 1977 roku AlgoritmDano graf G V E displaystyle G V E z vagovoyu funkciyeyu w E R displaystyle omega E rightarrow R Yaksho vagi vsih reber w displaystyle omega u grafi ye nevid yemnimi to mozhlivo znajti najkorotshi shlyahi mizh usima parami vershin zapustivshi algoritm Dejkstri po odnomu razu dlya kozhnoyi z vershin Yaksho v grafi mistyatsya rebra z vid yemnoyu vagoyu ale vidsutni cikli z vid yemnoyu vagoyu to mozhlivo obchisliti novu mnozhinu reber z nevid yemnimi vagami sho dozvolyaye skoristatisya poperednim metodom Nova mnozhina sho skladayetsya z vag reber w displaystyle hat omega povinna vidpovidati takim vlastivostyam Dlya vsih reber u v displaystyle u v nova vaga w u v gt 0 displaystyle hat omega u v gt 0 Dlya vsih par vershin u v V displaystyle u v in V shlyah p displaystyle p ye najkorotshim shlyahom z vershini u displaystyle u do vershini v displaystyle v z vikoristannyam vagovoyi funkciyi w displaystyle omega todi j lishe todi koli p displaystyle p ye takozh najkorotshim shlyahom z vershini u displaystyle u do vershini v displaystyle v z vagovoyu funkciyeyu w displaystyle hat omega Zberezhennya najkorotshih shlyahiv Lema Zmina vag zberigaye najkorotshi shlyahi Nehaj dano zvazhenij oriyentovanij graf G V E displaystyle G V E z vagovoyu funkciyeyu w E R displaystyle omega E to R i nehaj h V R displaystyle h V to R dovilna funkciya sho vidobrazhuye vershini na dijsni chisla Dlya kozhnogo rebra u v E displaystyle u v in E viznachmo w u v w u v h u h v displaystyle hat omega u v omega u v h u h v Nehaj p v 0 v 1 v k displaystyle p langle v 0 v 1 ldots v k rangle ye dovilnim shlyahom z vershini v 0 displaystyle v 0 do vershini v k displaystyle v k p displaystyle p ye najkorotshim shlyahom z vagovoyu funkciyeyu w displaystyle omega todi j lishe todi koli vin ye najkorotshim shlyahom z vagovoyu funkciyeyu w displaystyle hat omega tobto rivnist w p d v 0 v k displaystyle omega p delta v 0 v k ye rivnosilnoyu rivnosti w p d v 0 v k displaystyle hat omega p hat delta v 0 v k Krim togo graf G displaystyle G mistit cikl z vid yemnoyu vagoyu z vikoristannyam vagovoyi funkciyi w displaystyle omega todi j lishe todi koli vin mistit cikl z vid yemnoyu vagoyu z vikoristannyam vagovoyi funkciyi w displaystyle hat omega Zmina vagi Dlya danogo grafu stvorimo novij graf G V E displaystyle G V E de V V s displaystyle V V cup s dlya deyakoyi novoyi vershini s V displaystyle s not in V a E E s v v V displaystyle E E cup s v v in V Rozshirmo vagovu funkciyu w displaystyle omega takim chinom shobi dlya vsih vershin v V displaystyle v in V zberigalasya rivnist w s v 0 displaystyle omega s v 0 Dali viznachmo dlya vsih vershin v V displaystyle v in V velichinu h v d s v displaystyle h v delta s v ta novi vagi dlya vsih reber w u v w u v h u h v 0 displaystyle hat omega u v omega u v h u h v geqslant 0 Osnovna procedura V algoritmi Dzhonsona vikoristovuyut algoritm Bellmana Forda ta algoritm Dejkstri vtileni u viglyadi pidprogram Rebra zberigayut u viglyadi perelikiv sumizhnih vershin Algoritm povertaye zvichajnu matricyu D d i j displaystyle D d ij rozmirom V V displaystyle V times V de d i j d i j displaystyle d ij delta i j abo vidaye povidomlennya pro te sho vhidnij graf mistit cikl iz vid yemnoyu vagoyu Algoritm Dzhonsona Zbuduvati graf G displaystyle G if Bellman Ford G w s displaystyle G omega s FALSE then print Vhidnij graf mistit cikl z vid yemnoyu vagoyu else for dlya kozhnoyi v V displaystyle v in V do priznachiti velichini h v displaystyle h v znachennya d s v displaystyle delta s v obchislene algoritmom Bellmana Forda for dlya kozhnogo rebra u v E displaystyle u v in E do w u v w u v h u h v displaystyle hat omega u v leftarrow omega u v h u h v for dlya kozhnoyi vershini u V displaystyle u in V do obchislennya za dopomogoyu algoritmu Dejkstri G w u displaystyle G hat omega u velichin d u v displaystyle hat delta u v dlya vsih vershin v V displaystyle v in V for dlya kozhnoyi vershini v V displaystyle v in V do d u v d u v h v h u displaystyle d uv leftarrow hat delta u v h v h u return DSkladnistYaksho v algoritmi Dejkstri nespadnu chergu z prioritetami vtileno u viglyadi fibonachchiyevoyi kupi to trivalist roboti algoritmu Dzhonsona dorivnyuye O V 2 log V V E displaystyle O V 2 log V VE Za prostishogo vtilennya nespadnoyi chergi z prioritetami trivalist roboti staye rivnoyu O V E log V displaystyle O VE log V ale dlya rozridzhenih grafiv cya velichina v asimptotichnij granici povoditsya krashe nizh trivalist roboti algoritmu Flojda Vorshella Div takozhAlgoritm Dejkstri Algoritm Bellmana Forda Algoritm Flojda VorshellaPosilannyaLiteraturaTomas H Kormen i dr Algoritmy postroenie i analiz 2 e izd M Izdatelskij dom Vilyams 2007 726 s ISBN 5 8459 0857 4 ros Tomas H Kormen i dr Algoritmy postroenie i analiz 1 e izd M MCNMO 2004 523 s ISBN 5 900916 37 5 ros