Körmentes irányított gráfban legrövidebb utak
-
Upload
rhoda-potter -
Category
Documents
-
view
19 -
download
0
description
Transcript of Körmentes irányított gráfban legrövidebb utak
23.04.19. 09:21 du. ADAT-11 1
Körmentes irányított gráfban legrövidebb utak
KIG_LEGRÖVIDEBB_ÚT(G,w,s)
1 A G csúcsainak topologikus rendezése
2 EGY_FORRÁS_KEZDŐÉRTÉK(G,s)
3 FOR u csúcsra azok topologikus sorrendjében DO
4 FOR v Adj[u]-ra DO
5 KÖZELIT(u,v,w)
(V+E)
23.04.19. 09:21 du. 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) Ewij = , 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áfLegrövidebb utak fája
23.04.19. 09:21 du. ADAT-11 3
Floyd-Warshall algoritmus
FLOYD_WARSHALL(W)
1 n sorok_száma[W]
2 D(0) W
3 FOR k 1 TO n DO
4 FOR i 1 TO n DO
5 FOR j 1 TO n DO
6 d(k)ij min(d(k-1)
ij,d(k-1)ik+d(k-1)
kj)
7 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
23.04.19. 09:21 du. ADAT-11 4
Gráfok tranzitív lezártja
TRANZITIV_LEZÁRT(G)
1 n V[G]2 FOR i 1 TO n DO
3 FOR j 1 TO n DO
4 IF i=j vagy (i,j) E[G]
5 THEN t(0)ij 1
6 ELSE t(0)ij 0
7 FOR k 1 TO n DO
8 FOR i 1 TO n DO
9 FOR j 1 TO n DO
10 t(k)ij t(k-1)
ij (t(k-1)ik t(k-1)
kj)
11 RETURN(T(n))
(n3)
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}
23.04.19. 09:21 du. 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
1. Jellemezzük az optimális megoldás szerkezetét2. Rekurzív módon definiáljuk az optimális megoldás értékét3. Kiszámítjuk az optimális megoldás értékét alulról felfelé módon4. A kiszámított információk alapján megszerkesztjük az optimális megoldást
23.04.19. 09:21 du. 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 szorzataLegyenek az A,B, C mátrixok méretei 2x3, 3x4, és 4x5 Számítsuk ki a D=ABC mátrixot. D mérete 2x5Műveletszám (szorzások száma) két mátrix összeszorzásakor: pqr, ha a méretek pxq és qxrElső módszer: ((AB)C), műveletszám 2x3x4+2x4x5=24+40=64Második módszer: (A(BC)), műveletszám 3x4x5+2x3x5=60+30=90
23.04.19. 09:21 du. 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)=1P(2)=P(1)*P(1)=1P(3)=P(1)*P(2)+P(2)*P(1)=1*1+1*1=2P(4)=P(1)*P(3)+P(2)*P(2)+P(3)*P(1)=1*2+1*1+2*1=5P(n)=Cn-1, ahol Cn=(2n alatt n)/(n+1) (Catalan számok, exponenciális a növekedésük)
2),()(
1,1)( 1
1
nhaknPkP
nhanP n
k
23.04.19. 09:21 du. 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étA1…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.
23.04.19. 09:21 du. 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
jihapppmm
jiham
jkijkikjki
ij1,1min
,0
23.04.19. 09:21 du. 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]-1FOR i 1 TO n DO mii 0FOR 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 kRETURN (m,s)
23.04.19. 09:21 du. ADAT-11 11
Mátrixok véges sorozatainak szorzása (6)
A1 * A2 * A3 * A4(2x3) (3x4) (4x5) (5x6) m 1 2 3 4
2 3 4 5 61 3 0 24 64 1242 4 0 60 1503 5 0 1204 6 0
s 1 2 3 4
1 1 2 32 2 33 34
(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) 0+120+3*4*6 192
60+0+3*5*6 150
(1,4) 0+150+2*3*6 186
24+120+2*4*6 192
64+0+2*5*6 124
((A1 * A2) * A3) * A4
23.04.19. 09:21 du. 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)