Definicja grafu nieskierowanego. Grafem nieskierowanym
Transkrypt
Definicja grafu nieskierowanego. Grafem nieskierowanym
Grafy Definicja grafu nieskierowanego. Grafem nieskierowanym nazywamy uporządkowaną trójkę: gdzie: V- niepusty zbiór wierzchołków grafu G E- zbiór wszystkich krawędzi grafu G funkcja ze zbioru E w zbiór : wszystkich podzbiorów jedno lub dwuelementowych zbioru V. Jeżeli - , to elementy p i q nazywamy końcami krawędzi e. Przykład: Graficzna prezentacja grafu: Niech G V E γ V = {1, 2, 3}, gdzie: E={a, b, c, d, e} Zaś funkcja γ określona jest za pomocą tabeli: f γ f a {1} b {1,2} c {2,3} d {2,3} e {1,3} Uwaga: 1 Pętla to krawędź łącząca wierzchołek z nim samym γ e v v} = {v}). 2 Krawędź wielokrotna to taka która się powtarza jeżeli krawędzie e i f są różne i γ e γ f to nazywamy je wielokrotnymi lub równoległymi . Jeżeli w grafie G a i b nie są krawędziami równoległymi oraz to mówimy że: a y i b Krawędzie a i b są krawędziami sąsiednimi lub przyległymi mają wspólny wierzchołek y . Wierzchołki y oraz y i z są wierzchołkami sąsiednimi. Wierzchołek a także y jest incydentny do krawędzi a jest końcem tej krawędzi. yz, Definicja grafu prostego. Graf bez krawędzi wielokrotnych i pętli nazywamy grafem prostym. Przykład: Uwaga: W przypadku grafów bez krawędzi wielokrotnych w szczególności w przypadku grafów prostych definicja grafu sprowadza się do podania zbioru wierzchołków V i krawędzi w postaci p q gdzie p q V. Zatem graf bez krawędzi wielokrotnych w szczególności prosty można zapisać jako: pamiętając że . Definicja stopnia wierzchołka. Liczbę krawędzi incydentnych do danego wierzchołka v z pętlami liczonymi podwójnie nazywamy stopniem wierzchołka v i oznaczamy deg(v). Liczbę wierzchołków stopnia k oznaczamy Dk G i dla każdego grafu definiujemy ciąg stopni wierzchołków grafu G D0(G), D1(G), D2 G … . Uwaga: 1) Wierzchołek stopnia zerowego nazywamy wierzchołkiem izolowanym. 2) Wierzchołek stopnia pierwszego nazywamy wierzchołkiem końcowym lub wiszącym. Definicja stopnia grafu. Stopniem grafu nazywamy najwyższy ze stopni jego wierzchołków tzn. liczbę: G Przykład: ma deg v . W powyższym grafie: wierzchołki izolowane: 5 i x7 wierzchołki wiszące to 4 i x6 deg(x1)=2, deg(x2)=5, deg(x3)=4, deg(x8)=3 ciąg stopni wierzchołków tego grafu jest następujący 2 2 1 1 1 1 stopień tego grafu wynosi 5 Definicja grafu skierowanego. Grafem skierowanym lub digrafem G nazywamy uporządkowaną trójkę gdzie V jest niepustym zbiorem wierzchołków Ezbiorem krawędzi skierowanych łuków odwzorowaniem zbioru E w zbiór . Definicja źródła i ujścia w grafie skierowanym. Źródłem w digrafie nazywamy wierzchołek do którego nie wchodzi żaden łuk. Wierzchołek digrafu który nie jest początkiem żadnego łuku nazywamy ujściem. Definicja grafu ważonego. Grafem ważonym nazywamy graf w którym każdej krawędzi przyporządkowana jest liczba rzeczywista zwana wagą tej krawędzi. Przykład: Definicja drogi. Drogą w grafie G nazywamy skończony ciąg krawędzi 1 … oraz istnieją wierzchołki … takie że 1… . … taki że dla Uwaga: 1) Wierzchołek nazywamy wierzchołkiem początkowym, - wierzchołkiem końcowym drogi. 2) Jeżeli w drodze wierzchołek początkowy pokrywa się z wierzchołkiem końcowym to taką drogę nazywamy drogą zamkniętą. Definicja drogi prostej. Drogą prostą lub ścieżką nazywamy drogę w której wszystkie krawędzi są różne. Jeżeli … jest drogą prostą to możemy identyfikować ją po wierzchołkach przez które przechodzi. Przykład: Droga degbac jest drogą prostą . Droga fkhkc nie jest drogą prostą ponieważ krawędź k powtarza się dwa razy. Definicja cyklu w grafie. Zamkniętą drogę prostą której odpowiada ciąg wierzchołków … , nazywamy cyklem jeśli wszystkie wierzchołki … są różne. Przykład: Droga dgba jest drogą prostą zamkniętą. Droga degba nie jest cyklem, chociaż jest drogą prostą zamkniętą ponieważ w ciągu wierzchołków odpowiadających tej drodze wierzchołek powtarza się. Definicja grafu acyklicznego. Graf nie zawierający cykli nazywamy grafem acyklicznym. Definicja grafu spójnego. Graf G nazywamy spójnym wtedy i tylko wtedy, gdy każda para jego różnych wierzchołków jest połączona drogą w tym grafie. Zadanie komiwojażera Dlaczego komiwojażera ? Komiwojażer ma odwiedzić kilka miast każde dokładnie jeden raz i powrócić do miasta z którego wyruszył przebywając łącznie najkrótszą najtańszą lub najszybciej przebytą drogę. Znane są odległości koszty lub czas przejazdu między każdą parą miast. Należy wyznaczyć komiwojażerowi trasę przejazdu tak aby mógł odwiedzić każde miasto dokładnie jeden raz i całkowita droga koszt lub czas podróży była/był możliwie najkrótsza/najmniejszy. Definicja. Drogą Hamiltona nazywamy drogę która przechodzi przez każdy wierzchołek grafu dokładnie jeden raz. Cyklem Hamiltona nazywamy cykl przechodzący przez wszystkie wierzchołki grafu. Sformułowanie problemu. Zbudujmy graf ważony którego wierzchołki są miastami. Każdą parę miast połączmy krawędziami. Każdej krawędzi nadajemy wagę równą 'odległości' między miastami odpowiadającymi wierzchołkom które są końcami tej krawędzi. Otrzymujemy w ten sposób graf pełny który ma tyle wierzchołków ile miast musi odwiedzić komiwojażer wliczając w to miasto z którego wyrusza . Odwiedzenie wszystkich miast odpowiada cyklowi Hamiltona. Poszukujemy więc w grafie pełnym cyklu Hamiltona o minimalnej sumie wag krawędzi. Wniosek: Problem ten możemy sformułować w teorii n - wierzchołkowej sieci pełnej a następnie znaleźć najkrótszy najtańszy lub najszybszy cykl Hamiltona. Mamy cykl a, b, c, d, e a cykl a b e c d a ma wagę 230 ma wagę 120 Teoretycznie problem komiwojażera można rozwiązać poprzez wyznaczenie 1 cykli Hamiltona i wybranie tego który ma najmniejszą sumę wag. Już przy pięciu miastach wszystkich możliwych tras podróży komiwojażera jest 3 2 1 12 . Można zauważyć że przy wiekszej liczbie miast rozważanie wszystkich możliwości nie jest najlepszym pomysłem. Dla zobrazowania problemu sprawdzenia wszystkich możliwych permutacji wierzchołków możliwych tras podam kilka obliczeń: Dla 3 miast jest 1 możliwość Dla miast są 3 możliwości Dla 5 miast 12 tras Dla 6 już 60 tras Dla 7 miast 360 Dla 9 miast mamy 20 160 dróg Dla 11 mamy 1 814 400 Dla 26 miast- 7 755 605 021 665 492 992 000 000 dróg. Dlaczego rozwiązanie tego problemu zawsze istnieje ? Dowolny graf pełny posiada co najmniej jeden cykl Hamiltona. Ponieważ graf ma skończoną liczbę wierzchołków to w zbiorze cykli Hamiltona istnieje taki (niekoniecznie jedyny który posiada minimalną sumę wag krawędzi. Rozwiązując problem komiwojażera możemy wybrać jedną z dwóch metod: metodę dokładną np. metodę podziału i ograniczeń która wygeneruje dokładne rozwiązanie ale działającą w czasie wykładniczym a więc metoda „wolna” metodę przybliżoną inaczej nazywaną metodą aproksymacyjną która generuje rozwiązanie bliskie optymalnemu ale działającą w czasie wielomianowym. Algorytmy przybliżone Czas rozwiązywania problemu komiwojażera można zmniejszyć stosując jeden ze znanych algorytmów przybliżonych które nie wymagają rozważania aż tak dużej liczby przypadków. Jednak algorytmy takie nie zawsze znajdują optymalne rozwiązanie. Stworzona przez nie trasa może być znacznie 'dłuższa' od najkrótszej. Stosowanie algorytmów przybliżonych wynika z konieczności wyboru pomiędzy szybkością znajdowania a 'jakością' znalezionego rozwiązania. Z reguły zakłada sie że wynik działania takiego algorytmu nie może być gorszy od optymalnego o więcej niż pewna ustalona z góry wartość. Rozwiązania heurystyczne Wyjaśnijmy najpierw słowo heurystyka – jest to praktyczna oparta na doświadczeniu reguła postępowania która może znacznie uprościć lub skrócić proces rozwiązania rozważanego problemu gdy metoda rozwiązania nie jest znana lub jest zawiła i czasochłonna. Jeśli w zadaniu mamy do czynienia z wieloma rozwiązaniami ważne jest szybkie odrzucenie nieobiecujących kierunków poszukiwania rozwiązania. Zapewnia to ogromne oszczędności na kosztach obliczeniowych a w rezultacie przyspiesza znalezienie rozwiązania. Metody heurystyczne pozwalają na znalezienie w akceptowalnym czasie przynajmniej przybliżonego rozwiązania problemu choć nie gwarantują tego we wszystkich przypadkach. Skuteczności kroków heurystycznych nie można w pełni udowodnić teoretycznie można jedynie pokazać doświadczalnie ich trafność. Algorytmy mrówkowe Owady żyjące w koloniach jak np. mrówki pszczoły rozwiązują w naturze złożone zadania. Budowa gniazda lub poszukiwanie pokarmu to zadania które przekraczają możliwości pojedynczego zwierzęcia. Jednak pojedynczy osobnik dysponuje umiejętnościami które po wykorzystaniu przez pozostałych członków populacji danej kolonii potrafią dać zaskakująco dobre rezultaty w rozwiązywaniu skomplikowanych problemów. Jedną z grup takich naturalnych „społecznych” algorytmów występującą w przyrodzie stanowią właśnie algorytmy mrówkowe. Algorytmy te zawdzięczają swoją nazwę oraz ideę działania analogii do natury. W 1991 M. Dorigo A. Colornie oraz R. Maniezzo na podstawie wcześniejszych badań wykonanych przez J. L. Deneubourga oraz S. Gossa, zainspirowani poszukiwaniem pokarmu przez mrówki argentyńskie przenieśli zachowanie kolonii mrówek na szukanie rozwiązań w kombinatorycznych problemach optymalizacyjnych. Mrówki orientują się w poszukiwaniu pokarmu przy pomocy substancji chemicznej – feromonu którą wydzielają z tylnej części swojego ciała poruszając się. Podążające za nimi kolejne mrówki dokonują wyboru kierunku drogi na podstawie intensywności pozostawionego feromonu. Substancja ta pełni rolę wspólnego mózgu kolonii zapisując wybór drogi. Obserwacje natury pokazują że mrówki wyznaczają swoje drogi bezpośrednio pomiędzy swoim gniazdem a źródłem pokarmu. Fakt że droga ta jest najczęściej najkrótsza wynika z tego że na drogach częściej uczęszczanych znajduje się większa ilość feromonu i jest on dłużej zachowywany. W jednostce czasu może więc większa ilość mrówek przebiec odcinek krótszy niż ten który jest dłuższy. Fakt że mrówki wybierają zawsze krótszą drogę z większym prawdopodobieństwem powoduje że po pewnym czasie droga między gniazdem a pokarmem jest bardzo bliska drodze optymalnej. Przykłady zastosowań Rozwiązania problemu komiwojażera mają wiele praktycznych zastosowań: - w transporcie - w przemyśle np.: jeżeli maszyna wiertnicza ma zrobić kilka otworów w materiale komputer powinien wymyślić taką drogę żeby trasa przejścia wiertła między punktami była jak najkrótsza - ramię automatycznej maszyny nitującej rozmieszczającej nity na skrzydle samolotu porusza się z punktu do punktu i po umocowaniu n nitów w n różnych miejscach wraca do punktu wyjścia optymalna droga poruszania się ramienia jest rozwiązaniem odpowiedniego problemu komiwojażera . - zestaw maszyn ma być użyty do wyprodukowania n elementów. Zmiana obrabianego elementu na inny jest związana ze zmianą oprzyrządowania maszyny i koszty tej dodatkowej czynności są znane optymalna kolejność wyprodukowania n elementów jest rozwiązaniem problemu komiwojażera . - także w poznawaniu struktury kryształów promień rentgenowski musi przejść w krysztale przez kilka tysięcy punktów Przepływ jednotowarowy w sieci Definicja sieci przepływowej. Siecią przepływową (G, s, t, c), nazywamy graf skierowany G=(V, E w którym wyróżniono wierzchołki : źródło s V i ujście t V oraz z każdą krawędzią związana jest funkcja przepustowości : 0 taka że 0 0 Definicja przepływu w sieci. Przepływem w sieci (G, s ,t, c nazywamy funkcję f: spełniającą warunki: dla warunek ograniczenia przepustowości dla mamy warunek skośnej symetrii dla każdego mamy 0 (warunek zachowania przepływu Definicja wartości przepływu f. Wartość przepływu f oznaczamy |f| i definiujemy jako sumaryczną wielkość przepływu wypływającego z s wszystkimi krawędziami Definicja maksymalnego przepływu w sieci. Dla danej sieci (G, s, t, c przepływ f, którego wartość będzie maksymalna Nazywamy maksymalnym przepływem sieci G s, t, c) Definicja przepustowości residualnej. Niech G s t c będzie siecią. f pewnym przepływem w tej sieci. Przepustowością residualną pary wierzchołków (u, v) sieci G s t c nazywamy liczbę . Definicja sieci residualnej. Siecią residualną dla sieci (G, s, t, c) indukowaną przez przepływ f nazywamy sieć Gf, s, t, cf w której Gf = (V, Ef), przy czym 0. Krawędzie sieci residualnej nazywamy krawędziami residualnymi. Definicja ścieżki powiększającej. Dla danej sieci G s t c i przepływu f ścieżką powiększającą p nazywamy każdą ścieżkę ze źródła s do ujścia t w sieci residualnej (Gf, s, t, cf). Twierdzenie Forda Fulkersona o maksymalnym przepływie i minimalnym przekroju Niech (G, s, t, c będzie siecią przepływową. f – przepływem w tej sieci. Następujące warunki są równoważne: 1 przepływ f jest maksymalny 2 sieć residualna Gf, s, t, cf nie zawiera ścieżek powiększających 3) dla pewnego przekroju (S, T) w sieci (G, s, t, c) zachodzi |f| = c = (S, T) Podstawowy algorytm Forda-Fulkersona brzmi następująco: Wyzeruj wszystkie przepływy w sieci Dopóki w sieci residualnej istnieje ścieżka rozszerzająca p zwiększaj przepływ o cf p wzdłuż kanałów zgodnych z kierunkiem ścieżki a zmniejszaj przepływ wzdłuż kanałów przeciwnych (wygaszanie przepływu . Przepływ sieciowy rośnie o cf(p). Aby lepiej zrozumieć ten algorytm oprzyjmy się na prostym przykładzie. Oto nasza sieć przepływowa. W kanałach zaznaczyliśmy ich przepustowości. Przepływy są zerowe. Również przepływ sieci f 0. Dla zerowych przepływów sieć residualna jest identyczna z siecią pierwotną. Szukamy w niej ścieżki rozszerzającej która połączy źródło s z ujściem t. Takich ścieżek może być wiele. Umówmy się że wybieramy najkrótszą z nich mającą najmniej krawędzi . Na przykład może to być ścieżka: Na ścieżce p znajdują się trzy kanały sieci residualnej: s A A B i B t . Przepustowość residualna cf p ścieżki jest równa najmniejszej przepustowości residualnej jej kanałów. Najmniejszą przepustowość residualną posiada kanał B-t dla którego cf(B,t) = 6. Zatem wzdłuż krawędzi ścieżki przepływ można zwiększyć o 6 jednostek. O tyle rośnie również przepływ sieciowy czyli | fnowy | = | fstary| + cf(p) = 0 + 6 = 6 Zwiększenie przepływu w kanale sieci pierwotnej o cf(p) odpowiada zmniejszeniu przepustowości residualnej tego kanału. Jednocześnie wraz z pojawieniem się przepływu w kanale sieci pierwotnej powstaje kanał przeciwny w sieci residualnej o przepustowości residualnej równej przepływowi. Nasza sieć residualna wygląda teraz następująco: Przepustowość residualna kanału s A wynosi 3 - oznacza to iż kanałem tym można wciąż jeszcze przesłać trzy dodatkowe jednostki przepływu. Zwróćmy uwagę iż w siei residualnej pojawił się kanał przeciwny A s o przepustowości residualnej cf(A,s) = 6. Kanał A B może jeszcze przesłać 1 dodatkową jednostkę przepływu. Również tutaj pojawił się kanał przeciwny o przepustowości residualnej równej 6. Kanał B t przestał istnieć w sieci residualnej ponieważ osiągnął już swoją maksymalną przepustowość - 6 jednostek przepływu. Nie może on być dalej wykorzystywany do powiększania przepływu. Na jego miejscu mamy jednak kanał przeciwny z przepustowością residualną równą 6. W nowej sieci residualnej szukamy kolejnej ścieżki rozszerzającej: Przepływ zwiększamy f 6 + 3 9 i modyfikujemy przepustowości residualne krawędzi ścieżki rozszerzającej otrzymując nową sieć residualną: Z sieci residualnej znikają kanały s A i A C - wykorzystały już swój potencjał zwiększania przepływu. Szukamy kolejnej ścieżki rozszerzającej: p s D E t cf(p) = 6 Przepływ zwiększamy f 9 + 6 15. Wzdłuż ścieżki rozszerzającej modyfikujemy odpowiednio przepustowości residualne kanałów i otrzymujemy nową sieć residualną: W nowej sieci residualnej zniknął kanał D E . Wciąż jednakże możemy znaleźć nową ścieżkę rozszerzającą: p Przepływ zwiększamy f otrzymujemy: 15 + 3 s D C t cf(p) = 3 18. Po zmodyfikowaniu sieci residualnej W tej sieci residualnej nie znajdziemy już żadnej ścieżki rozszerzającej - ze źródła s nie wychodzi żaden kanał. Otrzymaliśmy maksymalny przepływ. Z sieci residualnej można w prosty sposób przejść do sieci przepływowej wraz z rozkładem przepływów na poszczególne kanały. Wystarczy od przepustowości kanałów odjąć otrzymane przepustowości residualne - dla nieistniejących kanałów ich przepustowość residualna wynosi 0. W efekcie otrzymamy następującą sieć przepływową z wyznaczonym maksymalnym przepływem sieciowym: