You are on page 1of 44

Optimalni putevi u

transportnim mrežama
Optimalni put : Najkraći put, najduži put, najbrži
put, put sa najveæim kapacitetom, najjeftiniji put,
najpouzdaniji put

Grane u mreži su okarakterisane “dužinom”.

Pod “dužinom” grane može da se podrazumeva


dužina, vreme putovanja, transportni troškovi,
pouzdanost itd.
Najčešće se podrazumeva da su “dužine”
svih grana u mreži determinističke veličine.

U slučajevima kada su “dužine” grana


slučajne promenjive, susrećemo se sa
problemom iznalaženja optimalnog puta u
stohastičkoj mreži.

U nekim situacijama put kojim treba da se


krećemo kroz mrežu treba odrediti na osnovu
dva ili više kriterijuma (višekriterijumski
problem odredjivanja najboljeg puta u mreži).
Iznalaženje najkraćeg puta izmedju dva
specificirana čvora

Iznalaženje najkraćih puteva izmedju


jednog čvora i svih ostalih čvorova u
mreži

Iznalaženje k najkraćih puteva izmedju


jednog čvora i svih ostalih čvorova u
mreži

Iznalaženje najkraćih puteva izmedju


svih parova čvorova u mreži
Iznalaženje k najkraćih puteva izmedju
svih parova čvorova u mreži

Iznalaženje najkraćeg puta izmedju dva


čvora koji mora da prodje kroz neke od
unapred specificiranih čvorova

Iznalaženje najkraćeg puta izmedju dva


čvora koji mora da prodje kroz neke od
unapred specificiranih grana
Iznalaženje najkraćih puteva od
jednog čvora do svih ostalih
čvorova u mreži

s i j t
d ( i, j)
Dužina odredjenog puta jednaka je
zbiru dužina grana koje ulaze u sastav
tog puta.

Problem iznalaženja najkraćeg puta se


svodi na naziva problem odredjivanja
vektora tokova kome odgovaraju
minimalni troskovi (The Minimum
Cost Flow Problem).
Minimizirati

∑d (i ,
( i , j )∈A
j ) x ij

pri ograničenjima:
1 za i = s

∑ xij − ∑ x ji =  − 1 za i = t
{ j ( i , j )∈ A} { j ( j ,i )∈ A} 0 u osta lim slucajevima

xij ≥ 0 ∀ (i, j ) ∈ A
Primer:Mreža u kojoj treba odrediti
najkraći put od čvora 1 do čvora 7
6
2 5 5
4
1 8
5
4 7

3
5 6 5
3
Uvedimo u razmatranja binarne promenljive xij koje
ćemo definisati na sledeći način:

1 ukoliko grana (i, j ) pripada najkracem putu


xij = 
0 u sup rotnom slucaju
Grana (i,j) Duzina grane
d(i,j)

(1,2) 6

(1,3) 7

(1,4) 8

(2,4) 5

(3,4) 5

(4,5) 4

(4,6) 3

(5,7) 5

(6,7) 5
Minimizirati

F = 6 x12 + 7 x13 + 8 x14 + 5 x 24 + 5 x34


+ 4 x 45 + 3 x 46 + 5 x57 + 5 x67

pri ograničenjima:
x12 + x13 + x14 = 1
x12 − x 24 = 0
x13 − x34 = 0
x14 + x 24 + x34 − x 45 − x 46 = 0
Nastavak ograničenja:

x 45 − x57 = 0
x 46 − x 67 = 0
− x57 − x 67 = − 1
Optimalno rešenje:

x14 = x 46 = x 67 = 1

x12 = x13 = x 24 = x 34 = x 45 = x 57 = 0
Put (1,4,6,7) koji predstavlja
najkraći put izmedju čvora 1 i
čvora 7
6
2 5 5
4
1 8
5
4 7

3
5 6 5
3
Generički algoritam za
iznalazenje najkraćih puteva od
jednog čvora do svih ostalih
čvorova u mreži
Mreža: G = (N, A)
Odredimo najkrace puteve od početnog
čvora (čvor 1) do svih ostalih čvorova
mreze.
Svakoj grani (i, j) A pridružena je
odgovarajuća dužina d(i, j).
Svakom čvoru je pridružena oznaka koja
predstavlja dužinu najkraćeg poznatog puta
od čvora 1 do čvora i.
Mreža u kojoj treba utvrditi
najkraće puteve od čvora 1 do
svih ostalih čvorova
d(1,2) d
2 2

1 d d
1 i

n
i
d(1,3) d(i,j)

3
d 3
j d j
U okviru generičkog algoritma koji je
predlozio Bertsekas (1998) se tzv. lista
čvorova-kandidata V i vrednosti vektora
(d 1 , d 2 ,..., d n)
neprestano modifikuju. Na početku
procesa iznalaženja najkracih puteva je:

V ={1}

d1 = 0 di = ∞ ∀i ≠ 1
Odstraniti čvor i iz skupa čvorova-kandidata V. Za svaku granu (i, j ) ∈ A koja
izlazi iz čvora i za koju je d j > d i + d (i, j ) modifikovati vrednost veličine d j na
sledeci način: d j := d i + d (i, j ) . Uključiti čvorove j u skup čvorova-kandidata V u
slučaju da jos uvek nisu uključeni u ovaj skup.
Utvrditi najkraće puteve od čvora
1 do svih ostalih čvorova

6
2
5
1
8
4
7
8

5
3
Početak procesa iznalaženja
najkraćih puteva
V={1}
d 1= 0
d 2= d 3= d 4 =

Vektor dužima najkraćih puteva glasi:

{0, ∞, ∞, ∞}
Iteracija 1:
Iz skupa čvorova-kandidata V
isključujemo čvor 1. Iz čvora 1 izlaze
grane (1,2), (1,3) i (1,4). Za ove grane je
ispunjeno:
∞ = d 2 > d 1 + (1,2) = 0 + 6 = 6
∞ = d 3 > d 1 + (1,3) = 0 + 7 = 7
∞ = d 4 > d 1 + (1,4) = 0 + 8 = 8
Vrednosti veličina d 2 , d 3 i d 4 treba da budu promenjene. Nove vrednosti ovih veličina
su:
d 2 := d 1 + d (1,2) = 0 + 6 = 6

d 3 := d 1 + d (1,3) = 0 + 7 = 7
d 4 := d 1 + d (1,4) = 0 + 8 = 8
Čvorove 2, 3 i 4 uključujemo u skup V s obzirom da do sada nisu bili uključeni u ovaj
skup. Skup V glasi:
V = { 2,3,4}
Vektor duzina najkracih puteva glasi:
{ 0,6,7,8}
Iteracija 2:
Iz skupa čvorova-kandidata V isključujemo čvor 2. Iz čvora 2 izlazi grana (2,4).
Za ovu granu je ispunjeno:
8 = d 4 < d 2 + (2,4) = 6 + 5 = 11
Vrednost veličine d 4 ne treba da bude promenjena.
Skup V glasi:
V = { 3,4}
Vektor duzina najkracih puteva glasi:
{ 0,6,7,8}
Iteracija 3:
Iz skupa čvorova-kandidata V isključujemo čvor 3. Iz čvora 3 izlazi grana (3,4).
Za ovu granu je ispunjeno:
8 = d 4 < d 3 + (3,4) = 7 + 5 = 12
Ovo znači da ne treba da modifikujemo vrednost veličine d 4 . U skup V u ovom trenutku
ne uključujemo nijedan novi čvor. Skup V glasi:
V = { 4}
Vektor duzina najkracih puteva glasi:
{ 0,6,7,8}
Iteracija 4:
Iz skupa čvorova-kandidata V isključujemo čvor 4. Iz čvora 4 izlazi grana (4,1).
Za ovu granu je ispunjeno:
0 = d 1 < d 4 + (4,1) = 11 + 8 = 19

Ovo znači da ne treba da modifikujemo vrednost veličine d 1 . U skup V u ovom trenutku


ne uključujemo nijedan novi čvor. Skup V je postao prazan skup. Vektor duzina
najkracih puteva glasi:
{ 0,6,7,8}
Najkraći putevi od čvora 1 do
svih ostalih čvorova
6
2
5
1
8
4
7
8

5
3
Algoritam Dijkstra-e
Algoritam Dijkstra-e (1959)
predstavlja specijalni slučaj generičkog
algoritma.
U Dijkstra-inom algoritmu se iz liste
landidata V u svakoj iteraciji uklanja čvor
i kome odgovara najmanja vrednost
dužine najkraćeg poznatog puta (iz liste
V se uklanja cvor i za koji je ispunjena
sledeća relacija:d i = min d j
j∈V
U algoritmu se pretpostavlja da su
dužine svih grana d(i, j) u mreži
G = (N, A) nenegativne.

a - čvor za koji ćemo istraživati najkraće


puteve do svih ostalih čvorova u mreži.

Svaki čvor u mreži može tokom procesa


iznalaženja najkraćih puteva u mreži da
se nalazi u 2 moguća stanja i to u tzv.
otvorenom stanju ukoliko je čvor
označen privremenim oznakama ili u
zatvorenom, ukoliko je označen
stalnim oznakama.
Algoritam Dijkstra‑e
Algoritam Dijkstra‑e se primenjuje kako
na mreže sa simetričnim, tako i na
mreže sa nesimetričnim rastojanjima
(rastojanje izmedju čvora i i čvora j je
nesimetično ukoliko je d(i, j) ≠ d(j, i)).

Svaki čvor i u mreži označava se sa dve


oznake (dai qi)
Algoritam Dijkstra‑e
dai - dužina najkraćeg puta od čvora a
do čvora i otkrivena do trenutka u kome
posmatramo transportnu mrežu,

qi - čvor koji se nalazi ispred čvora i na


najkraćem putu od čvora a do čvora
i koji je otkriven do trenutka u kome
posmatramo transportnu mrežu
(čvor‑prethodnik čvoru i)
Algoritam Dijkstra‑e
Početna rastojanja izmedju bilo koja
dva čvora u mreži definišu se na sledeći
način:

Rastojanje od bilo kog čvora do njega


samog jednako je nuli.

Rastojanje je beskonačno veliko


ukoliko čvorovi nisu medjusobno
povezani granom.
Algoritam Dijkstra‑e
Ukoliko su čvorovi medjusobno
povezani granom, rastojanje izmedju
njih jednako je dužini grane.

U slučaju kada su dva čvora


medjusobno povezana većim brojem
grana, rastojanje izmedju njih jednako
je dužini najkraće grane koja ih
povezuje.
Algoritam Dijkstra‑e
Označimo sa c poslednji čvor za koga
smo u procesu nalaženja najkraćih puteva
utvrdili da se nalazi u zatvorenom stanju.

Simbolom + označimo čvor‑prethodnik


čvora a.
Proces započinjemo od čvora a.

daa = 0
qa = +
dai = ∞
qi = - i≠ a

c=a
Da bi neke od privremenih oznaka
transformisali u stalne ispitajmo sve
grane (c, i) koje izlaze iz poslednjeg
čvora koji je u zatvorenom stanju (čvor
c). Ukoliko je i čvor i u zatvorenom
stanju predjimo na ispitivanje sledećeg
čvora. Ukoliko je čvor i u otvorenom
stanju, njegovu prvu oznaku dai

d ai = min { d ai , d ac + d (c, i )}
dobićemo na osnovu relacije:
Uporedimo veličine dai svih čvorova
koji se nalaze u otvorenom stanju.

Izaberimo čvor sa najmanjom


vrednošću veličine dai. Neka je to neki
čvor j.

Čvor j prelazi iz otvorenog u zatvoreno


stanje, s obzirom da ne postoji put od a
do j kraći od daj.

Put preko bilo kog drugog čvora bio bi


Ispitajmo dužine svih grana (i, j) koje
vode od čvorova koji se nalaze u
zatvorenom stanju do čvora j sve dok
ne utvrdimo da je ispunjena relacija:
d aj − d (i , j ) = d ai
Neka je ova relacija ispunjena za neki
čvor t. Ovo znači da je čvor t, čvor
prethodnik čvoru j na najkraćem putu
koji vodi od čvora a do čvora j. Znači da
možemo napisati da je qj = t.
Čvor j se nalazi u zatvorenom stanju.
Ukoliko se svi čvorovi u mreži nalaze u
zatvorenom stanju, tada smo završili sa
postupkom za iznalaženje najkraćih
puteva.

Ukoliko postoje još neki čvorovi koji se


nalaze u otvorenom stanju, tada se
vraćamo na korak 2 (ispitujemo sve
grane (c, i) koje izlaze iz poslednjeg
čvora koji je u zatvorenom stanju).
Mreža u kojoj treba odrediti najkraće
puteve od čvora a do svih ostalih
čvorova
b 9 f
10
h j
5
4 2 7
4 9 2
2 6 8 2
a c e l
3
6 3 6
g 7 i 6 k
8
d
Izgled mreže posle završenog
prvog koraka
(∞ , − ) (∞ , − )
b 9 f
(∞ , − ) (∞ , − )
10
h j
5
4 2 7
4 9 2
2 6 8 2
a c e l
(0 , + )′ (∞ , − ) (∞ , − ) (∞ , − )
3
6 3 6
g 7 i 6 k
8 (∞ , − ) (∞ , − ) (∞ , − )

d
(∞ , − )
Izgled mreže posle prvog
prolaza kroz algoritam
(4 , a ) ¢ (∞ , − )
b 9 f
(∞ , − ) (∞ , − )
10
h j
5
4 2 7
4 9 2
2 6 8 2
a c e l
(0 , + )′ (∞ , − ) (∞ , − ) (∞ , − )
3
6 3 6
g 7 i 6 k
8 (∞ , − ) (∞ , − ) (∞ , − )

d
(6 , − )
Izgled mreže posle drugog
prolaza kroz algoritam
(4 , a )¢ (1 3 , − )
b 9 f
(∞ , − ) (∞ , − )
10
h j
5
4 2 7
4 9 2
2 6 8 2
a c e l
(0 , + )′ (6 , b ) ¢ (∞ , − ) (∞ , − )
3
6 3 6
g 7 i 6 k
8 (∞ , − ) (∞ , − ) (∞ , − )

d
(6 , − )
Izgled mreže posle trećeg
prolaza kroz algoritam
(4 , a )¢ (1 3 , − )
b 9 f
(∞ , − ) (∞ , − )
10
h j
5
4 2 7
4 9 2
2 6 8 2
a c e l
(0 , + )′ (6 , b ) ¢ (8 , − ) (∞ , − )
3
6 3 6
g 7 i 6 k
8 (∞ , − ) (∞ , − ) (∞ , − )

d
(6 , a )¢
Najkraći putevi od čvora a do
svih ostalih čvorova
(4 , a ) (1 3 , b )
b 9 f
(2 3 , f) (2 8 , h )
10
h j
5
4 2
2
2
a c e l
(0 , + ) (6 , b ) (8 , c ) ( 3 0 , j)

6
g 7 i 6 k
8 (1 4 , d ) (2 1 , g ) ( 2 7 , i)

d
(6 , a )

You might also like