Grafymarmaj.math.uni.lodz.pl/Pros_11_12/23_Grafy.pdf · Droga degba nie jest ... Z reguły zakłada...

14
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 γ gdzie: V = {1, 2, 3}, E={a, b, c, d, e} Zaś funkcja γ określona jest za pomocą tabeli: f a b c d e γf {1} {1,2} {2,3} {2,3} {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 a y i b y z, to mówimy że: 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.

Transcript of Grafymarmaj.math.uni.lodz.pl/Pros_11_12/23_Grafy.pdf · Droga degba nie jest ... Z reguły zakłada...

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 γ gdzie:

V = {1, 2, 3}, E={a, b, c, d, e}

Zaś funkcja γ określona jest za pomocą tabeli:

f a b c d e γ f {1} {1,2} {2,3} {2,3} {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 a y i b y z , to mówimy że:

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.

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 ma deg v .

Przykład:

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 E- zbiorem 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 … taki że 1 … oraz istnieją wierzchołki … takie że dla 1 … .

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:

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 degbac jest drogą prostą .

Droga fkhkc nie jest drogą

prostą ponieważ krawędź k

powtarza się dwa razy.

Droga dgba jest drogą prostą

zamkniętą.

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.

ZZaaddaanniiee kkoommiiwwoojjaażżeerraa

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.

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.

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 ma wagę 230

cykl a b e c d a 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 mamy

warunek ograniczenia przepustowości

dla mamy

warunek skośnej symetrii

dla każdego

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 s D C t cf(p) = 3

Przepływ zwiększamy f 15 + 3 18. Po zmodyfikowaniu sieci residualnej

otrzymujemy:

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: