Szczegóły

Transkrypt

Szczegóły
Temat: Problem minimalnego drzewa Steinera. Definicja
problemu. Zastosowania. Algorytm dokładny –
Hakimi. Algorytmy aproksymacyjne.
1.
Definicja problemu
Wej cie: Graf spójny niezorientowany G = <V, E, w> z funkcj
kosztu w: E
R+ . X – zbiór wierzchołków grafu G,
które nazwiemy terminalami. |X| = t. Elementy zbioru
V\X to tzw. wierzchołki Steinera.
Wyj cie: Drzewo rozpinaj ce wszystkie wierzchołki ze zbioru
terminali o minimalnym koszcie. Do drzewa mo e
nale e dowolny podzbiór wierzchołków Steinera.
Przykład
Przykład grafu wej ciowego w problemie Steinera. Kolorem
czerwonym oznaczone s wierzchołki b d ce terminalami, za
kolorem czarnym wierzchołki Steinera.
1
Koszt
drzewa Steinera wynosi 11. Kolorem niebieskim
oznaczono kraw dzie nale ce do drzewa Steinera
2. Zastosowania
Problem drzewa Steinera ma zastosowania w wielu dziedzina
dziedzinach.
Przykładowe zastosowania:
• problem multicast routingu - terminale w drzewie Steinera
s jednoznaczne z komputerami odbiorców, pozostałe w zły
sieci to routery. Nale y wyznaczy taki zbiór routerów, aby
poł czy
wszystkich odbiorców i zmaksymalizowa
szybko poł czenia (albo zminimalizowa opó nienia)
nienia).
2
• projektowanie układów elektronicznych VLSI ( ang. Very
Large Scale Integration (VLSI) – wi cej ni 100 000
elementów,
typowo – miliony elementów),, w których
nale y wyznaczy mo liwie
liwie najkrótsze cie ki ł cz ce
poszczególne piny.
3.
Algorytm dokładny (Hakimi 1971)
Problem drzewa Steinera zarówno w sformułowaniu klasycznym
jak i we wszystkich odmianach nale y do problemów NPNP
trudnych. Algorytm
m dokładny rozwi zuj cy ten prooblem ma
zatem koszt ponadw
wielomianowy nie mo e by zastossowany do
grafów, które maj wi cej ni 20 – 30 wierzchołków, z powodu
nierozs dnego czasu
u wykonania.
W algorytmie Hakimi,
Hakimi który jest algorytmem dokładnym,
wyznaczamy wszystkie podzbiory zbioru wierzchołków nie
b d cych terminalami. Liczno
tych podzbiorów waha si od 0
3
do liczby wierzchołków Steinera. Dla ka dego z podzbiorów
wyznaczamy drzewo spinaj ce wierzchołki terminalne z tym
podzbiorem. Je li rozmiar tego drzewa jest mniejszy od rozmiaru
drzewa znalezionego w kroku poprzednim, zast pujemy stare
drzewo, nowym. Drzewo o minimalnym koszcie jest minimalnym
drzewem Steinera.
algorytmu Hakimi:
min= ;
for (A ⊂ V/X)
{
T = „minimalne drzewo spinaj ce podzbiór A ze
wszystkimi terminalami”;
if („T istnieje”)
{
if (w(T)<min) // w(T) – koszt drzewa T
{
Tmin = T;
min = w(T);
}
}
}
return Tmin;
4
Przykład
Wierzchołki {a, c, g, i} to terminale, za w zły {b, d, e, f, h} to
wierzchołki Steinera.
W ka dym kroku algorytmu Hakimi sprawdzany jest jeden
podzbiór A wierzchołków Steinera. Najliczniejszy z tych
podzbiorów jest pi cioelementowy: {b, d, e, f, h}. Kolejne
podzbiory maj
podzbiorów
rozmiar mniejszy od 5. W ród wszystkich
jest
równie
podzbiór
pusty.
Dla ka dego podzbioru A wyznaczane jest minimalne drzewo T
spinaj ce ten podzbiór oraz wszystkie terminale wyst puj ce w
grafie.
Dla podzbioru A = {b, d, e, f, h} minimalne drzewo spinaj ce T
wygl da nast puj co:
5
Dla podzbioru A = {b, d, e} nie istnieje minimalne drzewo
rozpinaj ce ł cz ce wierzchołki ze zbioru A ze wszystkimi
terminalami. W tej sytuacji podzbiór A jest odrzucany.
Wyznaczaj c wszystkie podzbiory dla rozpatrywanego przykładu,
okazuje si i podzbiór A = {b, e, h} wygeneruje minimalne
drzewo Steinera.
Poni ej wypisane zostały wszystkie podzbiory A oraz wagi
minimalnych drzew spinaj cych wierzchołki tych podzbiorów:
{b, d, e, f, h} = 14 – zapis ten oznacza, e koszt minimalnego
drzewa spinaj ce wierzchołki {b, d, e, f, h} z
terminalami wynosi 14.
6
{b, d, e} – nie istnieje
{b, d, f} = 14
{d, e} - nie istnieje
{b, d, h} = 12
{d, f} - nie istnieje
{b, e, f} - nie istnieje
{d, h} - nie istnieje
{b, e, h} = 10
{e, f} - nie istnieje
{b, f, h} = 12
{e ,h} - nie istnieje
{d,e,f} = 14
{f, h} - nie istnieje
{d, e, h} - nie istnieje
{b} - nie istnieje
{d, f, h} = 13
{d} - nie istnieje
{e, f, h} - nie istnieje
{e} - nie istnieje
{b, d} - nie istnieje
{f} - nie istnieje
{b, e} - nie istnieje
{h} - nie istnieje
{b, f} - nie istnieje
{}
-
nie
istnieje
{b, h} - nie istnieje
Koszt algorytmu dokładnego
Generowane s wszystkie podzbiory zbioru wierzchołków Steinera.
Liczba elementów w tych podzbiorach wynosi 0, 1, …, n – t, zatem
liczba tych podzbiorów jest równa 2n-t. Dla ka dego podzbioru
wyznaczane jest minimalne drzewo rozpinaj ce ten podzbiór oraz
wszystkie terminale. Do generowania minimalnego drzewa
rozpinaj cego mo na wykorzysta algorytm Prima. Koszt tego
algorytmu jest rz du Ο(m log n) (pod warunkiem, e kolejka
priorytetowa zostanie zrealizowana na kopcu Fibonacciego). Na koszt
całego algorytmu ma to niewielki wpływ. Koszt globalny algorytmu
jest równy O(2n-tmlogn).
7
4. Algorytm zachłanny
Nierozs dny (ponadwielomianowy) koszt rozwi za dokładnych dla
problemu drzewa Steinera powoduje, e nie mog by one
wykorzystane w praktyce. Opracowano wiele rozwi za
aproksymacyjnych dla tego problemu. Najprostsza heurystyka opiera
si na technice zachłannej.
Algorytm rozpoczyna si od wylosowania terminala. W kolejnych
krokach wybierany jest terminal najbli szy poprzedniemu, to jest z
najmniejsz wag kraw dzi. Nast pnie ł czymy nowo wybrany
terminal z poprzednim kraw dziami najkrótszej cie ki mi dzy nimi.
Algorytm ko czy si w momencie wykorzystania wszystkich
terminali.
algorytm zachłanny;
x = “losowy terminal x∈ X”;
T = ({x}, ∅ );
for (i = 1; i <=t-1; i++)
{
s = x;
D = algorytm_Dijkstry(s); // D – tabela minimalnych
// odległo ci z s
v = „terminal najbli szy x”;
T = T ∪ path(s, v); // path(s, v) – kraw dzie z najkrótszej
// cie ki mi dzy s a v
}
return T;
8
Przykład
Wierzchołki {a, c, g, i} s terminalami, za wierzchołki { b, d, e, f, h}
to wierzchołki Steinera.
W pierwszym kroku algorytmu wybierany jest drog
wierzchołek v b d cy terminalem. Niech v = c.
losow
Ustalamy najkrótsze cie ki z v do pozostałych terminali. Mo na tutaj
u y algorytmu Dijkstry, który zwraca tablic odległo ci D z danego
wierzchołka terminalnego do wszystkich pozostałych wierzchołków.
9
Tablica D wygl da nast puj co:
D = [ 4, 2, 0, 5, 3, 2, 7, 5, 5]
a b c d e f g h i
Z tabeli D wybieramy terminalny wierzchołek poło ony najbli ej
wierzchołka c, który nie został jeszcze wł czony do drzewa.
Najbli szym terminalem w stosunku do c jest wierzchołek a, a
odległo
do niego wynosi 4. Rozmiar minimalnego drzewa Steinera
wynosi teraz 4. Drzewo to zawiera kraw dzie z najkrótszej cie ki z c
do a.
Tablica D ulega zmianie, gdy teraz wierzchołek a jest wierzchołkiem
startowym w algorytmie Dijkstry. Nowa zawarto tablicy D jest
nast puj ca:
D = [0, 2, 4, 3, 3, 5, 5, 5, 7]
a b c d e f g h i
W tej sytuacji najbli szym a i niewybranym dot d terminalem jest g.
Sytuacj t obrazuje rysunek poni ej:
10
Po dodaniu kolejnego terminala do drzewa Steinera zwi ksza si jego
rozmiar do 9.
Po raz kolejny tablica D generowana przez algorytm Dijkstry ulega
zmianie. Tym razem wierzchołkiem pocz tkowym jest wierzchołek g.
Tablica D przedstawia si teraz nast puj co:
D = [5, 5, 7, 2, 3, 5, 0, 1, 3]
a b c d e f g h i
Z tablicy tej wybieramy terminal najbli szy g. Jest nim terminal i.
Sprawdzamy, czy nie nale y do drzewa Steinera. Je li nie, to
doł czamy go do drzewa.
Ko czymy algorytm w momencie, gdy wszystkie terminale s
odwiedzone. Ostatecznie minimalne drzewo Steinera ma rozmiar
równy 12 i przedstawia si nast puj co:
11
Koszt algorytmu zachłannego dla problemu drzewa Steinera
Koszt algorytmu zachłannego w porównaniu z algorytmem
dokładnym jest niewielki. Na czas realizacji tego algorytmu ma
głównie wpływ wykorzystanie algorytmu Dijkstry. Algorytm ten jest
uruchamiany dla ka dego terminala, czyli t razy. Koszt algorytmu
Dijkstry jest rz du O(nlogn), a wi c koszt globalny algorytmu wynosi
O(tnlogn).
Algorytmy zachłanny nie zawsze zwraca wynik optymalny. Jako
aproksymacji tego algorytmu zostanie omówiona pó niej.
5.
Algorytm KMB (Kou, Markovsky, Berman)
Algorytm KMB, w celu obliczenie minimalnego drzewa Steinera,
przebudowuje graf wej ciowy, usuwaj c z niego wszystkie
wierzchołki Steinera. W powstałym grafie pełnym kraw dzie mi dzy
terminalami maj wag równ długo ci najkrótszych cie ek w grafie
pocz tkowym.
12
algorytm KMB;
G’ = <X, E’>; // E’={(a, b): a, b ∈ X i
// w(a, b) = w(„minimalna cie ka z a do b w G”)}
T’ =” minimalne drzewo spinaj ce G’;
T = „ podgraf G’ taki, e dla ka dej kraw dzi w T’
odtwarzamy najkrótsz
cie k w G”;
return T;
Przykład
Wierzchołki {a, c, g, i} s terminalami, za wierzchołki {b, d, e, f, h}
to wierzchołki Steinera.
Pierwszym krokiem algorytmu KMB jest przebudowanie grafu G na
graf G’. Zast pujemy wszystkie kraw dzie mi dzy terminalami
prowadz ce przez wierzchołki Steinera jedn kraw dzi o koszcie
najkrótszej cie ki pomi dzy tym terminalem w grafie G.
13
W momencie utworzenia nowego grafu G’ wywoływany jest algorytm
wyznaczaj cy minimalne drzewo rozpinaj ce graf G’. Je eli
zastosowany zostanie algorytm Prima, to minimalne drzewo
rozpinaj ce T’ grafu G’ b dzie nast puj ce:
W ostatnim kroku algorytmu nale y odtworzy cie ki z grafu G dla
ka dej kraw dzi drzewa T’. Uzyskane w ten sposób drzewo T jest
wynikiem algorytmu.
14
Koszt drzewa T wynosi 12.
Koszt algorytmu KMB dla problemu drzewa Steinera
Konstrukcja grafu G’ ma koszt O(t2nlogn), poniewa dla ka dej pary
terminali trzeba ustali najkrótsz cie k mi dzy tymi terminalami.
Wyznaczenie drzewa rozpinaj cego T’ dla grafu G’ ma koszt
O(t2logn) (gdy zastosujemy algorytm Prima z kolejk
zaimplementowan
na
kopcu
Fibonacciego).
Odtworzenie
najkrótszych cie ek z grafu G dla ka dej kraw dzi drzewa T’ ma
koszt O(t2nlogn) poniewa dla ka dej kraw dzi z T’ trzeba wywoła
algorytm Dijkstry. Zatem koszt ł czny algorytmu KMB wynosi
O(t2nlogn).
6.
Jako
aproksymacji algorytmów przybli onych
Jako aproksymacji mo na okre la stosuj c poj cie ograniczenia
wzgl dnego.
W poni szych definicjach b d stosowane nast puj ce oznaczenia:
C* - koszt rozwi zania optymalnego, C – koszt rozwi zania
przybli onego.
Def. Powiemy, e algorytm aproksymacyjny ma ograniczenie
wzgl dne ε(n), gdy dla dowolnych danych wej ciowych
spełniony jest warunek:
C* C
max
,
≤ ε (n )
C C*
Algorytm zachłanny i KMB ma stałe ograniczenie wzgl dne równe
odpowiednio 2 i 1.7.
15