Ročník., Číslo IV., listopad VYUŽITÍ FLOYDOVA ALGORITMU NA SITÍCH USE OF FLOYD ALGORITHM IN NETWORKS Denisa Moková Anotae: Článek se zabývá využitím Floydova algoritmu pro výpočet vzdáleností na síti, propustností sítě a nejspolehlivější esty sítě Klíčová slova: Floydův algoritmus, distanční matie, vzdálenosti na síti, propustnost sítě, nejspolehlivější esty sítě Summary: This artile deals with a use of Floyd algorithm for alulation of distanes in a network, permeability of a network and the most reliable paths of a network Key words: Floyd algorithm, distane matrix, distanes in networks, permeability of a network, the most reliable paths of a network. FLOYDŮV ALGORITMUS PRO ZJIŠTĚNÍ VZDÁLENOSTÍ NA SÍTI Floydův algoritmus se používá na výpočet vzdáleností mezi všemi vrholy sítě. Ohodnoením jednotlivýh hran sítě je délka hrany. Floydův algoritmus je vhodné použít pro sítě s počtem hran blížíím se úplnému grafu. Je vhodný pro orientované i neorientované grafy, v našem případě budeme uvažovat pouze graf neorientovaný. Pro sítě s malým počtem hran je z hlediska času výpočtu výhodné několikanásobné použití např. Dijkstrova algoritmu pro výpočet stromu minimálníh tras, kdy každý vrhol považujeme v jednotlivýh výpočteh za výhozí, tj. za kořen stromu. Postup řešení:. krok: Sestavíme nejprve počáteční čtverovou matii ( ) n i j vzdáleností typu n x n tak, aby platilo pro prvky ij : ij C, tj. matii přímýh ij, ij o(h), jestliže ij pro i j ij, jestliže :,, :,, Pro neorientovaný graf bude matie C i každá další matie, která z ní vznikne přepočtem pomoí Floydova algoritmu, symetriká, ož nám výpočet usnadní. Ing. Denisa Moková Ph.D., ČVUT v Praze, Fakulta dopravní, Ústav řízení dopravníh proesů a logistiky, Horská, 8 Praha, Tel.: +449, Fax: +44997, E-mail: mokova@fd.vut.z Moková: Využití Floydova algoritmu na sítíh 77
Ročník., Číslo IV., listopad V případě, že by hrana (v i,, v i ) byla smyčka, potom prvek ij bude roven ohodnoení smyčky. Případné nenulové prvky na hlavní diagonále neovlivní výpočet matie vzdáleností. V případě, že byhom htěli zohlednit vzdálenosti nutné pro projetí vrholy, můžeme je k vypočteným vzdálenostem jednotlivýh tras přičíst.. krok: Postupně konstruujeme posloupnost mati C, C, C,, C, L k C k n, přičemž matie C je počáteční (výhozí) matie přímýh vzdáleností. V yklu pro k,, n hledáme, zda estu z vrholu i do j nelze zkrátit přes vrhol k. Motivae k { d ( i, j), d ( i, k ) d ( k, j) } min + i j. krok: Přepočet prvků matie C provedeme podle vztahu: ( k ) ( k ) ( ) ( ) min{ k k ij ij, ik + kj } () kde horní indexy určují, o kterou matii se jedná 4. krok: Výsledná matie C je matií vzdáleností neboli matií distanční. Příklad určete distanční matii a pomoí ní určete minimální estu z vrholu v do vrholu v. Zdroj: Autor Obr. Příklad grafu s vrholy v až v. krok: Úlohu budeme řešit Floydovým algoritmem, nejdříve sestavíme počáteční C čtverovou matii, matii přímýh vzdáleností ( ) k ij. Moková: Využití Floydova algoritmu na sítíh 78
Ročník., Číslo IV., listopad { } ( ) ( ) ( ) ( ) k k. a. krok: Matie C k C k podle přepočtu min k k ij ij, ik + kj C k : v matii přímýh vzdáleností vyškrtneme první řádek a první sloupe, prvky přepíšeme do další matie a ostatní prvky matie dle přepočtu přepočítáme. Např. prvek nové matie min{, + } min{, + } se nezmění. Matie C k zůstává stejná: C k : v matii C k vyškrtneme druhý řádek a druhý sloupe, prvky přepíšeme do další matie, ostatní přepočítáme. Změna nastane u prvku, 4 4, protože matie je symetriká. {, + } min{, + } 8 4 min 4 4 8 8 C k : změní se prvky 4, 4,,,,. { 4, + 4} min{ 8, + } {, + } min{, + } 7 {, + } min{, + } 4 min min min Moková: Využití Floydova algoritmu na sítíh 79
Ročník., Číslo IV., listopad 7 7 C k4 : změní se prvky,,,,, 7 8 7 7 8 7 4. krok: Tato matie je výslednou distanční matií. Hledáme minimální estu z v do v pomoí distanční matie. Do matie přímýh vzdáleností místo budeme psát a matii doplníme o první sloupe (řádek) distanční matie, první proto, že hledáme estu z v. 7 Konový vrhol je v, proto začneme estu hledat na. řádku od kone prvkem a hledáme jeho předhůde p. Musí platit: p p pro p : 7 7 pro p : 7 7 pro p : 7 pro p 4: 7 4 pro p : nepočítáme pro p : 7 Rovnost platí pro p, do esty zařadíme v a stejným způsobem pokračujeme dál. V případě, že existuje víe rovností platí, že existuje víe minimálníh est. Moková: Využití Floydova algoritmu na sítíh 8
Ročník., Číslo IV., listopad pro p : pro p : pro p : nepočítáme pro p 4: 4 pro p : 7 pro p : Rovnost platí pro p, do esty zařadíme v. Nalezená esta povede z v, v, v a její délka bude z distanční matie 7 délkovýh jednotek. Obr. - Vývojový diagram Floydova algoritmu Zdroj: Autor Moková: Využití Floydova algoritmu na sítíh 8
Ročník., Číslo IV., listopad. FLOYDŮV ALGORITMUS PRO URĆENÍ PROPUSTNOSTI SÍTĚ V aplikai se dá využít Floydův algoritmus pro výpočet propustnosti sítě, o ( h) jsou kapaity hran. Obr. Příklad aplikae Floydova algoritmu Zdroj: Autor. krok: Sestavíme nejprve počáteční čtverovou matii ( ) n i j aby platilo pro prvky ij : C typu n x n tak, ij, ij ij o(h), jestliže ij pro i j ij, jestliže :,, :,,. 4. krok: Prinip algoritmu bude stejný, pouze přepis prvků v matiíh bude podle vztahu: ( k ) ( k ) ( k ) ( k ) max{,min(, ij ij ik kj )} () Počáteční matie bude mít tvar: 4 4 4 4 4 4 C k : změní se prvky,, 4, 4, 4, 4. Moková: Využití Floydova algoritmu na sítíh 8
Ročník., Číslo IV., listopad {, min(, )} max, min(,4) { 4, min(, 4 )} max, min(,4) {, min(, )} max, min( 4,4) { } { } { } 4 max 4 max 4 max 4 4 4 4 4 4 4 4 4 4,,, 4 4 4 4 4 4 4 je výsledná matie 4 Z matie pro propustnost určíme např. max. propustnost z v do v, a to.. FLOYDŮV ALGORITMUS PRO SPOLEHLIVOST SÍTĚ V aplikai se dá využít Floydův algoritmus i pro výpočet nejspolehlivější esty sítě pro o h je pravděpodobnost úspěšného průhodu hranou, každou dvojii vrholů,, ( ) o ( h), Zdroj: Autor Obr. 4 Příklad využití Floydova algoritmu i pro výpočet nejspolehlivější esty sítě. krok: Sestavíme nejprve počáteční čtverovou matii ( ) n i j platilo pro prvky ij : C typu n x n tak, aby ij, ij Moková: Využití Floydova algoritmu na sítíh 8
Ročník., Číslo IV., listopad ij o(h), jestliže ij pro i j ij, jestliže :,, :,,. 4. krok: Prinip algoritmu bude stejný, pouze přepis prvků v matiíh bude podle vztahu: ( k ) ( k ) ( ) ( ) { k k max,( ij ij ik kj )} () Počáteční matie podle. kroku:,7,8,7,,,7,8,,8,,,8,9,8,7,9,8,,,8,8,,,,,7,,7 Další matie podle vztahu () přes všehny vrholy,7,8,,49,7,,,7,8,,8,4,,,,8,9,8,49,7,4,9,8,,,8,8,,,,,7,,7 Moková: Využití Floydova algoritmu na sítíh 84
Ročník., Číslo IV., listopad Moková: Využití Floydova algoritmu na sítíh 8,7,,7,,,,,8,8,,8,4,,8,9,4,7,49,8,9,8,,4,,4,8,,8,8,7,,,7,4,49,4,8,7,7,,7,,,,,8,8,4,4,,,8,9,7,7,7,8,9,8,,4,4,7,8,,8,4,7,,,7,,7,4,8,7,7,,7,,,4,4,4,4,,,8,8,4,,,,8,9,7,7,7,4,8,9,8,,4,4,4,7,8,,8,4,,7,,,7,4,,7,4,8,7,7,,,4,9,,7,7,,,4,4,4,4,,,8,8,4,,,,,8,9,7,7,7,4,4,8,9,8,,4,9,4,4,7,8,,8,,4,,7,,,7,7,4,,7,4,8,7
Ročník., Číslo IV., listopad,7,8,4,7,,4,7,7,,,7,,4,,8,,8,7,4,4,,4,,8,9,8,4,78,7,7,7,9,8,,4,,,4,8,8,,,4,4,4,4,,,7,7,,,78,4,,7 ZÁVĚR C k8 je výsledná distanční matie pro zjištění nejspolehlivější esty na síti. Floydův algoritmus lze využít pro výpočet minimálníh vzdáleností na síti, v aplikai dále pro výpočet maximální propustnosti sítě a nejspolehlivější esty na síti. Je součástí řady složitějšíh algoritmů např. řešení úloh diskrétní optimalizae, jako jsou lokační úlohy a další. Je to exaktní metoda poskytujíí optimální řešení, která je součástí řady heuristikýh a metaheuristikýh metod. Zpraováno v rámi VZ MŠMT 8477/4. POUŽITÁ LITERATURA () MOCKOVÁ, D.: Základy teorie dopravy, Praha: ČVUT v Praze Fakulta dopravní, ISBN 978-8--79-, 7. () MOCKOVÁ, D.: Řešení alokačně lokačníh úloh, disertační práe, Praha, ČVUT v Praze Fakulta dopravní,. () VOLEK, J.: Operační výzkum I, Univerzita Pardubie, Dopravní Fakulta Jana Pernera, Katedra informatiky v dopravě, Pardubie, ISBN 8-794-4-,. Moková: Využití Floydova algoritmu na sítíh 8