DSM2 C 8 Problém neratší cesty Ohodnocený orientoaný graf: - Definice: Ohodnoceným orientoaným grafem na množině rcholů V = { 1, 2,, n} nazýáme obet G = V, w, de zobrazení w : V V R { } se nazýá áhoá funce Vysětlení: Jedná se o obet, ehož pry sou uspořádané doice prů z V (orientoané hrany, šipy ; grafu mohou být i smyčy); zobrazení w pa přiřazue aždé orientoané hraně e = i, V V eí áhu w( e ) tato: graf zadaný obrázem: poud orientoaná hrana ( šipa ) grafu existue, e eí áha dána ze zadání, poud hrana grafu neexistue, e eí áha rona, případě smyčy 0; - Poud máme na množině V zoleno pené očísloání rcholů V = { 1, 2,, n}, můžeme áhoou funci ednoznačně popsat C c c = w, Symbolem ( i) c áhoou maticí G ( i ) =, de i ( i ) značíme i-tý řádoý etor matice C G Matice obecně není symetricá Graf zadaný áhoou maticí: onečným prům matice přiřadíme podle očísloání rcholů orientoané hrany ( šipy ), prům matice roným, případně prům na hlaní diagonále (potenciální smyčy) roným nule hrany nepřiřadíme Orientoaný sled grafu G: liboolná posloupnost rcholů, přičemž rcholy se mohou opaoat Norma sledu e počet eho hran, áha sledu e rona součtu ah eho hran M-sled z rcholu a do rcholu b: M e ybraná množina rcholů z V M-sled z a do b e aždý orientoaný sled z a do b, ehož pry patří do množiny M Poud se rcholy tomto sledu neopauí, edná se o M-cestu (uzařená M-cesta M-cylus)
distm, G a, b ) e déla neratší M- cesty z a do b (může být i ) Matice M-zdáleností grafu G e D = dist Poud M = V, edná se o matici M-zdálenost dou rcholů a, b ( matice M, G M, G ( i, ) zdáleností ohodnoceného orientoaného grafu G - označení V tomto případě použíáme zápis dist ( a, b ) D G 1 Je dán ohodnocený orientoaný graf H na množině V =,,, pomocí áhoé matice { } 1 2 4 0 0 12 C H = Nareslete tento graf, určete normu a 4 0 10 7 0 1 0 áhu sledu π = [ 2, 2,, 2,, 4 ] Určete matici zdáleností grafu G 2 Koli cylů záporné dély e grafu G, e-li dána eho áhoá 0 2 matice C G = 4 0 2 1 1 0
Určení neratší cesty z daného rcholu do šech rcholů grafu G: Poud se edná o složitěší grafy, u terých e obtížné určit matici zdáleností pohledem, použíáme algoritmy Distrů, případně Floydů Distrů algoritmus: (aždá hrana musí mít nezápornou áhu) cíl naít pro zolený rchol a etor zdáleností (déle neratších cest) do šech rcholů Postup: - zolíme rchol a = i V, - postupně ytoříme posloupnost množin rcholů = M 0, M1,, M n = V a posloupnost n rozměrných etorů (0) (1) ( n) d, d,, d ta, aby pro množinu M a etor ( ) ( ), ( ),, ( ) d = d1 d2 d n platilo: V d = distm a, a naíc ( ) (, ) M d = dist a (ybíráme postupně rcholy, přes teré postupueme neratšími roy; ty postupně přidááme do množin M Již známé neratší etapy si pamatueme pomocí pomocných etorů pom )
Uáza realizace Distroa algoritmu na onrétním příladě: Přílad 1: Je dán orientoaný ohodnocený graf G pomocí áhoé matice C G : (Požadueme, aby aždá hrana měla nezápornou áhu) C G 0 6 20 0 2 9 = 0 6 4 11 0 2 0 Jao rchol a zolíme rchol : ( ) d pom Kro M 1 2 4 1 2 4 0 0 6 0 6 1 0 6 12 2, 2 0 6 8 6, 2, 0 8 6 12 19 8 4, 2,, 4 12 0 8 6 12 18 17 2, 2,, 4, 1 12 0 8 6
Komentář postupu ytoření tabuly: ( 0) Kro 0: M 0 e prázdná, do řádu 0 tabuly píšeme ao etor d třetí řáde matice, tedy přímé cesty z rcholu do ostatních rcholů Nemenším číslem h řádu e 0 (značíme hězdičou), andidátem na nebližší rchol q e, tedy q = Pomocný etor pom má složy roné součtu slože c a čísla h = 0 Kro 1: M 1 obsahue, do řádu 1 tabuly píšeme ao složy ( 1) etoru d ( 0) ždy tu menší hodnotu ze slože etoru d a etoru pom z předchozího řádu ( tomto případě předchozí etor opíšeme, na předchozím řádu sou oba etory stené) 0 už e označena ao prní pre hledaného etoru zdáleností Nemenším číslem h e pa číslo (označíme hězdičou), andidátem e rchol 2 Složy etoru pom sou součty čísla h = a slože 2 řádoého etoru ( 2) áhoé matice c Kro 2: M 2 obsahue rcholy, 2, do řádu 2 tabuly opět píšeme ( 2) ao složy etoru d ( 1) ždy tu menší hodnotu ze slože etoru d a etoru pom z předchozího řádu Číslo už e označeno ao druhý pre hledaného etoru zdáleností Nemenším ze zbýaících neoznačených čísel e číslo 6 to e to h, značíme hězdičou (pozn: pomocný etor nabízí ao neratší cestu do nebližšího rcholu cestu přes 2 o délce 12, my ale ybíráme menší hodnotu 6, přímou cestu do ) Kandidátem e pa rchol Složy etoru pom sou součty čísla h = 6 a slože řádoého ( ) etoru áhoé matice c Atd Vetorem zdáleností z rcholu do šech rcholů e etor ( 12,,0,8,6 )
Floydů algoritmus Požadueme, aby graf neobsahoal cyly záporné dély, tedy aby pro aždou uzařenou cestu platilo, že eí áha e ětší nebo roná nule Přílad 2: Floydoým algoritmem zpracute graf, e-li dána eho áhoá matice: C G 1 0 1 2 = 0 4 2 1 1
Komentář postupu apliace Floydoa algoritmu: Postupně ytáříme posloupnost množin = M 0, M1,, M n = V a posloupnost matic, ( ) ( ) D = d = D i M G Začneme množinou M 0 = ( = 0), matice ( 0) D = C G Princip postupu: V matici ( ) D udáá aždý eí pre ( ) di délu neratší cesty na množině iž proěřených rcholů M { } =,, 1 V aždém rou ytoříme matici POM = ( p i ), de ( ) ( ) p = d + d (edná se o součet iž určených atuálních i i, + 1 + 1, neratších cest z rcholu i přes noě proěřoaný rchol + 1 do rcholu ) Matice POM nabízí proěření, zda e ratší cesta z i do množině {,, 1 } nebo zda cesta přes rchol + 1 e ratší na D + 1 Matici ytoříme ta, že aždý eí pre e minimální ( ) hodnotou příslušných prů matice D a matice POM - platí ( ) d + = min d, p 1 i i i Tento postup opaueme do té doby, poud + 1< n Poud se na hlaní diagonále matice D (neratší M cesty z i do i - což e cylus) obeí záporné číslo, edná se o graf se záporným cylem a chod algoritmu zastaíme Floydů algoritmus můžeme modifioat ta, že e aždému pru ( ) matice D píšeme méno předposledního rcholu, přes terý se danému rcholu dode ( )
Přílady: Graf z příladu 1 zpracute Floydoým algoritmem 4 V příladu 6 ze cičení 7 určete Distroým algoritmem cenu neleněšího propoení mezi San Franciscem a Atlantou a dále mezi Denerem a New Yorem Váhoou matici daného grafu zpracute Floydoým algoritmem Uažte na příladu, proč Distrů algoritmus nefungue, dyž hrany mohou mít zápornou áhu 0 2 6 Graf e dán áhoou maticí C H = 4 0 2 Koli cylů 1 1 0 záporné dély obsahue? Určete eho matici zdáleností 0 20 10 10 0 0 7 Zadanou matici zpracute Floydoým 10 0 0 0 40 0 algoritmem (a) Vysětlete, co znamená ýslede ašeho ýpočtu (b) Apliute na prní řádu Distrů algoritmus i případě, že nesou splněny nutné podmíny pro eho apliaci 0 p 72 0 11 8 V matici CG = určete množinu šech 0 26 4 11 0 hodnot p taoých, že graf G splňue podmínu užití Floydoa, ale ne Distroa algoritmu
9 Je dán ohodnocený orientoaný graf P, ehož matice ah e zapsána ta, že řády a sloupce odpoídaí po řadě rcholům u,, w, x, y, z a pomlča znamená neexistenci hrany 0 1 4 0 2 1 1 0 1 2 0 6 4 1 0 1 1 2 0 Pomocí Distroa algoritmu naděte zdálenost z rcholu u do rcholu z a dále z rcholu y do rcholu x četně nalezení příslušných neratších cest