problem wagi

Transkrypt

problem wagi
Optymalizacja na sieciach - cd.
wykład 6
Badania operacyjne
Problem najkrótszych dróg
- każda krawędź e ma swoją długość (wagę) w(e) (dodatnią lub
ujemną)
- przyjmujemy, że w(u,v) = ∞, jeżeli (u,v) ∉U
- długość drogi w sieci to suma długości jej łuków
- długość drogi v0 jest równa 0
- konsekwencja cykli o ujemnej wadze!
2
s
5
1
2
c
-2
1
b
2
-4
d
a
4
1
t
Zał.: cykle o dodatniej długości
Algorytm wyszukiwania najkrótszej drogi z s do t
Etap I. Wyznacz najkrótsze drogi z s do każdego z pozostałych
wierzchołków w sieci.
Etap II. Wyznacz najkrótszą drogę z s do t.
2
s
1
1
2
c
-2
1
b
2
2
d
v s a b c d t
D[v] 0 1 0 -1 1 2
a
4
1
t
D[t] = D[v] + w(v, t) ...
Algorytm Forda-Bellmana
Dane wejściowe: sieć S = (P, U), długości łuków w: U → R
Dane wyjściowe: macierz D odległości z s do wszystkich
wierzchołków v
dla każdego v ∈P podstaw D[v]:= w(s, v)
D[s]:= 0
dla każdego k od 1do |P| - 2 wykonuj:
dla każdego v ≠ s wykonuj:
dla każdego u∈U wykonuj:
D[v]:= min(D[v], D[u] + w(u, v))
Złożoność: O(n3)
2
s
1
1
2
c
-2
1
b
2
2
d
a
4
1
t
Algorytm Dijkstry – dodatnie wagi
Dane wejściowe: sieć S = (P, U), dodatnie długości łuków
w: U → R+
Dane wyjściowe: macierz D odległości z s do wszystkich
wierzchołków v
dla każdego v ∈P podstaw D[v]:= w(s, v)
D[s]:= 0
T:= P – {s}
dopóki T ≠ ∅ powtarzaj:
wybierz wierzchołek v ∈ Τ tż. D[u] = min{D[p]: p ∈Τ}
T:= T – {u}
dla każdego v ∈T podstaw D[v]:= min(D[v], D[u] + w(u, v))
Złożoność: O(n2)
1
s
5
1
a
1
1
3
c
Iteracja u
0
1
2
3
4
5
b
1
T
1
d
4
1
t
D[s] D[a] D[b] D[c] D[d] D[t]
Problem minimalnego drzewa
spinającego
Dany jest graf nieskierowany G = (V, E) oraz wagi krawędzi w(e).
Drzewem spinającym grafu G nazywamy dowolne drzewo (graf
spójny acykliczny) T = (V, ET) tż. ET ⊆ Ε.
Problem minimalnego drzewa
spinającego
Dany jest graf nieskierowany G = (V, E) oraz wagi krawędzi w(e).
Minimalnym drzewem spinającym grafu G nazywamy drzewo
spinające z minimalną sumą wag.
5
2
4
1
1
3
3
3
6
2
Problem minimalnego drzewa
spinającego
Dany jest graf nieskierowany G = (V, E) oraz wagi krawędzi w(e).
Minimalnym drzewem spinającym grafu G nazywamy drzewo
spinające z minimalną sumą wag.
5
2
3
4
1
1
3
3
6
2
Algorytm Kruskala [1956]
Dane wejściowe: graf G = (V, E) z funkcją wagi w: E → R
Dane wyjściowe: minimalne drzewo spinające T = (V, ET)
ET:= ∅
Posortuj niemalejąco krawędzie E grafu G
Dla każdej e ∈ E
wstaw e do ET pod warunkiem, że nie tworzy cyklu w ET
Złożoność: O(mlogm)
Problem komiwojażera (TSP)
Komiwojażer ma odwiedzić dokładnie raz każdą z wybranych
miejscowości i powrócić do miejscowości, z której rozpoczął podróż.
Znane są koszty przejazdu między każdą parą miejscowości. Należy
zaplanować taką trasę, aby komiwojażer odwiedził każdą miejscowość
dokładnie raz oraz całkowity koszt podróży był możliwie jak
najmniejszy.
problem NP-trudny
●
●
wiele algorytmów przybliżonych polega na znalezieniu cyklu dł. n w n-
wierzchołkowej sieci pełnej (cykl Hamiltona)
●
odmiany TSP – asymetryczny TSP, TSP w sieci niepełnej,
niekonieczny powrót do punktu wyjścia
●
aktualny stan poszukiwań rozwiązań na stronie, np.
http://www.tsp.gatech.edu/index.html
Zastosowania TSP
1. Ramię automatycznej maszyny nitującej, rozmieszczającej nity,
np. na skrzydle samolotu, porusza się od punktu do punktu i po
umocowaniu n nitów wraca do punktu wyjścia. Optymalna droga
poruszania
się
ramienia
jest
rozwiązaniem
odpowiedniego
problemu komiwojażera.
2. Zestaw maszyn wykorzystywany jest do wyprodukowania n
elementów. Zamiana obrabianego elementu związana jest ze
zmianą oprzyrządowania (koszty znamy). Szukamy optymalnej
kolejności obrabiania elementów.

Podobne dokumenty