• Nie Znaleziono Wyników

Dane o ró˙znorodnej strukturze

W dokumencie Index of /rozprawy2/10132 (Stron 28-33)

Wszystkie zaprezentowane uprzednio metody poszukiwania maksymalnego przypływu cechuje wspólne zało ˙zenie, i ˙z przez sie´c komputerow ˛a przesyłane s ˛a dane tego samego rodzaju. W rozpatrywanym systemie medycznym sytu-acja taka zachodzi podczas realizacji projektu wykorzystuj ˛acego du ˙z ˛a ilo´s´c da-nych z identycznego typu urz ˛adzenia pomiarowego, stosowanego na ró ˙znych oddziałach szpitalnych.

W innych projektach konieczne mo ˙ze by´c pozyskanie danych ró ˙znych ty-pów, pochodz ˛acych z odmiennych urz ˛adze ´n medycznych. W sytuacji takiej ko-nieczne jest rozwa ˙zanie zagadnienia transportu danych o ró ˙znorodnej struktu-rze (ang. multi-commodity flow). Problem tego typu cechuje si˛e znacznie wi˛eksz ˛a komplikacj ˛a. Dla przepływów o charakterze całkowitoliczbowym ju ˙z w przy-padku dwóch rodzajów danych zagadnienie nale ˙zy do klasy problemów NP– zupełnych [61].

Zadanie sformalizowa´c mo ˙zna nast˛epuj ˛aco. Maj ˛ac dany graf zorientowany

G = (V, E), pary (s1, t1), . . . , (sk, tk) wierzchołków grafu G, takie ˙ze si 6= ti, funkcj˛e przepustowo´sci u oraz zapotrzebowania d1, . . . , dk, nale ˙zy znale´z´c dla ka ˙zdego i = 1, . . . , k, si − ti przepływ xi, taki ˙ze xi ma warto´s´c di oraz dla ka ˙zdego łuku e grafu G zachodzi:

k

X

i=1

xi(e) ¬ u(e). (1.16)

Rozwi ˛azanie problemu mo ˙ze istnie´c wył ˛acznie, je´sli spełniony jest waru-nek przekroju (ang. cut condition), czyli dla ka ˙zdego W ⊆ V przepustowo´s´c przekroju δout

E (W ) jest niemniejsza ni ˙z zapotrzebowanie δout

R (W ), gdzie R :=

{(s1, t1), . . . , (sk, tk)}. Jest to warunek konieczny, ale w przypadku ogólnym nie-wystarczaj ˛acy. Jest on jednak wystarczaj ˛acy w szczególnej klasie zagadnie ´n, kie-dy s1 = s2 = · · · = sk lub t1 = t2 = · · · = tk. Warto odnotowa´c, i ˙z w rozproszo-nym systemie medyczrozproszo-nym, przy zało ˙zeniu istnienia wył ˛acznie jednej centralnej bazy danych zachodzi przypadek szczególny, w którym wszystkie uj´scia znaj-duj ˛a si˛e w jednym w˛e´zle.

1.5.2.1 Algorytm Forda – Fulkersona

Problem transportu danych o ró ˙znorodnej strukturze w klasie liczb wymier-nych opisa´c mo ˙zna poprzez zestaw nierówno´sci na zmienwymier-nych xi(e) dla i = 1, . . . , koraz e ∈ E. Ograniczeniami s ˛a zasady zachowania balansu dla ka ˙zdego rodzaju danych niezale ˙znie, razem z uogólnionym zało ˙zeniem nieprzekraczal-no´sci przepustowo´sci dla ka ˙zdego łuku grafu.

X

e∈δout(v)

xi(e) − X

e∈δin(v)

X e∈δout(si) xi(e) − X e∈δin(si) xi(e) = di (i = 1, . . . , k), (1.18) k X i=1

xi(e) ¬ u(e) (e ∈ E), (1.19)

xi(e) ­ 0 (i = 1, . . . , k; e ∈ E). (1.20)

Tak postawiony problem rozwi ˛aza´c mo ˙zna w czasie wielomianowym po-przez ogólny algorytm programowania liniowego, jednak liczba zmiennych jest bardzo wysoka. Jedna zmienna dla ka ˙zdego i = 1, . . . , k oraz ka ˙zdej ´scie ˙zki

si− ti. W 1958 roku Ford oraz Fulkerson zaproponowali technik˛e, dzi˛eki której mo ˙zna unikn ˛a´c tak wysokiej liczby zmiennych [26]. Algorytm oparty jest o me-tod˛e sympleksow ˛a (ang. simplex). Wprowadza niejawn ˛a obsług˛e zmiennych, zwan ˛a generacj ˛a kolumn. Nawet najlepsze implementacje powy ˙zszej techniki nie gwarantuj ˛a jednak wystarczaj ˛acej wydajno´sci dla zło ˙zonych sieci obsługu-j ˛acych wiele struktur danych jednocze´snie.

1.5.2.2 Rozwi ˛azanie przybli˙zone Leightona

W 1991 roku zaproponowany został pierwszy szybki algorytm wyznaczaj ˛acy przybli ˙zone rozwi ˛azanie problemu [47].4 Algorytm jest znacz ˛aco szybszy od najlepszych poprzednio znanych algorytmów opartych na programowaniu li-niowym. Dla problemu o k typach danych czas wykonania jest (z dokładno-´sci ˛a do faktora logarytmicznego) identyczny z czasem niezb˛ednym do rozwi ˛ a-zania k problemów o jednorodnej strukturze danych. Idea polega na wyzna-czeniu przepływu, który spełnia wszystkie ˙z ˛adania, narusza natomiast poten-cjalnie ograniczenie maksymalnej przepustowo´sci. Nast˛epnie iteratywnie na-st˛epuje zmiana drogi sieciowej cz˛e´sci przepływu, tak aby zmniejszy´c narusze-nie ograniczenia przepustowo´sci oraz przybli ˙zy´c rozwi ˛azanie do optymalnego. Algorytm potrafi zmieni´c drog˛e sieciow ˛a całego typu danych podczas pojedyn-czej iteracji, dzi˛eki czemu osi ˛aga znacz ˛acy post˛ep podczas ka ˙zdego kroku.

1.5.2.3 Algorytm Karakostasa

Szybsze oszacowanie rozwi ˛azania dla przepływów ró ˙znorodnych typów da-nych zaproponowane zostało w 2002 roku przez Karakostasa [41]. Metoda do-stosowana jest zarówno do zagadnie ´n, w których wystarczaj ˛aca jest niejawna reprezentacja przepływu, jak i do typowych przypadków, kiedy niezb˛edna jest specyfikacja jawna.

Niejawna reprezentacja składa si˛e ze zbioru drzew o korzeniach odpowia-daj ˛acych ´zródłom (mo ˙ze istnie´c wi˛ecej ni ˙z jedno drzewo dla ´zródła) oraz uj-´sciach b˛ed ˛acych li´s´cmi struktury. Drzewa te przechowuj ˛a warto´sci przepływów

4Podobnie jak poprzednio, niezb˛edne jest zało ˙zenie o opisie przepływów za pomoc ˛a liczb wymiernych.

od ´zródeł do uj´s´c. Stosuj ˛ac niejawn ˛a reprezentacj˛e znana jest przybli ˙zona war-to´s´c równoległych przepływów. Posta´c ta jest przydatna, je´sli wymagane jest szybkie obliczenie dobrego przybli ˙zenia λ, natomiast nie jest niezb˛edna zna-jomo´s´c szczegółów przepływu skutkuj ˛acego w λ. Zło ˙zono´s´c obliczeniowa tej wersji algorytmu nie zale ˙zy od ilo´sci typów danych k.

W sytuacjach, kiedy wymagane jest jawne okre´slenie przepływu przez ga-ł ˛a´z, niezb˛edne jest poł ˛aczenie wszystkich drzew razem. Wprowadza to dodat-kowy nakład obliczeniowy. Algorytm zaproponowany przez Karakostasa, wy-znaczaj ˛acy jawny przypływ cechuje prawie minimalna zale ˙zno´s´c czasowa od ilo´sci typów danych przesyłanych przez sie´c. Zale ˙zno´s´c ta wyra ˙zona jest czyn-nikiem wielomianowo-logarytmicznym, dla dowolnej precyzji ε > 0.

Niech D(l) := P

eu(e)l(e). Definiuje si˛e disti(l) jako odległo´s´c najkrótszej ´scie ˙zki od si do ti w grafie G stosuj ˛ac funkcj˛e odległo´sci l. Przez Pi oznacza si˛e zbiór ´scie ˙zek pomi˛edzy si oraz ti. Niech α(l) := P

id(i)disti(l). Oznaczmy

β := minlD(l)/α(l). Dla parametru β < 1 konieczne jest stosowanie procedury skaluj ˛acej, w przypadku kiedy β ­ 1 algorytm stosuje si˛e bezpo´srednio.

Algorytm wykonywany jest w fazach. Ka ˙zda z nich składa si˛e z |S| iteracji.

S oznacza zbiór ´zródeł, który nie musi by´c równy ilo´sci typów danych k. W j-tej

iteracji i-tej fazy rozpatruje si˛e wszystkie dane o wspólnym ´zródle sj. Oznacz-my je poprzez c1, c2, . . . , cr. Przesyła si˛e d(cq), q = 1, . . . , r jednostek danych okre´slonego typu cqw serii kroków. Podczas swojego działania algorytm utrzy-muje funkcj˛e odległo´sci l(·), która wyznacza odległo´s´c l(e) dla ka ˙zdej kraw˛edzi

e ∈ E. Niech li,j,s b˛edzie funkcj ˛a odległo´sci na koniec s-tego kroku. W ka ˙zdym kroku oblicza si˛e najkrótsz ˛a ´scie ˙zk˛e drzewa z sj do uj´s´c danych cq, q = 1, . . . , r. Niech Pcq

i,j,s b˛edzie ´scie ˙zk ˛a w tym drzewie z sj do uj´scia konkretnego typu cq. Przykładowo Pcq

i,j,s ma długo´s´c distcq(li,j,s −1). Zasadnicz ˛a rzecz ˛a jest, i ˙z drzewo najkrótszych ´scie ˙zek dla wszystkich danych o wspólnym ´zródle sjmo ˙ze by´c ob-liczone stosuj ˛ac wył ˛acznie jedno wywołanie algorytmu Dijkstry. Niech dcq

i,j,s > 0

b˛edzie ilo´sci ˛a danych typu cq, które nie zostały jeszcze przesłane w kroku s (dcq

i,j,s = d(cq)). Zauwa ˙zmy, i ˙z rozpatrujemy typy danych o ´sci´sle dodatnim za-potrzebowaniu do zrealizowania oraz ignorujemy te, których zapotrzebowanie uprzednio zostało przesłane w cało´sci. Przy takich zało ˙zeniach w s-tym kroku przesyła si˛e fcq

i,j,s = dcq

i,j,s jednostek ka ˙zdego typu danych cq wzdłu ˙z ´scie ˙zki

Pcq

i,j,s. σ jest czynnikiem skaluj ˛acym zapewniaj ˛acym, i ˙z nie wysyła si˛e poprzez ´scie ˙zk˛e zapotrzebowania wi˛ekszego od przepustowo´sci. Nast˛epnie ustala si˛e

dcq

i,j,s := dcq

i,j,s −1− fcq

i,j,soraz dla ka ˙zdego łuku e na tych ´scie ˙zkach ustawiamy:

li,j,s(e) := li,j,s −1(e) 1 + ε · ł ˛aczny przepływ netto przez e

u(e) ! = li,j,s −1(e) 1 + ε · P cq:e ∈Pi,j,scq fcq i,j,s u(e) . (1.21)

si˛e o czynnik 1 + ε, oraz i ˙z w ka ˙zdej iteracji, podczas ka ˙zdego kroku, opcjo-nalnie oprócz ostatniego, przynajmniej jedna kraw˛ed´z zostaje nasycona, to zna-czy przypisane do niej zostaje u(e) jednostek przepływu. Po ostatnim kroku s

dcq

i,j,s = 0dla ka ˙zdego typu danych cq. Cała procedura ko ´nczy si˛e, je ˙zeli zosta-nie spełniony warunek D(li,j,s) ­ 1ustalaj ˛ac warto´s´c funkcji długo´sci l, a tak ˙ze odpowiadaj ˛acy jej wektor przepływu x(q), q = 1, . . . , k. Mo ˙zna udowodni´c, i ˙z procedura oblicza rozwi ˛azanie, które jest realizowalne oraz bliskie optimum. Pełny algorytm prezentuje si˛e nast˛epuj ˛aco1.6:

Inicjalizuj l(e) := δ/u(e), ∀e ∈ E, x(P ) := 0, ∀P.

while D(l) < 1 do for i = 1 to |S| do

d0(cq) := d(cq), q = 1, . . . , r

while D(l) < 1oraz d0(cq) > 0dla jakiego´s q do

Pcq :=najkrótsza ´scie ˙zka w Pcq u ˙zywaj ˛ac l, q = 1, . . . , r gdzie

d0(cq) > 0

fcq := d0(cq), q = 1, . . . , rgdzie d0(cq) > 0

σ := max{1, maxe∈Pc1∪···∪Pcr{

P cq :e ∈Pcqfcq u(e) }} fcq := fcq/σ, q = 1, . . . , rgdzie d0(cq) > 0 d0c q := d0cq − fcq, q = 1, . . . , r gdzie d0(cq) > 0 x(Pcq) := x(Pcq) + fcq, q = 1, . . . , rgdzie d0(cq) > 0 l(e) := l(e)(1 + ε · P cq :e ∈Pcqfcq u(e) ), ∀e ∈ Pc1 ∪ · · · ∪ Pcr

end while/* koniec kroku */

end for/* koniec iteracji */

end while/* koniec fazy */

x(P ) := x(P )/ lg1+ε1+εδ , ∀P λ := mini

P

P ∈Pix(P )

d(i)

Tabela 1.6: Algorytm Karakostasa — przepływ niejawny

Powy ˙zszy algorytm wylicza λ, czyli spełnion ˛a cz˛e´s´c zapotrzebowania oraz przepływ x(P ) na ´scie ˙zce P , dla zadanej warto´sci dokładno´sci ε. Dodatkowo do oznacze ´n przyj˛etych uprzednio δ jest parametrem danym wzorem:

δ := 1 (1 + ε)1−εε · 1 − ε m 1 ε (1.22) W rozproszonym systemie medycznym konieczna jest jawna reprezentacja problemu, w której dla ka ˙zdego typu danych okre´slony jest przepływ poprzez poszczególne ´scie ˙zki sieci. Szczegółowy zapis algorytmu wygl ˛ada nast˛epuj ˛aco

1.7. Wylicza on λ, czyli spełnion ˛a cz˛e´s´c zapotrzebowania oraz x, rozumiany jako przepływ ka ˙zdego rodzaju danych na ka ˙zdym łuku, dla zadanej warto´sci dokładno´sci ε.

Inicjalizuj l(e) := δ/u(e), xe(q) := 0, ∀e ∈ E, q = 1, . . . , k.

while D(l) < 1 do for i = 1 to |S| do

d0(cq) := d(cq), q = 1, . . . , r

while D(l) < 1oraz d0(cq) > 0dla jakiego´s q do

Pcq :=najkrótsza ´scie ˙zka w Pcq u ˙zywaj ˛ac l, q = 1, . . . , r gdzie

d0(cq) > 0

u0(e) := u(e), ∀e ∈ Pc1 ∪ · · · ∪ Pcr

for q = 1 to r do

c := mine∈Pcq u0(e)

if d0(cq) ¬ cthen

xe(cq) := xe(cq) + d0(cq), ∀e ∈ Pcq u0(e) := u0(e) − d0(cq), ∀e ∈ Pcq fcq := d0(cq) d0(cq) := 0 else xe(cq) := xe(cq) + c, ∀e ∈ Pcq fcq := c d0(cq) := d0(cq) − c break end for l(e) := l(e)(1 + ε · P cq :e ∈Pcqfcq u(e) ), ∀e ∈ Pc1 ∪ · · · ∪ Pcr

end while/* koniec kroku */

end for/* koniec iteracji */

end while/* koniec fazy */

xe(q) := xe(q)/ lg1+ε 1+εδ , ∀e ∈ E, q = 1, . . . , k λ := mini przepływ(si,ti)

d(i)

Tabela 1.7: Algorytm Karakostasa — przepływ jawny

Zauwa ˙zmy, i ˙z otrzymanie prawie optymalnego rozwi ˛azania, z dokładno´sci ˛a do ε nie stanowi ograniczenia praktycznego, gdy ˙z przepustowo´sci poszczegól-nych łuków wyznaczone s ˛a do´swiadczalnie z pewn ˛a okre´slon ˛a dokładno´sci ˛a. Dobór ε powy ˙zej dokładno´sci pomiaru przepustowo´sci powoduje, i ˙z obliczony wynik jest nierozró ˙znialny od warto´sci optymalnej.

Zło ˙zono´s´c obliczeniowa zredukowana została do ˜O(ε−2m2)dla reprezentacji niejawnej oraz ˜O(ε−2(m2 + kn)) dla jawnej prezentacji przepływu, gdzie ˜O(f )

W dokumencie Index of /rozprawy2/10132 (Stron 28-33)

Powiązane dokumenty