• Nie Znaleziono Wyników

Detektory cykli w algorytmach MB, MBEP

W dokumencie 1.1 Tezy pracy (Stron 80-84)

Z przedstawionego w poprzedniej sekcji opisu algorytmów FB, MB i MBEP wynika, że tylko pierwsze dwa są wyposażone w detektory cykli o dodatnich długościach. Co więcej, detektor cyklu w algorytmie MB (kolejka nie jest pusta po wykonaniu n · e relaksacji) jest w praktyce bardzo nie-efektywny. Dlatego też jakakolwiek próba zastosowania do naszych celów algorytmów MB, MBEP, wymaga zaprojektowania odpowiedniego efektyw-nego detektora. W dalszej części tej sekcji podajemy dla każdego z tych

algorytmów takie właśnie detektory.

Proponowany detektor cykli w algorytmie MB bazuje na informacji do-tyczącej globalnego górnego ograniczenia UB długości ścieżki krytycznej, wyliczonego przy założeniu braku dodatnich cykli w grafie;

U B = X

j∈O

tj. Algorytm stwierdza istnienie cyklu, gdy zachodzi

u∈NLB(u) > U B.

Detektor ten można oczywiście zastosować także w algorytmach FB, MBEP. Dalej jednak proponujemy, dla algorytmu MBEP, detektor znacznie bardziej efektywny. Wykrywa on cykl (jeżeli istnieje) zdecydowanie szybciej niż detektor omówiony wyżej. Zasady jego pracy są jednak dość subtelne i bazują na następującej własności.

Własność 5.1 Niech Z = (z(1), z(2), . . .) będzie listą przeglądanych wierz-chołków w kolejnych krokach algorytmu MBEP. Niech dla dwóch różnych pozycji z tej listy 1 ¬ a < b, zbiór Aa,b = {z(a + 1), . . . , z(b − 1)} zawiera wszystkie wierzchołki z listy Z znajdujące się na pozycjach większych niż a i jednocześnie mniejszych niż b. W grafie G(π) występuje cykl o dodatniej długości wtedy i tylko wtedy, gdy istnieje taka para pozycji 1 ¬ i < j na liście Z, że:

z(i) = z(j)def= u, (5.4)

u 6∈ A0,i, (5.5)

Ai,j ⊂ A0,i. (5.6)

Dowód. Przed rozpoczęciem zasadniczej części dowodu wykażemy naj-pierw trzy pomocnicze lematy.

Lemat 5.1 Jeżeli w grafie G(π) istnieje cykl o dodatniej długości, to nie można tak dobrać dolnych ograniczeń jego wierzchołków, by wszystkie jego łuki były zgodne. Przynajmniej jeden łuk pozostanie niezgodny.

Dowód tego lematu jest oczywisty i dlatego zostanie pominięty.

Lemat 5.2 Jeżeli w kolejce L algorytmu MBEP znajdują się pewne wierz-chołki wcześniej już przeglądane oraz pewne wierzwierz-chołki, które nie były jesz-cze przeglądane, to te pierwsze znajdują się w kolejce L przed tymi drugimi.

Dowód. Lemat ten wynika bezpośrednio z zastosowanej w algorytmie MBEP poprawki Pape’go.

Lemat 5.3 Załóżmy, że pewien wierzchołek v był po raz pierwszy przeglą-dany w kroku k > 1 algorytmu MBEP. Wtedy bezpośrednio przed rozpoczę-ciem tego kroku wszystkie łuki wychodzące z wierzchołków A0,k są zgodne.

Dowód. Dowód przeprowadzimy metodą nie wprost. Niech x ∈ A0,k bę-dzie takim wierzchołkiem, że przynajmniej jeden łuk (x, y) z niego wy-chodzący jest niezgodny bezpośrednio przed rozpoczęciem kroku k. Niech t, 1 ¬ t < k, będzie największą liczbą całkowitą taką, że z(t) = x. Jest oczywiste, że po wykonaniu kroku t, łuk (x, y) jest zgodny1. Dlatego też jego niezgodność w momencie rozpoczęcia iteracji k musiała być spowo-dowana przez zwiększenie wartości dolnego ograniczenia wierzchołka x w trakcie przeglądania pewnego innego wierzchołka w co najmniej jednym kroku t < t0 < k. Niech t ¬ t00 < k określa pierwszy taki krok. Oznacza to jednak, że w kroku t00 wierzchołek x (już przeglądany) zostaje dodany do kolejki L. Ponieważ nie był on przeglądany (a więc i usuwany) w żadnym z kroków g, t00 < g < k, to musi znajdować się w kolejce L bezpośrednio przed rozpoczęciem kroku k. Stąd na podstawie lematu 5.2, w kroku k nie może być przeglądany wierzchołek v. Otrzymana sprzeczność kończy dowód.

Przechodzę teraz do zasadniczej części dowodu własności 5.1. Niech LBt(v) oznacza wartość dolnego ograniczenia dla wierzchołka v ∈ N, bez-pośrednio przed rozpoczęciem wykonywania kroku t algorytmu MBEP.

Konieczność. Załóżmy, że w grafie G(π) istnieją cykle o dodatniej długości.

Zauważmy, że wtedy zawsze istnieje taki cykl c = (c1, . . . , ch−1, ch = c1) o dodatniej długości, że algorytm MBEP po wykonaniu odpowiedniej liczby kroków przeglądnie wszystkie jego wierzchołki. Niech u oznacza element ze zbioru C = {ci : i = 1, . . . , h − 1}, który był pierwszy raz najpóźniej przeglądany; nie zmniejszając ogólności rozważań przyjmijmy, że u = c12. Niech i oznacza krok iteracyjny, w którym algorytm MBEP pierwszy raz przeglądał wierzchołek u, tzn. u = z(i) oraz u 6∈ A0,i.

Ponieważ w iteracji i przeglądany jest po raz pierwszy wierzchołek u, na bazie lematu 5.3 stwierdzamy, iż wszystkie łuki wychodzące z wierz-chołków A0,i są zgodne. Oznacza to jednak, 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 A0,i.

Zauważmy także, że (W2) algorytm MBEP po zakończeniu kroku i, przegląda tylko wierzchołki ze zbioru A0,i∪ {u}. Rzeczywiście, niech t > i oznacza najmniejszą liczbę taką, że z(t) 6∈ A0,i∪ {u}. Stąd na mocy lematu 5.3, bezpośrednio przed rozpoczęciem kroku t wszystkie łuki wychodzące

1Graf G(π) nie zawiera łuku (x, x).

2Jeżeli jest inaczej wystarczy przenumerować elementy cyklu c.

z wierzchołków A0,i∪ {u} są zgodne, w szczególności są zgodne wszystkie łuki cyklu c o dodatniej długości. To ostatnie na mocy lematu 5.1 oznacza jednak, iż cykl c nie ma dodatniej długości. Otrzymana sprzeczność kończy dowód (W2).

Z udowodnionych powyżej stwierdzeń (W1), (W2) wynika, że algorytm MBEP po wykonaniu skończonej liczby kroków (poczynając od kroku i), w pewnym kroku j > i drugi raz zacznie przeglądanie wierzchołka u oraz wszystkie wierzchołki przeglądane od iteracji i + 1 do iteracji j − 1 należą do zbioru A0,i, czyli Ai,j ⊂ A0,i. Tym samym dowód konieczności został zakończony.

Dostateczność. Załóżmy, że na liście Z istnieje para pozycji 1 ¬ i < j taka, że zachodzą warunki (5.4), (5.5), (5.6). Zauważmy, że (W3) bezpo-średnio przed rozpoczęciem wykonywania i-tego kroku iteracyjnego (tzn.

przed przeglądnięciem wierzchołka u = z(i)), kolejka L nie zawiera żadne-go z wierzchołków ze zbioru Ai,j. Rzeczywiście, zgodnie z warunkiem (5.6) wierzchołki te były już przeglądane we wcześniejszych krokach. Fakt ten w połączeniu z występowaniem na początku listy L wierzchołka u, który zgodnie z (5.5) nie był do tej pory przeglądany, kończy dowód (W3) (patrz lemat 5.2).

Pokażę teraz, że istnieje taki podciąg i = i1 < i2 < . . . < ih = j, że sekwencja c = (u = z(i1), z(i2), . . . , z(ih−1), z(ih) = u) elementów zbioru Ai,j∪ {u} jest cyklem w grafie G(π) oraz

LBit(z(it)) = LBit−1(z(it−1)) + wz(it−1),z(it)+ pz(it), t = 2, . . . , h. (5.7) W tym celu wystarczy zauważyć, wykorzystując (W3), że wierzchołek z(t), i < t ¬ j został wprowadzony do kolejki L w trakcie przeglądania pewnego wierzchołka z(t0), i ¬ t0 < t (tzn. w kroku iteracyjnym t0) z jednocze-snym zwiększeniem wartości jego dolnego ograniczenia. Następnie wartość ta mogła być jeszcze zwiększana w trakcie wykonywania kolejnych kroków iteracyjnych t0 ¬ k < t. Niech k0 oznacza ostatni z takich kroków. Wte-dy LBt(z(t)) = LBk0(z(k0)) + wz(k0),z(t) + pz(t) oraz wierzchołek z(t) jest bezpośrednim następnikiem wierzchołka z(k0) w grafie G(π).

Ostatecznie pokażę, że cykl c = (z(i1), z(i2), . . . , z(ih)) ma dodatnią długość. Niech d oznacza długość tego cyklu;

d =

h

X

t=2

(wz(it−1),z(it)+ pz(it)).

Wtedy korzystając z 5.7 oraz z oczywistej nierówności LBi(u) < LBj(u) (wierzchołek u = z(j) został powtórnie wprowadzony do kolejki, po jego

Detektor cyklu algorytmu MBEP

Krok 1. Jeżeli u = OP P , to Exit. [występuje cykl o dodatniej warto-ści]

Krok 2. Jeżeli P W [u] = 0, to połóż P W [u] := 1 oraz OP P := u.

Rysunek 5.1: Schemat implementacji detektora cyklu o dodatniej długości dla algorytmu MBEP

usunięciu w i-tym kroku iteracyjnym) dostaniemy

LBi(u) + d = LBj(u) > LBi(u), czyli d > 0, co kończy dowód własności.

Proponowany detektor cyklu dla algorytmu MBEP wykrywa istnienie cyklu bazując na własności 5.1. Jego implementacja wykorzystuje n ele-mentową tablicę P W oraz dodatkową zmienną OP P ; P W [x] = 1, jeżeli wierzchołek x był już przeglądany lub P W [x] = 0 – w przeciwnym wy-padku, x ∈ N. Początkowo, P W [x] = 0, x ∈ N. Zmienna OP P pamięta wierzchołek, który był pierwszy raz najpóźniej przeglądany.

Na początku każdego kroku iteracyjnego k algorytmu MBEP (tzn. przed przeglądnięciem wierzchołka u = z(k) znajdującego się na początku kolejki L) detektor wykonuje działania przedstawione na rys. 5.1.

Porównanie efektywności działania algorytmów MB, MBEP wykorzy-stujących proponowane detektory cykli o dodatniej długości zostanie prze-prowadzone w rozdziale 5.4.

W dokumencie 1.1 Tezy pracy (Stron 80-84)