Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Körmentes irányított gráfban legrövidebb utak

Hasonló előadás


Az előadások a következő témára: "Körmentes irányított gráfban legrövidebb utak"— Előadás másolata:

1 Körmentes irányított gráfban legrövidebb utak
KIG_LEGRÖVIDEBB_ÚT(G,w,s) A G csúcsainak topologikus rendezése EGY_FORRÁS_KEZDŐÉRTÉK(G,s) FOR  u csúcsra azok topologikus sorrendjében DO FOR  v Adj[u]-ra DO KÖZELIT(u,v,w) (V+E) :44:49 ADAT-11

2 Legrövidebb utak minden csúcspárra
Szomszédsági w mátrixot alkalmazunk a gráf (hálózat) megadására wij = 0, ha i=j, wij =az irányított (i,j) él hossza, ha i j és (i,j) E wij = , ha i j és (i,j)  E Kimenet egy D=(dij) mátrix, amelyben a legrövidebb utak hossza szerepel Megelőzési mátrix =(ij), amelyben az (i,j) elem NIL, ha i=j, vagy nem vezet út i és j között, egyébként pedig a j-t megelőző csúcs valamely az i-ből j-be vezető legrövidebb úton. Megelőzési részgráf Legrövidebb utak fája :44:49 ADAT-11

3 Floyd-Warshall algoritmus
FLOYD_WARSHALL(W) n  sorok_száma[W] D(0) W FOR k 1 TO n DO FOR i 1 TO n DO FOR j 1 TO n DO d(k)ij min(d(k-1)ij,d(k-1)ik+d(k-1)kj) RETURN(D(n)) (n3) (0)ij=NIL, ha i=j vagy wij=  (0)ij=i, ha i  j és wij< (k)ij= (k-1)ij, ha d(k-1)ij d(k-1)ik+d(k-1)kj (k)ij= (k-1)kj, ha d(k-1)ij >d(k-1)ik+d(k-1)kj :44:49 ADAT-11

4 Gráfok tranzitív lezártja
Definíció: A G gráf tranzitív lezártja az a G*=(V,E*) gráf, melyre E* ={(i,j): létezik G-ben i-ből j-be út} TRANZITIV_LEZÁRT(G) n  V[G] FOR i  1 TO n DO FOR j  1 TO n DO IF i=j vagy (i,j) E[G] THEN t(0)ij 1 ELSE t(0)ij 0 FOR k 1 TO n DO FOR i 1 TO n DO FOR j 1 TO n DO t(k)ij t(k-1)ij (t(k-1)ik  t(k-1)kj) RETURN(T(n)) (n3) :44:49 ADAT-11

5 Dinamikus programozás
Oszd meg és uralkodj Dinamikus programozás Független részproblémákat oldunk meg A részproblémák nem függetlenek (közösek), egyszer oldódnak meg, újabb felhasználásig tárolódnak. A megoldásokat egyesítjük Általában optimalizálásra használjuk, amikor sok megengedett megoldás van A dinamikus programozás lépései Jellemezzük az optimális megoldás szerkezetét Rekurzív módon definiáljuk az optimális megoldás értékét Kiszámítjuk az optimális megoldás értékét alulról felfelé módon A kiszámított információk alapján megszerkesztjük az optimális megoldást :44:49 ADAT-11

6 Példa: Mátrixok véges sorozatainak szorzása
Definíció: Mátrixok szorzatát teljesen zárójelezettnek nevezzük, ha a szorzat vagy egyetlen mátrixból áll, vagy pedig két, zárójelbe tett teljesen zárójelezett mátrix szorzata Legyenek az A,B, C mátrixok méretei 2x3, 3x4, és 4x5 Számítsuk ki a D=ABC mátrixot. D mérete 2x5 Műveletszám (szorzások száma) két mátrix összeszorzásakor: pqr, ha a méretek pxq és qxr Első módszer: ((AB)C), műveletszám 2x3x4+2x4x5=24+40=64 Második módszer: (A(BC)), műveletszám 3x4x5+2x3x5=60+30=90 :44:49 ADAT-11

7 Mátrixok véges sorozatainak szorzása (2)
Legyenek az összeszorzandó mátrixok: A1,A2,  ,An Legyen az Ai mátrix mérete pi-1xpi i=1,  ,n Legyen P(n) az n mátrix zárójelezéseinek a száma. P(1)=1 P(2)=P(1)*P(1)=1 P(3)=P(1)*P(2)+P(2)*P(1)=1*1+1*1=2 P(4)=P(1)*P(3)+P(2)*P(2)+P(3)*P(1)=1*2+1*1+2*1=5 P(n)=Cn-1, ahol Cn=(2n alatt n)/(n+1) (Catalan számok, exponenciális a növekedésük) :44:49 ADAT-11

8 Mátrixok véges sorozatainak szorzása (3)
Az optimális zárójelezés szerkezete Legyen Ai…j=AiAi+1…Aj Az optimális eset az A1,A2,  ,An szorzatot k-nál vágja szét A1…n=A1…k*Ak+1…n Költség= A1..k költsége + Ak+1…n költsége + az összeszorzás költsége A1..k és Ak+1…n zárójelezése is optimális kell legyen. :44:49 ADAT-11

9 Mátrixok véges sorozatainak szorzása (4)
Legyen mij az Ai..j kiszámításának minimális költsége Legyen sij az a k index, ahol az Ai..j szorzat ketté van vágva :44:49 ADAT-11

10 Mátrixok véges sorozatainak szorzása (5)
p=(p0,p1,…,pn) O(n3) MÁTRIX_SZORZÁS_SORREND(p) n  hossz[p]-1 FOR i 1 TO n DO mii 0 FOR l 2 TO n DO FOR i 1 TO n-l+1 DO j i+l-1 mij   FOR k  i TO j-1 DO q mik+mk+1,j+pi-1pkpj IF q <mij THEN mij q sij k RETURN (m,s) :44:49 ADAT-11

11 Mátrixok véges sorozatainak szorzása (6)
A1 * A2 * A3 * A4 (2x3) (3x4) (4x5) (5x6) m 1 2 3 4 5 6 24 64 124 60 150 120 (1,2) 0+0+2*3*4 24 (2,3) 0+0+3*4*5 60 (3,4) 0+0+4*5*6 120 (1,3) 0+60+2*3*5 90 24+0+2*4*5 64 (2,4) *4*6 192 60+0+3*5*6 150 (1,4) *3*6 186 *4*6 64+0+2*5*6 124 s 1 2 3 4 ((A1 * A2) * A3) * A4 :44:49 ADAT-11

12 Mátrixok véges sorozatainak szorzása (7)
MÁTRIX_LÁNC_SZORZÁS(A,s,i,j) IF j>i THEN X MÁTRIX_LÁNC_SZORZÁS(A,s,i,sij) Y MÁTRIX_LÁNC_SZORZÁS(A,s,sij+1,j) RETURN ( MÁTRIXSZORZÁS(X,Y) ) ELSE RETURN(Ai) :44:49 ADAT-11


Letölteni ppt "Körmentes irányított gráfban legrövidebb utak"

Hasonló előadás


Google Hirdetések