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

12
22.08.25. 10:25 de. 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)

description

Körmentes irányított gráfban legrövidebb utak. Legrövidebb utak minden csúcspárra. Szomszédsági w mátrixot alkalmazunk a gráf (hálózat) megadására w ij = 0, ha i=j, w ij =az irányított (i,j) él hossza, ha i j és (i,j) E w ij = , ha i j és (i,j)  E - PowerPoint PPT Presentation

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

Page 1: 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)

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

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

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

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

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

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}

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

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

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

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

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

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

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

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.

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

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

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

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)

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

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

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

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)