Zaprezentowane poni˙zej cztery produkcje pozwol ˛ a generowa´c grafy, reprezen- tuj ˛ ac aktualny stan alokacji oprogramowania w kontrolowanym systemie rozproszo- nym. Inicjalny IE-graf alokacji składa si˛e z pojedynczego wierzchołka etykietowa- nego jako A i indeksowanego warto´sci ˛ a 0.
Produkcja P
1wprowadza do grafu alokacji G nowy wierzchołek reprezentuj ˛ acy w˛ezeł obliczeniowy (etykietowany jako N ) i wi ˛ a˙ze go z wierzchołkiem reprezentu- j ˛ acym alokator (indeks 0).
s
N
Transformacja osadzenia dla tej produkcji jest nast˛epuj ˛ aca:
C
1= {((s, out , v
L), {(A, (N, true), s, out ),
(N, (N, true), −n, in), (N, (N, true), n, in)}), CopyRest )}
Kiedy chcemy zaalokowa´c oprogramowanie w postaci instancji obiektu OBJ (ze zdefiniowanymi zbiorami ˙z ˛ adanych i oferowanych usług – odpowiednio reqeusted _services i offered _services) musimy go poł ˛ aczy´c ze wszystkimi jest mo- dułami po´srednicz ˛ acymi (ang. stub) do jednej z usług ˙z ˛ adanych przez alokowany obiekt, pod warunkiem, ˙ze s ˛ a one zaalokowane w w˛e´zle obliczeniowym NODE w za- danym w˛e´zle obliczeniowym (którego indeks jest podany w zmiennej NODE) powin- ni´smy zastosowa´c produkcj˛e P
2.
am
M
Transformacja osadzenia dla tej produkcji jest nast˛epuj ˛ aca:
C
2= {((s, out , v
L), {(A, (N, true), s, out ), (M, (N, π
1), −a, in)}), ((ai , out , v
L),
{(A, (I, true), ai , out ), (M, (I, π
2), −c, in)}), CopyRest )},
gdzie:
– π
1: NODE = name.
CN,
– π
2: service
CN∈ requested _services
OBJ∧ Allocated _in(CN ) = NODE .
Kontynuuj ˛ ac alokacj˛e obiektu, pami˛etamy pomocniczo jego indeks w zmiennej globalnej ALLOBJ i dla ka˙zdej z usług serv oferowanych przez alokowany obiekt (serv ∈ offered _services) wykonujemy produkcj˛e P
3.
ae E
3
Transformacja osadzenia dla tej produkcji jest nast˛epuj ˛ aca:
C
3= {((am, out , v
L), {(A, (M, true), am, out ), (E, (M, π
3), −b, in)}), CopyRest )}, gdzie π
3: CN = AO.
Nast˛epnie dla wszystkich usług ˙z ˛ adanych albo istnieje ju˙z zaalokowany moduł po´srednicz ˛ acy do tej usługi w tym w˛e´zle obliczeniowym, i powi ˛ azanie wierzchołka M z I zostało wykonane w ramach produkcji P
2albo musimy wykona´c produkcj˛e P
4, która go wygeneruje.
ai I
4
Transformacja osadzenia dla tej produkcji jest nast˛epuj ˛ aca:
C
5= {((ae, out , v
L), {(A, (E, true), ae, out ), (I, (E, π
5), −l, in)}), ((am, out , v
L),
{(A, (M, true), am, out ), (I, (M, π
6), c, in)}), CopyRest },
gdzie π
5: service
2= serv
CN∧ π
6: CN = AO.
Zwró´cmy uwag˛e, ˙ze wierzchołek reprezentuj ˛ acy alokowany obiekt AO nie wy-
st˛epuje po lewej ani po prawej stronie produkcji, ale poniewa˙z istnieje kraw˛ed´z
(etykietowana jako am) pomi˛edzy wierzchołkiem lewej strony produkcji i AO , to
mo˙zemy wygenerowa´c kraw˛ed´z pomi˛edzy AO i wierzchołkiem wstawianym jako
wierzchołek indeksowany liczb ˛ a 2 w grafie prawej strony produkcji (etykietowanym
etykiet ˛ a I).
1.2. Algebraiczne transformacje grafowe
Podej´scie algebraiczne bazuje na konstrukcji pushout, która to konstrukcja po- zwala formalnie zamodelowa´c sklejanie grafów w kontek´scie opisu w ramach teorii kategorii. W praktyce stosuje si˛e dwa główne podej´scia:
1) double pushout (skrót DPO) – wprowadzone przez Ehriga [20] i rozwijane w szczególno´sci przez zespoły zwi ˛ azane z uniwersytetami w Berlinie i Pizie, 2) single pushout (skrót SPO) – wprowadzone przez Löwe’a [19, 76] i rozwijane
równolegle do podej´scia DPO.
Z uwagi na fakt, ˙ze teoria kategorii operuje na zbiorach i funkcjach (morfizmach) pomi˛edzy nimi, kraw˛edzie definiowane wcze´sniej jako E ⊂ V × Γ × V b˛ed ˛ a w de- finicji grafu (def. 1.4) definiowane jako zbiór abstrakcyjnych bytów zwanych kraw˛e- dziami oraz funkcji s, , t.
Definicja 1.4. Grafem uogólnionym nad zbiorem etykiet wierzchołków Σ oraz kra- w˛edzi Γ nazywamy dziesi ˛ atk˛e H = (V, E, Σ, Γ, δ, λ, s, t, υ, ε), gdzie:
– V jest sko´nczonym, niepustym zbiorem wierzchołków grafu, – E jest zbiorem kraw˛edzi,
– Σ jest zbiorem etykiet wierzchołkowych, – Γ jest zbiorem etykiet kraw˛edziowych,
– δ : V −→ Σ jest funkcj ˛ a etykietowania wierzchołków, – λ : E −→ Γ jest funkcj ˛ a etykietowania kraw˛edzi,
– s : E −→ V wskazuje wierzchołek b˛ed ˛ acy punktem startowym kraw˛edzi (source),
– t : E −→ V wskazuje wierzchołek b˛ed ˛ acy punktem docelowym kraw˛edzi (target),
– ν : V −→ (NodeAtrib → NodeAtribValue) jest funkcj ˛ a atrybutuj ˛ ac ˛ a wierz- chołki,
– ε : E −→ (EdgeAtrib → EdgeAtribValue) jest funkcj ˛ a atrybutuj ˛ ac ˛ a kraw˛e- dzie.
Istnieje równowa˙zno´s´c pomi˛edzy obiema notacjami, gdy˙z dla e = (p, λ, q) (z def. 1.1) warto´sci funkcji s i t b˛ed ˛ a zdefiniowane nast˛epuj ˛ aco: s(e) = p, (e) = λ i t(e) = q.
Podstaw ˛ a formaln ˛ a do wprowadzenia algebraicznych transformacji grafowych
s ˛ a poj˛ecia morfizmu grafów i kategorii.
Definicja 1.5. Dla danych grafów G
1i G
2, zdefiniowanych jako (V
i, E
i, Σ, Γ, δ
i,
i, s
i, t
i, υ
i, ε
i) dla i = 1, 2 morfizm f : G
1−→ G
2zdefiniowany jest jako trójka funkcji f = (f
V: V
1→ V
2, f
E: E
1→ E
2, f
R) takich, ˙ze:
– f
Vi f
Ezachowuj ˛ a własno´sci funkcji s i t, czyli f
V◦ s
1= s
2◦ f
Eoraz f
V◦ t
1= t
2◦ f
E;
– f
R: (δ
1, λ
1, υ
1, ε
1) −→ (δ
2, λ
2, υ
2, ε
2) przypisuje odpowiednie mapowanie dla etykietowa´n i atrybutowa´n kraw˛edzi oraz wierzchołków, czyli F
R(p, α, q, β) = (δ ◦ f
V(p), λ ◦ f
E(α), ν ◦ f
V(q), ε ◦ f
E(β)).
E 1 st11 V 1 E 2 st22 V 2
V 2
f
Ef
VMorfizm f nazywamy ró˙znowarto´sciowym, je˙zeli odpowiednio funkcje f
Ei f
Vs ˛ a ró˙znowarto´sciowe, i izomorfizmem, je˙zeli funkcje f
Ei f
Vs ˛ a bijekcjami.
Definicja 1.6. Kategoria K = (Obj
K, Mor
K, ◦, id ) zdefiniowana jest nast˛epuj ˛ aco:
– Obj
Kjest zbiorem obiektów,
– dla ka˙zdej pary A, B ∈ Obj
KMor
K(A, B) jest zbiorem morfizmów,
– dla ka˙zdej trójki A, B, C ∈ Obj
Koperacja zło˙zenia morfizmów ◦ jest te˙z mor- fizmem czyli ◦
(A,B,C): Mor
K(B, C) × Mor
K(A, B) −→ Mor
K(A, C), – dla ka˙zdego A ∈ Obj
Kmorfizm identyczno´sciowy id
A∈ Mor
K(A, A).
Ponadto obiekty spełniaj ˛ a nast˛epuj ˛ ace warunki:
– ł ˛ aczno´sci: dla A, B, C, D ∈ Obj
Ki f ∈ Mor
K(A, B), g ∈ Mor
K(B, C), h ∈ Mor
K(C, G) prawdziwe jest (h ◦
(B,C,D)g) ◦
(A,B,C)f =h ◦
(B,C,D)(g ◦
(A,B,C)f ), – to˙zsamo´sci: dla A, B ∈ Obj
Ki f ∈ Mor
K(A, B) prawdziwe s ˛ a wyra˙zenia
f ◦
(A,A,B)id
A= f i id
A◦
(A,B,B)f = f .
Przyjmujemy te˙z nast˛epuj ˛ ace konwencje: f ∈ Mor
K(A, B) oznaczamy jako f : A −→ B, obiekt A nazywamy dziedzin ˛ a morfizmu f , a obiekt B jego przeciw- dziedzin ˛ a oraz opuszczamy indeks w operacji kompozycji, gdy wybór kompozycji jednoznacznie wynika z kontekstu. Przykłady zastosowania teorii kategorii do opisu systemów grafowych mo˙zna znale´z´c w [18].
Do wprowadzenia transformacji grafowych potrzebujemy formalizmu, który po-
zwoli opisa´c sklejenie grafów, wykorzystuj ˛ ac wspólny podgraf.
Definicja 1.7. Dla zadanych morfizmów f : A −→ B i g : A −→ C w kategorii K pushoutem nad f i g nazwiemy trójk˛e (D, f
0, g
0), gdzie:
– D jest obiektem pushoutu,
– f
0: C −→ D i g
0: B −→ D s ˛ a morfizmami takimi ˙ze f
0◦ g = g
0◦ f oraz nast˛epuj ˛ acy warunek jest spełniony: dla dowolnego obiektu X ∈ Obj
Ki morfizmów h : B −→ X i k : C −→ X istnieje jedyny morfizm x : D −→ X, taki ˙ze x ◦ g
0= h i x ◦ f
0= k.
A B
C D
g'
X
g
f
f' h
k x
Dla zdefiniowanej konstrukcji pushoutu mo˙zna zbada´c takie wła´sciwo´sci jak jed- noznaczno´s´c, składanie i dekompozycja pushoutów. W [18] udowodniono ni˙zej po- dane twierdzenie.
Twierdzenie 1.1. Dla zadanej kategorii K prawdziwe s ˛ a nast˛epuj ˛ ace stwierdzenia:
– pushout D jest wyznaczony jednoznacznie przez izomorfizmy,
– składanie i dekompozycja pushoutów te˙z jest pushoutem, czyli dla zaprezento- wanego poni˙zej diagramu prawdziwe s ˛ a stwierdzenia:
• zło˙zenie pushoutów: je˙zeli (1) i (2) s ˛ a pushoutami, to (1) + (2) te˙z jest pushoutem.
• dekompozycja pushoutu: je˙zeli (1) i (1) + (2) s ˛ a pushoutami, to (2) te˙z jest pushoutem.
A B
C D
g g'
f
f'
E F
e'' e
e'
(1) (2)
Definicja 1.21. Hipergrafem bryły wypukłej S nazywa´c b˛edziemy etykietowany i atrybutowany hipergraf G
S= (V, A ∪ H, Σ, Γ, δ, λ, ν, ε), gdzie:
– V jest sko´nczonym, niepustym zbiorem wierzchołków grafu reprezentuj ˛ acych płaszczyzny (´sciany bryły), którego wierzchołki s ˛ a jednoznacznie rozró˙znialne przez funkcj˛e indeksuj ˛ ac ˛ a I,
– E = A∪H jest zbiorem kraw˛edzi, gdzie dla e ∈ E funkcja s(e) zwraca sekwen- cj˛e wierzchołków, z których kraw˛ed´z wychodzi, a funkcja t(e) zwraca zbiór wierzchołków, do których kraw˛ed´z dochodzi; zbiory A i H maj ˛ a nast˛epuj ˛ ac ˛ a interpretacj˛e: A ⊂ V × V oraz H ⊂ S
i>2
V
i(gdzie V
ioznacza i-elementowy iloczyn kartezja´nski):
• ka˙zda hiperkraw˛ed´z e = {v
f1, v
f2} ∈ A reprezentuje dokładnie jedn ˛ a kra- w˛ed´z bryły S, wspóln ˛ a dla ´scian f
1i f
2,
• ka˙zda hiperkraw˛ed´z e = {v
f1, v
f2, . . . v
fk} ∈ H (k > 2) reprezentuje do- kładnie jeden wierzchołek bryły S wspólny dla ´scian f
1, f
2, . . . f
k.
Pozostałe elementy s ˛ a identyczne jak w definicji 1.3. Rodzin˛e hipergrafów brył wy- pukłych b˛edziemy oznacza´c jako H
conv.
Rysunek 1.11 reprezentuje prostopadło´scian z dodatkowym elementem – oknem, a rysunek 1.12 przedstawia cz˛e´s´c jej grafowej reprezentacji – linie ci ˛ agłe ilustruj ˛ a kraw˛edzie e ∈ A, a linia przerywana kraw˛edzie nale˙z ˛ ace do e ∈ H.
Rysunek 1.11. Sze´scian reprezentuj ˛ acy budynek z oknem na ´scianie szczytowej i odpowia-
daj ˛ acy mu fragment hipergrafu
2. Rozproszone transformacje grafowe – teoria
Przedstawiony w poprzednim rozdziale aparat formalny transformacji grafo- wych znalazł zastosowanie w wielu dziedzinach, szczególnie tych, które zajmuj ˛ a si˛e budow ˛ a i weryfikacj ˛ a formalnego modelu systemu.
Przy praktycznym zastosowaniu tych formalizmów, w szczególno´sci w kon- tek´scie du˙zych wolumenów danych (czyli grafów liczonych w setkach tysi˛ecy w˛e- złów), pojawiaj ˛ a si˛e problemy z efektywno´sci ˛ a rozwi ˛ azania. Z drugiej jednak strony regularne, dobrze zdefiniowane struktury danych wprost zach˛ecaj ˛ a do ich analizy w sposób równoległy. Paradygmat przetwarzania rozproszonego zarówno umo˙zliwia kooperacj˛e podsystemów geograficznie rozproszonych, jak i podnosi efektywno´s´c i niezawodno´s´c takich systemów (je˙zeli ich dane i funkcjonalno´sci s ˛ a wła´sciwie zre- plikowane). Zauwa˙zmy, ˙ze z teoretycznego punktu wiedzenia (przy nieograniczonej liczbie procesorów i bez uwzgl˛ednienia narzutów komunikacyjnych) model oblicze´n równoległych pozwala na efektywne rozwi ˛ azanie problemów NP-zupełnych, o ile formalizm opisu problemu wspiera obliczenia równoległe. W szczególno´sci Kreow- ski i Kuske wykazali [73], ˙ze za pomoc ˛ a formalizmu „graph multiset transforma- tions” [74] mo˙zna rozwi ˛ aza´c NP-zupełny problem „Hamilton paths” w czasie wielo- mianowym (czyli N P
GraphTransf= P
ParallelGraphTransf). Niestety w chwili obecnej nie dysponujemy efektywn ˛ a implementacj ˛ a wspomagaj ˛ ac ˛ a formalizm „graph multi- set transformations” w czasie wielomianowym, ale powy˙zsze rezultaty teoretyczne powinny nas zach˛eci´c do rozwoju narz˛edzi wspomagaj ˛ acych przetwarzanie równole- głe, szczególnie w ´srodowisku rozproszonym.
Wprowadzenie współbie˙znego dost˛epu do współdzielonych struktur danych,
które mog ˛ a by´c dynamicznie modyfikowane, wprowadza nowe klasy bł˛edów zwa-
nych bł˛edami uwarunkowanymi czasowo oraz zakleszczeniami systemu. W kla-
sycznych rozwi ˛ azaniach systemów współbie˙znych wprowadza si˛e dodatkowe me-
chanizmy umo˙zliwiaj ˛ ace synchronizacj˛e, takie jak: semafory, monitory, mechanizm
rendez-vous z j˛ezyka Ada czy synchroniczn ˛ a wymian˛e komunikatów. Dokładniej te
problemy s ˛ a omówione w monografii Tanenbauma i Steena [95]. Nale˙zy zwróci´c
jednak uwag˛e, ˙ze poprawne wprowadzenie synchronizacji nie jest zadaniem łatwym,
ponadto wymaga dodatkowego wysiłku i jak ka˙zdy projekt programistyczny jest pro- cesem długotrwałym. Na koniec okazuje si˛e, ˙ze rozwi ˛ azania te s ˛ a dedykowane dla konkretnego rozwi ˛ azania i nawet niewielka modyfikacja mo˙ze wymaga´c przeprojek- towania całego systemu synchronizacji.
Celowe wydawałoby si˛e opracowanie mechanizmu niejawnej synchronizacji (ang. implicit synchronization), pozwalaj ˛ acego na wprowadzanie elementu synchro- nizacji do mechanizmu współpracy systemów rozproszonych, które byłyby uzale˙z- nione jedynie od typu gramatyki, a nie od konkretnych rozwi ˛ aza´n (czyli okre´slonych zbiorów produkcji). Wst˛epna koncepcja takiego rozwi ˛ azania została podana w [49].
Zakładamy podział scentralizowanego grafu G na podgrafy G
1, ...G
kw taki sposób, by mo˙zna było efektywnie sklei´c je w jeden scentralizowany graf. Grafy G
ii = 1...k nazywa´c b˛edziemy cz˛e´sciowymi, gdy b˛edziemy chcieli pokaza´c ich autonomi˛e, lub komplementarnymi, gdy b˛edziemy chcieli podkre´sli´c aspekt ich współzale˙zno´sci.
Nad ka˙zdym z podgrafów cz˛e´sciowych G
iopiek˛e przejmuje agent G
i, któ- rego zadaniem b˛edzie dokonywanie lokalnych modyfikacji podgrafu oraz nawi ˛ aza- nie współpracy z innymi agentami w celu wykonania transformacji, która nie mo˙ze by´c wykonana lokalnie w taki sposób, by po sklejeniu grafów komplementarnych wynik był identyczny jak wynik wykonania pewnej sekwencji transformacji na gra- fie scentralizowanym. Koncepcja grafów komplementranych jest od kilku lat roz- wijana w ramach prowadzonej przez autora grupy badawczej GRADIS. Aparat for- malny dla takiego rozwi ˛ azania, nazwanego RCG (ang. Replicated Complementary Graps), w którym linia podziału pomi˛edzy grafami komplementarnymi przebiega przez wierzchołki, zostanie opisany w podrozdziale 2.1 (dotycz ˛ acym grafów) oraz podrozdziale 2.1.3 (dotycz ˛ acym transformacji grafowych). W obu przypadkach prze- analizowana zostanie zło˙zono´s´c obliczeniowa algorytmów wspomagaj ˛ acych powy˙z- sze koncepcje.
Niezale˙znie od stworzenia ram formalnych umo˙zliwiaj ˛ acych realizacj˛e rozpro-
szonych transformacji grafowych do efektywnej pracy systemu opartego na RCG wy-
magany jest efektywny podział pocz ˛ atkowy grafu scentralizowanego na grafy kom-
plementarne według zadanego kryterium podziału. Zadanie to nale˙zy do NP-trudnych
obliczeniowo, musimy wi˛ec przeanalizowa´c mo˙zliwo´s´c wykorzystania algorytmów
heurystycznych, których analizie po´swi˛econy jest podrozdział 2.2. Uzupełnieniem
tych rozwa˙za´n b˛edzie zasygnalizowanie rozwijanej ostatnio (w ramach grupy GRA-
DIS) przez S˛edziwego [85] koncepcji tzw. Slashed Graph opartej na podziale grafów
przez rozcinanie kraw˛edzi. Na zako´nczenie rozdziału omówiona b˛edzie koncepcja
współpracy ró˙znych typów gramatyk grafowych na bazie sprz˛e˙zenia (wymuszenia
równoległego wykonania) transformacji grafowych w ró˙znych gramatykach opisuj ˛ a-
cych poszczególne aspekty tego samego problemu (patrz podrozdz. 2.4).
(a) Przykład rzutu 2D mieszkania
(b) Hipergraf reprezentuj ˛ acy mieszkanie z rysunku 3.13a
Rysunek 3.13. Graficzna i hipergrafowa reprezentacja układu mieszkania
Do opisania geometrii brył reprezentuj ˛ acych przestrze´n miejsk ˛ a stosuje si˛e dwa układy współrz˛ednych. Pierwszy z nich, globalny, mo˙ze by´c dowolnym geodezyj- nym układem odniesienia (WGS84, UTM), o którym mo˙zna zało˙zy´c, ˙ze jest liniowy w modelowanym obszarze. Drugi układ, lokalny, definiuje si˛e poprzez powi ˛ azanie z okre´slonym punktem bryły S pocz ˛ atku tego układu, O
S, oraz poprzez okre´slenie wektorów bazowych {e
i} (np. baza ortonormalna).
W celu łatwego przechodzenia mi˛edzy obydwoma układami współrz˛ednych z ka˙zdym w˛ezłem i hiperkraw˛edzi ˛ a hipergrafu ˆ G(S), oprócz atrybutu okre´slaj ˛ acego lokalne współrz˛edne, wi ˛ a˙zemy dwa atrybuty (niezmiennicze w ramach ˆ G(S)): Lo- calOrigin okre´slaj ˛ acy globalne współrz˛edne punktu O
Soraz LocalBase zawieraj ˛ acy definicj˛e bazy {e
i}.
Równie˙z w przypadku hipergrafu reprezentacji wewn˛etrznej wprowadzamy dwa układy współrz˛ednych. Pierwszy z nich jest lokalnym układem współrz˛ednych, okre-
´slonym powy˙zej (LocalOrigin), natomiast drugi jest sublokalnym układem odniesie- nia, skojarzonym z kondygnacj ˛ a budynku, którego pocz ˛ atek, wyra˙zony we współ- rz˛ednych lokalnych, przechowywany jest w atrybucie StoreyOrigin. Dla zapew- nienia komunikacji mi˛edzy oboma systemami transformacyjnymi, oprócz lokalnego układu współrz˛ednych (LocalOrigin), współdzielone s ˛ a równie˙z atrybuty: Entity- Type, którego warto´sciami mog ˛ a by´c okno, drzwi itp., oraz EntityProperties zawie- raj ˛ acy zbiór własno´sci specyficznych dla obiektu (w tym współrz˛edne).
Hipergrafy reprezentuj ˛ ace projektowane obiekty mog ˛ a by´c generowane w wy- wodach gramatyk hipergrafowych. Gramatyka hipergrafowa zło˙zona jest ze zbioru hiperkraw˛edzi o terminalnych i nieterminalnych etykietach, zbioru wierzchołków, zbioru produkcji oraz hipergrafu startowego.
Definicja 3.1. Niech H b˛edzie rodzin ˛a instancji etykietowanych, atrybutowanych ˆ hipergrafów. Produkcj ˛ a gramatyki hipergrafowej nazywamy czwórk˛e postaci p = (l, r, π, eval), gdzie:
– l jest etykietowanym hipergrafem lewej strony produkcji, – r jest etykietowanym hipergrafem prawej strony produkcji,
– π : H → {TRUE, FALSE}, jest predykatem okre´slaj ˛acym (na podstawie ˆ danych projektowych) mo˙zliwo´s´c zastosowania produkcji p,
– eval jest funkcj ˛ a wyliczaj ˛ ac ˛ a warto´sci atrybutów hipergrafu r na podstawie war- to´sci atrybutów podgrafu, do którego dopasowano hipergraf l.
Produkcja p b˛edzie oznaczona p : l −−→
πeval