• Nie Znaleziono Wyników

Detektor cykli w algorytmie MDSP

W dokumencie 1.1 Tezy pracy (Stron 90-93)

5.3 Algorytm MDSP

5.3.2 Detektor cykli w algorytmie MDSP

W tej sekcji omówimy szczegółowo detektor cyklu o dodatniej długości, zastosowany w fazie zasadniczej algorytmu MDSP. Zauważmy, że algorytm MDSP w kroku 1 fazy wstępnej wykrywa ewentualne cykle o dodatniej długości nie zawierające żadnych łuków operacyjnych. Cykle o dodatniej długości zawierające przynajmniej jeden z takich łuków są wykrywane w fazie zasadniczej. Prawdziwa jest następująca własność.

Własność 5.2 W graf G(π) występuje cykl o dodatniej długości, zawie-rający przynajmniej jeden łuk operacyjny wtedy i tylko wtedy, gdy istnieje taki wierzchołek u = L(k), że po jego pierwszym i drugim przeglądnięciu algorytm MDSP cofa się do jednego z wcześniejszych wierzchołków listy L.

Dowód. Niech LBt(v) oznacza wartość dolnego ograniczenia dla wierz-chołka v ∈ N, bezpośrednio po zakończeniu iteracji t algorytmu MDSP.

Konieczność. Przyjmijmy, że w grafie G(π) istnieją cykle o dodatniej dłu-gości zawierające przynajmniej jeden łuk operacyjny. Wtedy jednak ist-nieje taki cykl o dodatniej długości, że algorytm MDSP po wykonaniu odpowiedniej liczby kroków przeglądnie wszystkie jego wierzchołki (zbiór wszystkich wierzchołków tego cyklu oznaczmy przez C). Niech u ozna-cza element ze zbioru C, który leży na największej pozycji k w liście L;

7Wszystkie dane są liczbami całkowitymi.

L−1(x) < k = L−1(u), x ∈ C \ {u}. Niech i oznacza numer iteracji, w której algorytm MDSP pierwszy raz przeglądał wierzchołek u.

Ponieważ w iteracji i przeglądany jest po raz pierwszy wierzchołek u znajdujący się na pozycji k listy L, iteracja ta rozpoczyna k-tą fazę czę-ściową algorytmu. Na bazie lematu 5.4 stwierdzamy, iż wszystkie łuki wy-chodzące z wierzchołków Lk−1są zgodne. Oznacza to, wykorzystując lemat 5.1, że (W1) w grafie G(π) nie istnieje cykl o dodatniej długości składający się z wierzchołków (niekoniecznie wszystkich) należących do zbioru Lk−1.

Zauważmy także, że (W2) algorytm MDSP po zakończeniu iteracji i, przegląda tylko wierzchołki ze zbioru Lk. Rzeczywiście, w momencie gdy algorytm zacznie przeglądać wierzchołek L(k + 1) oznacza to, że zakończył fazę k, co na mocy lematu 5.4 oznacza że wszystkie łuki Fk są zgodne, w szczególności są zgodne wszystkie łuki analizowanego cyklu o dodatniej długości. To ostatnie jest sprzeczne z lematem 5.1. Otrzymana sprzeczność kończy dowód (W2).

Z udowodnionego powyżej stwierdzenia (W1), wynika, że algorytm MDSP po wykonaniu skończonej liczby iteracji (poczynając od iteracji i), w pewnej iteracji j > i drugi raz zacznie przeglądanie wierzchołka u. Po drugim przeglądnięciu wierzchołka u w iteracji j, z (W2) wnioskujemy, iż algorytm zacznie przeglądać wierzchołek znajdujący w liście L na pozycji mniejszej niż k. Tym samym dowód konieczności został zakończony.

Dostateczność. Niech u = L(k) będzie wierzchołkiem, dla którego praw-dziwe są założenia własności. Niech i oraz j będą odpowiednio numerami iteracji, w których wierzchołek u przeglądany jest po raz pierwszy oraz po raz drugi. Zauważmy, że

LBi(u) < LBj(u). (5.17) Jest tak dlatego, ponieważ w iteracji i, łuki (u, v), v ∈ Au zostały zrelakso-wane, więc po zakończeniu tej iteracji były zgodne. Następnie bezpośrednio przed przeglądaniem wierzchołka u w iteracji j, przynajmniej jeden z tych łuków był niezgodny (jest to warunkiem koniecznym na to aby algorytm MDSP po przeglądnięciu u cofnął się do jednego z wcześniejszych wierz-chołków listy L. Oczywisty fakt, iż zgodny łuk (a, b) może przestać być zgodny tylko poprzez zwiększenie wartości dolnego ograniczenia wierzchoł-ka a pozwala stwierdzić, że wartość LBj(u) jest większa niż LBi(u), co dowodzi poprawności (5.17).

Niech B oznacza zbiór wierzchołków Au powiększony o wszystkie ich następniki (niekoniecznie bezpośrednie). Z lematu 5.4 wynika, że (W3) bez-pośrednio przed rozpoczęciem iteracji i (jest to moment zakończenia fazy pomocniczej k − 1) wszystkie łuki Fk−1 są zgodne. W trakcie przeglądania

wierzchołka u w tej iteracji, musiały zostać zwiększone dolne ogranicze-nia niektórych jego następników, w tym niektórych wierzchołków ze zbioru Lk−1∩ B (ponieważ po przeglądnięciu wierzchołka u algorytm cofnął się do jednego z wcześniejszych wierzchołków listy L). W iteracji i + 1 algorytm przegląda jeden z wierzchołków z Lk−1∩ B, którego dolne ograniczenia zo-stało zwiększone w iteracji i. W trakcie tego przeglądania zwiększa dolne ograniczenie tylko (pewnych) wierzchołków ze zbioru B. Ogólnie, w kolej-nych iteracjach i + 1 < t < j algorytm przegląda wierzchołki ze zbioru: (i) Lk−1∩ B lub (ii) Lk−1\ B. Przeglądanie tych pierwszych może spowodować zwiększenie dolnych ograniczeń tylko wierzchołków ze zbioru B. Stąd oraz z (W3) wynika, że przeglądanie tych drugich nie powoduje zwiększenia dolne-go ograniczenia żadnedolne-go z wierzchołków. Jednocześnie bezpośrednio przed (i po) wykonaniu iteracji j dolne ograniczenie wierzchołka u jest większe niż po wykonaniu iteracji i, patrz 5.17. Zostało więc ono zwiększone w trakcie wykonywania co najmniej jednej z iteracji i < t < j, w której przeglądano wierzchołek L(t) ∈ Lk−1∩ B.

Z powyższego wynika, że w grafie G(π) istnieje cykl o dodatniej długości zawierający wierzchołek u oraz nie operacyjny łuk (u, v), v ∈ Au; cykl ten oprócz wierzchołka u zawiera tylko wierzchołki ze zbioru B. Ponadto cykl ten zawiera przynajmniej jeden łuk operacyjny; w przeciwnym wypadku cykl taki został by wykryty w fazie inicjalizacyjnej algorytmu. Tym samym dowód własności został zakończony.

Detektor cyklu o dodatniej długości zastosowany w fazie zasadniczej al-gorytmu MDSP wykorzystuje bezpośrednio własność 5.2. Jego implemen-tacja składa się z inicjalizacji (w kroku 1) oraz właściwej detekcji (krok 5).

Detektor używa zmiennej poz (wykorzystywanej już przez algorytm do okre-ślenia pozycji, na liście L, aktualnie przeglądanego wierzchołka u = L(poz)) oraz dodatkowej zmiennej pozMax. Zmienna ta określa największą pozy-cję na liście L przeglądanych dotychczas wierzchołków; jest ona inicjowana wartością zero. Po przeglądnięciu pewnego wierzchołka u = L(poz) w kroku 3, położeniu poz := min{L−1(u) + 1, min{L−1(v) : v ∈ K(u)}} w kroku 4 i nie zadziałaniu warunków stopu z kroków 4 i 5, zmienna pozMax jest modyfikowana: pozMax := max{pozMax, L−1(u)}.

Właściwa detekcja cyklu o dodatniej długości, odbywa się w kroku 5, i polega na stwierdzeniu czy zachodzą warunki: (W1) L−1(u) = pozMax oraz (W2) poz < pozMax. Z własności 5.2 wynika że istnienie cyklu o dodatniej długości jest równoważne zajściu zdarzenia Z opisanego w 5.3.1.

Dalej pokażemy, że zajście zdarzenia Z jest równoważne spełnieniu warun-ków (W1), (W2) detektora cyklu, w kroku 5 algorytmu. W tym celu przez k = L−1(u) oznaczmy pozycje na liście L wierzchołka u opisywanego w

zdarzeniu Z.

Najpierw udowodnimy, że jeżeli zajdzie zdarzenie Z, to prawdziwe są wa-runki (W1), (W2). Zauważmy, że już po pierwszym przeglądnięciu wierz-chołka u i wykonaniu kroku 5 zmienna pozMax = k i nie zmieni swojej wartości aż do zajścia zdarzenia Z, ponieważ algorytm po przeglądnieciu tego wierzchołka nie przeglądał żadnego wierzchołka w liście L znajdujące-go się na dalszej pozycji niż k. Stąd wynika, że poczynając od teznajdujące-go momentu będzie zachodził (W1). Drugie przeglądnięcie wierzchołka u oraz przejście do wierzchołka leżącego na pozycji poz < L−1(u) = k = pozMax impli-kuje bezpośrednio prawdziwość warunku (W2), co kończy dowód w tym przypadku.

Teraz pokażemy, ze spełnienie w kroku 5 warunków (W1), (W2) im-plikuje zajście zdarzenia Z. Jeżeli w kroku 5 zachodzi warunek (W1) po raz l-ty oznacza to, że algorytm po raz l + 1-szy przeglądnął pewien wierz-chołek u = L(pozMax) i jednocześnie do tej pory żaden z wierzchołków leżących na pozycjach t > pozMax listy L nie był przeglądany. Jeżeli zaj-dzie jednocześnie po raz pierwszy warunek (W2) oznacza to dodatkowo, że algorytm po przeglądnięciu wierzchołka u w następnej iteracji będzie prze-glądał wierzchołek znajdujący się na pozycji poz < L−1(u) = pozMax w liście L oraz warunek (W1) zaszedł po raz pierwszy (l = 1), co oznacza, że zaszło zdarzenie Z.

W dokumencie 1.1 Tezy pracy (Stron 90-93)