możliwą liczbę faz...
Serwis znalezionych hasełOdnośniki
- Smutek to uczucie, jak gdyby się tonęło, jak gdyby grzebano cię w ziemi.
- – Zabierzesz stąd te akta, zrobisz gdzieś kopie, roześlesz część do przyjaciół i znajomych rozrzuconych możliwie po całych Stanach, a resztę ukryjesz,...
- — To jest możliwe, ale raczej nieprawdopodobne — powiedział Ulath...
- Wreszcie, mówiąc o różnicach między inflacją wróżnych podsystemach gospodarki światowej, nie moż-162na pominąć aspektu możliwości...
- Integracyjny internat jest placwk opiekuczo-wychowawczo-rewali-dacyj na umoliwiajc chopcom niepenosprawnym intelektualnie -w miar moliwoci -...
- co daje nam niewyobrażalne dotąd możliwości taktyczne i to na dodatek tak elastyczne i wszechstronne, że sama ledwie mogę w to uwierzyć...
- Nie tylko prawdopodobne, ale wręcz pewne jest to, że Dick nie zna ani intencji swojej nieświadomej części, ani nowych możliwości...
- O tym, która z kombinacji rozpatrywanych dóbr jest realna z punktu widzenia możliwości nabywczych konsumenta, decyduje tzw...
- )' Kada goska ma swoj metodyk wywoania i logopeda-nauczyciel od--wiednio do moliwoci dziecka j stosuje...
- potpienia a priori, z przypomnieniem, e dyskusja jest zawsze moliwa, dla tych, ktrzy kochaj prawd...
- jako bezpartyjny osiągnął pułap możliwości...
Smutek to uczucie, jak gdyby się tonęło, jak gdyby grzebano cię w ziemi.
Rozpatrzmy konkretne skrzyżowanie, którego schemat przedstawiono na rysunku 1.1. Skrzy-
żowanie to znajduje się niedaleko Uniwersytetu Princeton i znane jest z trudności manewrowania,
1.1. OD PROBLEMU DO PROGRAMU
17
RYSUNEK 1.1.
Przykładowe
skrzyżowanie
zwłaszcza przy zawracaniu. Ulice C i E są jednokierunkowe, pozostałe są ulicami dwukierunko-
wymi. Na skrzyżowaniu tym można wykonać 13 różnych „zakrętów”; niektóre z nich, jak AB
(czyli z ulicy A w ulicę B) i EC, mogą być wykonywane równocześnie, inne natomiast, jak AD i EB,
kolidują ze sobą i mogą być wykonane tylko w różnych fazach.
Opisany problem daje się łatwo ująć („modelować”) w postaci struktury zwanej grafem. Każ-
dy graf składa się ze zbioru wierzchołków i zbioru linii łączących wierzchołki w pary — linie te
nazywane są krawędziami. W naszym grafie modelującym sterowanie ruchem na skrzyżowaniu
wierzchołki reprezentować będą poszczególne zakręty, a połączenie dwóch wierzchołków krawę-
dzią oznaczać będzie, że zakręty reprezentowane przez te wierzchołki kolidują ze sobą. Graf od-
powiadający skrzyżowaniu pokazanemu na rysunku 1.1 przedstawiony jest na rysunku 1.2, nato-
miast w tabeli 1.1 widoczna jest jego reprezentacja macierzowa — każdy wiersz i każda kolumna
reprezentuje konkretny wierzchołek; jedynka na przecięciu danego wiersza i danej kolumny wska-
zuje, że odpowiednie wierzchołki połączone są krawędzią.
RYSUNEK 1.2.
Graf reprezentujący
skrzyżowanie pokazane
na rysunku 1.1
Rozwiązanie naszego problemu bazuje na koncepcji zwanej kolorowaniem grafu. Polega ona
na przyporządkowaniu każdemu wierzchołkowi konkretnego koloru w taki sposób, by wierzchołki
połączone krawędzią miały różne kolory. Nietrudno się domyślić, że optymalne rozwiązanie naszego
problemu sprowadza się do znalezienia takiego kolorowania grafu z rysunku 1.2, które wykorzystuje
jak najmniejszą liczbę kolorów.
18
1. PROJEKTOWANIE I ANALIZA ALGORYTMÓW
TABELA 1.1.
Macierzowa reprezentacja grafu z rysunku 1.2
AB
AC
AD
BA
BC
BD
DA
DB
DC
EA
EB
EC
ED
AB
AC
AD
BA
BC
BD
DA
DB
DC
EA
EB
EC
ED
Zagadnienie kolorowania grafu studiowane było przez dziesięciolecia i obecna wiedza na temat
algorytmów zawiera wiele propozycji w tym względzie. Niestety, problem kolorowania dowolnego
grafu przy użyciu najmniejszej możliwej liczby kolorów zalicza się do ogromnej klasy tzw. pro-
blemów NP-zupełnych, dla których jedynymi znanymi rozwiązaniami są rozwiązania typu „sprawdź
wszystkie możliwości”. W przełożeniu na kolorowanie grafu oznacza to sukcesywne próby wyko-
rzystania jednego koloru, potem dwóch, trzech itd. tak długo, aż w końcu liczba użytych kolorów
okaże się wystarczająca (czego stwierdzenie również wymaga „sprawdzenia wszystkich możliwo-
ści”). Co prawda wykorzystanie specyfiki konkretnego grafu może ten proces nieco przyspieszyć,
jednakże w ogólnym wypadku nie istnieje alternatywa dla oczywistego „sprawdzania wszystkich
możliwości”.
Okazuje się więc, że znalezienie optymalnego pokolorowania grafu jest w ogólnym przypadku
procesem bardzo kosztownym i dla dużych grafów może okazać się zupełnie nie do przyjęcia, nie-
zależnie od tego, jak efektywnie skonstruowany byłby program rozwiązujący zagadnienie. Zasto-
sujemy w związku z tym trzy możliwe podejścia. Po pierwsze, dla małych grafów duży koszt cza-
sowy nie będzie zbytnią przeszkodą i „sprawdzenie wszystkich możliwości” będzie zadaniem wykonalnym w rozsądnym czasie. Drugie podejście polegać będzie na wykorzystaniu specjalnych
własności grafu, pozwalających na rezygnację a priori z dość dużej liczby sprawdzeń. Trzecie po-
dejście odwoływać się będzie natomiast do znanej prawdy, że rozwiązanie problemu można znacznie
przyspieszyć, rezygnując z poszukiwania rozwiązania optymalnego i zadowalając się rozwiązaniem dobrym, możliwym do zaakceptowania w konkretnych warunkach i często niewiele gorszym
od optymalnego — tym bardziej, że wiele rzeczywistych skrzyżowań nie jest aż tak skomplikowa-
nych, jak pokazane na rysunku 1.1. Takie algorytmy, szybko dostarczające dobrych, lecz niekoniecznie optymalnych rozwiązań, nazywane są algorytmami heurystycznymi.
Jednym z heurystycznych algorytmów kolorowania grafu jest tzw. algorytm „zachłanny”
(ang. greedy). Kolorujemy pierwszym kolorem tyle wierzchołków, ile tylko możemy. Następnie wybieramy kolejny kolor i wykonać należy kolejno następujące czynności:
(1) Wybierz dowolny niepokolorowany jeszcze wierzchołek i przyporządkuj mu aktualnie używany kolor.
1.1. OD PROBLEMU DO PROGRAMU
19
(2) Przejrzyj listę wszystkich niepokolorowanych jeszcze wierzchołków i dla każdego z nich sprawdź, czy jest połączony krawędzią z jakimś wierzchołkiem mającym aktualnie używany
kolor. Jeżeli nie jest, opatrz go tym kolorem.
„Zachłanność” algorytmu wynika stąd, że w każdym kroku (tj. przy każdym z używanych
kolorów) stara się on pokolorować jak największą liczbę wierzchołków, niezależnie od ewentualnych
negatywnych konsekwencji tego faktu. Nietrudno wskazać przypadek, w którym mniejsza zachłan-
ność prowadzi do zastosowania mniejszej liczby kolorów. Graf przedstawiony na rysunku 1.3 można
pokolorować przy użyciu tylko dwóch kolorów; jednego dla wierzchołków 1, 3 i 4, drugiego dla
pozostałych. Algorytm zachłanny, analizujący wierzchołki w kolejności wzrastającej numeracji, rozpocząłby natomiast od przypisania pierwszego koloru wierzchołkom 1 i 2, po czym wierzchołki
3 i 4 otrzymałyby drugi kolor, a dla wierzchołka 5 konieczne byłoby użycie trzeciego koloru.
RYSUNEK 1.3.
Przykładowy graf,
dla którego nie popłaca
zachłanność algorytmu
kolorowania
Zastosujmy teraz „zachłanne” kolorowanie do grafu z rysunku 1.2. Rozpoczynamy od wierz-
chołka AB, nadając mu pierwszy z kolorów — niebieski; kolorem tym możemy także opatrzyć1