• Nie Znaleziono Wyników

Otrzymany w wyniku analizy programu graf przepływu sterowania poddaje się redukcji mającej na celu zmniejszenie jego rozmiarów i likwidację pętli nie wynikających z synchronizacji procesów.

Celem redukcji grafu przepływu sterowania jest uzyskanie możliwie najprostszego opisu wykonywania programu. Sekwencyjnie następujące po sobie instrukcje grupowane są w większe bloki opisane przez wypadkowy rozkład losowy czasu realizacji. Konstrukcje dopuszczające wybór jednej z wielu ścieżek, a co za tym idzie grup instrukcji zastępowane są odpowiednim rozkładem losowym uwzględniającym prawdopodo-bieństwo każdej z decyzji.

Rys. 2-2. Graf przepływu sterowania i odpowiadający mu graf zredukowany

Przykład redukcji prostego grafu przedstawia rysunek 2-2. Instrukcja wyboru oraz pętla zostaje zastąpiona pojedynczym przejściem uwzględniającym całkowitą liczbę instrukcji koniecznych do wykonania. Rozkład losowy ilości instrukcji przypisanych do przejść zastępczych (oznaczonych pustym prostokątem) uwzględnia prawdopodobieństwa wyborów poszczególnych dróg GPS oraz nieprzewidywalnej statycznie ilości powtórzeń pętli.

W rzeczywistym programie decyzje wyborów poszczególnych ścieżek zależą od wartości przetwarzanych danych oraz od stopnia zaawansowania programu. Wiele instrukcji wyboru jest ze sobą skorelowanych. Aby jednak móc traktować graf przepływu sterowania jako proces stochastyczny o akceptowalnym stopniu kompli-kacji zrezygnowano z analizy wartości przetwarzanych danych a co za tym idzie z rozpatrywania korelacji instrukcji warunkowych.

W pracy zaprezentowano kilka metod zmniejszania rozmiaru GPS. Można je podzielić na dwie kategorie: • metody ogólne (linowa i kombinatoryczna)

• metody szczególne (konstrukcje if, while, switch, fork-join )

Podobnie jak w większości publikowanych modeli i metod wykorzystujących sieć Petriego jako odwzorowanie struktury logicznej programu [Mag89] [Bra86] [Jar87] [Deg88] [Car88], w niniejszej pracy przyjęto, że istotne są korelacje wynikłe ze struktury grafu, natomiast wybory poszczególnych przejść są niezależne

Analiza całego grafu jest przeprowadzana etapami poprzez grupowanie najmniejszych elementów w większe. Scalanie fragmentów prowadzone jest od najniższego do najwyższego poziomu. Dla najczęściej wykorzystywanych konstrukcji języków programowania podano gotowe wzory ułatwiające redukcję grafu. Dla niestandardowych powiązań stosowana jest jedna z metod ogólnych umożliwiających redukcję podgrafu.

Podgraf izolowany – definicja i właściwości

Ogólne metody redukcji GPS umożliwiają zastąpienie pewnego fragmentu sieci pojedynczym przejściem lub grupą przejść. Aby można było dokonać takiej redukcji fragment ten musi być połączony z resztą sieci jedynie za pomocą wyróżnionych przejść.

lin1 linA

lout1 loutB

Rys. 2-3. Podgraf izolowany o A wejściach i B wyjściach

Def. 2-4

Fragment grafu przepływu sterowania GRx=<Mx, Lx, Kx, Ux0, Jx> ⊂ GPS=<M, L, K, U0, J> z wyróżnionymi zbiorami przejść Lin={lin1, lin2, ..., linA }⊂Lx i Lout={lout1, lout2, ..., loutB }⊂Lx jest podgrafem izolowanym jeżeli spełnia następujące warunki:

• wszystkie następniki miejsc podgrafu należą do podgrafu:

∀mi∈Mx∀lj∈L:(mi,lj)∈K Æ lj∈Lx, • wszystkie poprzedniki miejsc podgrafu należą do podgrafu:

∀mi∈Mx∀lj∈L:(lj,mi)∈K Æ lj∈Lx, • następniki przejść z wyjątkiem wyjściowych należą do podgrafu:

∀lj∈Lx/{Lout} ∀mi∈M:(lj,mi)∈K Æ mi∈Mx, • poprzedniki przejść z wyjątkiem wejściowych należą do podgrafu:

∀lj∈Lx/{Lin} ∀mi∈M:(mi,lj)∈K Æ mi∈Mx.

Z powyższych warunków wynika, że wszystkie krawędzie łączące miejsca i przejścia podgrafu muszą należeć do podgrafu.

Skoro podgraf izolowany jest połączony z resztą sieci jedynie za pomocą wyróżnionych przejść wejściowych i wyjściowych, procesy dziejące się w jego wnętrzu nie mogą wpływać na pozostałe elementy sieci bez pośrednictwa przejść wyjściowych. Podobnie otoczenie podgrafu może wpłynąć na jego stan jedynie poprzez przejścia wejściowe. W celu uproszczenia analizy działania podgrafu wprowadzono pojęcie ścieżki.

Def. 2-5

Ścieżką prostą w q podgrafie izolowanym Gx nazywany będzie ciąg odpaleń przejść podgrafu prowadzący od przejścia wejściowego do dowolnego przejścia w podgrafie.

Ścieżka prosta prowadząca do jednego z przejść wyjściowych nazywana będzie ścieżką prostą pełną w q podgrafie Gx.

Ścieżka w podgrafie opisuje drogę, jaką przebywa znacznik wprowadzony do niego przez przejście wyjściowe do momentu pochłonięcia lub opuszczenia grafu przez przejście wyjściowe. Opisuje, zatem jeden z możliwych sposobów, w jaki podgraf izolowany reaguje na pobudzenie polegające na odpaleniu jednego z przejść wejściowych. W niektórych grafach pobudzenie przejścia wejściowego może spowodować proces odpaleń prowadzący do powstania większej ilości znaczników i współbieżnego odpalania wielu przejść. Nie jest

w sposób przyczynowy i sekwencyjny. Warunki wystarczające dla zapewniania istnienia jedynie ścieżek prostych precyzuje poniższe twierdzenia.

W pracy [Mag89] pokazano, że:

Twierdzenie 2-1

Podgraf izolowany zawierający jedynie miejsca i przejścia należące do jednego procesu spełnia warunki: • w stanie początkowym żadne z miejsc podgrafu nie zawiera znaczników

Ux0 = 0

• wewnątrz podgrafu każde przejście posiada co najwyżej jedną krawędź wyjściową ∀lj∈Lx/LoutÆ||{k∈Kx: (lj,mi)∈Kx}|| ≤ 1

• wewnątrz podgrafu każde przejście ma jedną krawędź wejściową ∀lj∈Lx/LinÆ||{k∈Kx: (mi,li)∈Kx}|| = 1

Dowód oparto na wykazaniu, że rozpatrywany graf jest siecią bezpieczną, co w połączeniu z brakiem znaczników w stanie początkowym zapewnia spełnienie wymaganych warunków.

Twierdzenie 2-2

Jeżeli podgraf izolowany GRX spełnia następujące warunki:

• w stanie początkowym żadne z miejsc podgrafu nie zawiera znaczników Ux0 = 0

• wewnątrz podgrafu każde przejście posiada co najwyżej jedną krawędź wyjściową ∀lj∈Lx/LoutÆ||{k∈Kx: (lj,mi)∈Kx}|| ≤ 1

• wewnątrz podgrafu każde przejście ma jedną krawędź wejściową ∀lj∈Lx/LinÆ||{k∈Kx: (mi,li)∈Kx}|| = 1

to w odpowiedzi na pojedyncze pobudzenie nastąpi odpalenie sekwencji przejść dających się opisać ścieżką prostą.

Dowód:

Z warunku ∀lj∈Lx/Lin Æ||{k∈Kx: (mi,li)∈Kx}|| = 1 wynika, że wewnątrz podgrafu nie ma miejsc generujących znaczniki (bez krawędzi wejściowych).

Z kolei z warunku ∀lj∈Lx/Lout Æ||{k∈Kx: (lj,mi)∈Kx}|| ≤ 1 wynika, że w wyniku odpalania przejść wewnętrznych podgrafu liczba znaczników wewnątrz podgrafu nie może ulec zwiększeniu.

Zatem do momentu odpalenia przejścia wejściowego w podgrafie nie ma znaczników. W wyniku pojedynczego odpalenia jednego z przejść wejściowych w podgrafie pojawia się jeden i tylko jeden znacznik, który w wyniku odpaleń kolejnych przejść wewnętrznych może przemieszczać się z miejsca do miejsca. Odpalanie przejść wewnętrznych podgrafu nie powoduje zwiększenia ilości znaczników. Odpalenie przejścia wyjściowego lub ślepego oznacza pochłonięcie znacznika.

Z właściwości sieci Petriego wynika, że skoro w podgrafie może znajdować się co najwyżej jeden znacznik oraz każde przejście wymaga pobrania znacznika dla odpalenia to odpalanie przejść może zachodzić jedynie

pojedynczo, w sposób sekwencyjny. Odpalanie przejść następujące w wyniku pobudzenia grafu tworzy zatem ścieżkę prostą.

c.b.d.o.

Z twierdzeń 2-1 i 2-2 oraz przyjętych założeń wynika możliwość redukcji wnętrza podgrafu izolowanego.

Twierdzenie 2-3

Jeżeli podgraf izolowany spełnia założenia twierdzenia 2-2, to dowolne przekształcenie wnętrza podgrafu pod warunkiem zachowania rozkładu losowego reakcji (odpalania przejść wyjściowych, po określonym czasie) na pobudzenie (odpalanie przejść wejściowych) nie zmienia działania zewnętrza podgrafu.

Dowód:

Jeżeli graf GRX jest grafem izolowanym to z definicji wynika, że jest on w stanie oddziaływać na swoje zewnętrze jedynie poprzez oznaczone przejścia wyjściowe tworzące zbiór Lout={lout1, lout2, ..., loutB }⊂Lx. Podobnie zewnętrze grafu jest w stanie oddziaływać na jego wnętrze jedynie poprzez przejścia wejściowe tworzące zbiór Lin={lin1, lin2, ..., linA }⊂Lx. Założenia dowodzonego twierdzenia zawarte w twierdzeniu 2-1 wykluczają samorzutne powstawanie znaczników wewnątrz grafu, jak również ich obecność przed zaistnieniem pobudzenia. Bez odpalenia jednego z przejść wejściowych nie jest możliwe zatem odpalenie jakiegokolwiek przejścia wewnątrz podgrafu. Pobudzenie powoduje przemieszczanie się znacznika w grafie po jednej z dopuszczalnych ścieżek prostych aż do momentu odpalenia przejścia wyjściowego lub pochłonięcia znacznika. Z definicji podgrafu izolowanego do momentu odpalenia przejścia wyjściowego zmiany odpalenia przejść wewnątrz podgrafu nie mogą być obserwowalne na zewnątrz gdyż nie istnieją krawędzie łączące przejścia wewnętrzne z elementami zewnętrza podgrafu. Analogicznie stan zewnętrza podgrafu nie ma wpływu na odpalanie przejść wewnętrznych z powodu braku wymienionych krawędzi.

Jeżeli zatem procesy dziejące się wewnątrz podgrafu nie są obserwowalne na zewnątrz, to oznacza, że struktura wewnętrzna podgrafu może być dowolnie przekształcona przy zachowaniu obserwowalnych właściwości podgrafu, czyli reakcji przejść wyjściowych na pobudzenie przejść wejściowych.

c.b.d.o.

Wnętrze podgrafu o A wejściach i B wyjściach można zredukować zastępując go zbiorem przejść o liczności A×B. Każde z przejść wynikowych zastępuje parę przejść: wejściowe i wyjściowe. Zbiór o liczności A×B zawiera wszystkie możliwe kombinacje wejść i wyjść, zatem w sposób kompletny opisuje reakcję wnętrza podgrafu na pobudzenie.

l11

...

lAB

lin1 linA

Pewnego wyjaśnienia wymagać może sposób połączenia nowo otrzymanych przejść z resztą sieci. Dla każdego przejścia bazującego na przejściu wejściowym lx krawędzie wejściowe prowadzą od wszystkich poprzedników przejścia lx. Dla każdego przejścia bazującego na wyjściu ly krawędzie wyjściowe prowadzą do wszystkich następników przejścia ly.

l11 l12 l21 l22 lin1 m4 m4 m3 m3 m2 m2 m1 m1 lin2 lout1 lout2

Rys. 2-5. Łączenie przejść zastępczych z resztą sieci Petriego

Przejście zastępcze lxy odpowiada pobudzeniu podgrafu przez przejście lin x i uzyskaniu reakcji w postaci odpalenia przejścia lout y . Zatem przejścia lx1, lx2, ..., lxB konkurują pomiędzy sobą o znacznik, który w grafie przed redukcją zawsze był pobierany przez przejście lin x. Prawdopodobieństwo odpalenia przejścia lxy jest zatem równe prawdopodobieństwu wyboru ścieżki prowadzącej do przejścia wyjściowego lout y pod warunkiem pobudzenia grafu przez wejście lin x.

] | [outy inx

xy pl l

p = (2-5)