TEORIA GRAFÓW I SIECI Temat nr 3: Marszruty, łańcuchy, drogi w grafach dr hab. inż. Zbigniew TARAPATA, prof. WAT e-mail: zbigniew.tarapata@wat.edu.pl http://tarapata.edu.pl tel.: 261-83-95-04, p.225/100 Zakład Badań Operacyjnych i Wspomagania Decyzji Instytut Systemów Informatycznych Wydział Cybernetyki, Wojskowa Akademia Techniczna
Kilka dalszych definicji Marszruta łącząca wierzchołki x p z x k M p k x, x xi, ui, xi, ui,, xi, u L i, x 0 1 1 2 1 L il 1. i W, l 0, L x l 2. i U, l 1, L 3. 4. u l x o i x L i x x p k ^ x, u, x P x, u, x P x p wierzchołek początkowy x k wierzchołek końcowy L długość marszruty (liczba gałęzi w marszrucie) 5. il 1 il il il il il 1 l 1, L 2
Kilka dalszych definicji Marszruta Marszruta skierowana: xi, ui, xi P ^ l 1 l 1, L Marszruta cykliczna: marszruta, dla której x p =x k, Łańcuch marszruta o różnych gałęziach, Łańcuch prosty - łańcuch o różnych wierzchołkach, Cykl łańcuch cykliczny, L 1, Cykl prosty: x p =x k, pozostałe wierzchołki różne, Droga łańcuch skierowany, Droga prosta droga o różnych wierzchołkach. G 1 3 a 2 4 d f 5 g 6 x p =2, x k =6 1. <2,b,3,c,4,f,6> 2. <2,d,5,e,4,f,6> 3. <2,d,5,e,4,e,5,g,6> 4. <2,b,3,c,4,e,5,d,2> 5. <2,a,1,a,2> l l 1. 2. 3. 2. 4. 5. 1. 2. 1. 2. 4. 4. 2. 2. 3
Kilka twierdzeń TWIERDZENIE k Elementy r ij k-tej potęgi macierzy R(G) przyległości wierzchołków są równe liczbie różnych marszrut o długości k łączących wierzchołek x i z wierzchołkiem x j. TWIERDZENIE k Element p ij k-tej potęgi macierzy przejść P(G) jest równy liczbie różnych marszrut skierowanych o długości k łączących wierzchołek x i z wierzchołkiem x j. TWIERDZENIE (Königa) Graf bez pętli jest grafem dwudzielnym nie zawiera marszrut cyklicznych o nieparzystej długości. 4
Procedura wyznaczania łańcucha najkrótszego 1. wierzchołek x p oznaczamy cechą 0, 2. dla wszystkich wierzchołków ocechowanych cechą c cechujemy wszystkie wierzchołki przyległe cechą c + 1, 3. a) jeżeli x k nie jest ocechowany, to c: = c + 1 i powrót do punktu 2; b) jeżeli x k jest ocechowany, to przejdź do punktu 4. 4. tworzymy łańcuch od końca włączając wierzchołki o coraz niższych cechach i dowolne gałęzie je łączące, aż do włączenia x p. G 1 1 1 3 a c=0 2 4 2 d f 5 g 6 1 2 x p =2, x k =6 Łańcuch najkrótszy: od końca: <6,g,5,d,2>, czyli <2,d,5,g,6> 5
graf G jest spójny ^ istnieje M x, y ; x, y W Spójność grafu składowa spójności maksymalny podgraf spójny, liczba składowych spójności grafu G - (G), rząd R(G) grafu G liczność zbioru wierzchołków najliczniejszej składowej spójności. G1 Czy graf G1 jest spójny? G1 nie jest spójny: (G1) =2 R(G1)=4 G2 G2 nie jest spójny: (G2) =2 R(G1)=5 6
Wyznaczanie składowych spójności grafu n 1 S b k B k 1 I. gdzie B Rb G I R b binarna macierz przyległości wierzchołków. Do tej samej składowej spójności należą wierzchołki, którym odpowiadają identyczne wiersze (kolumny) macierzy S b. UWAGA: k n 1 k k 1 B B B n 1 Graf (po lewej) nie jest spójny: (G) =4 po prawej, R(G)=7 7
Wyznaczanie składowych spójności grafu II. 1. cechujemy dowolny wierzchołek cechą C = 1, 2. wszystkie wierzchołki przyległe do wierzchołków już ocechowanych cechujemy cechą C, 3. jeżeli został wierzchołek nieocechowany, to C:=C+1 i cechujemy go cechą C, a następnie przechodzimy do punktu 2, 4. wszystkie wierzchołki ocechowane identyczną cechą tworzą składową spójności. 1 c=1 1 S1={1,2,3,4,5} S2={6} 1 1 2 8
Łańcuch Eulera Łańcuch Eulera łańcuch zawierający wszystkie gałęzie grafu. Leonard Euler 1707-1783 9
Łańcuch Eulera 10
Łańcuch Eulera Mosty królewieckie - 7 mostów łączących brzegi rzeki Pregoły (1736) 11
Łańcuch Eulera Pytanie Eulera: Czy można przejść przez miasto przechodząc przez każdy most dokładnie jeden raz? 12
Łańcuch Eulera TWIERDZENIE G zawiera łańcuch Eulera G jest spójny i liczba wierzchołków o nieparzystych rozwidleniach r(x) jest równa 0 lub 2. cykl Eulera łańcuch Eulera Uwaga! O grafie, który zawiera cykl Eulera mówi się, że to graf eulerowski a taki, który zawiera łańcuch Eulera - półeulerowski. G 1 nie zawiera łańcucha/cyklu Eulera Dlaczego? G 2 zawiera łańcuch/cykl Eulera Dlaczego? G 3 zawiera łańcuch/cykl Eulera Dlaczego? 13
Łańcuch Eulera Zastępujemy obszary lądu wierzchołkami a mosty krawędziami: b b x p a c a 0 1 1 c d Problem mostów w Królewcu na rzece Pregole 0 2 2 d x k 14
Łańcuch Eulera algorytm Algorytm (Hoang-Tuy) 1. jeżeli wszystkie r(x) parzyste, to x p = x k dowolny jeżeli r(x), r(y) nieparzyste, to x p = x, x k = y; 2. wyznaczamy łańcuch prosty (dla x p x k ) - cykl prosty (dla x p = x k ); 3. wśród nieocechowanych gałęzi znajdujemy cykl prosty z gałęzią przyległą do dowolnej ocechowanej i gałęzie tego cyklu cechujemy cechą o 1 większą od ostatnio nadanej; postępowanie kontynuujemy aż do ocechowania wszystkich gałęzi; 4. łańcuch tworzymy rozpoczynając od x p i dołączając kolejno gałęzie o najwyższej wartości cechy spośród gałęzi przyległych do ostatnio dołączonej; postępowanie kończymy na x k. 15
Łańcuch Eulera zastosowania Problem chińskiego listonosza (ang. Chinese postman problem, route inspection problem) listonosz, roznosząc listy, wychodzi z poczty i musi przejść przez wszystkie ulice w swojej dzielnicy co najmniej jeden raz i wrócić na pocztę. Chciałby mieć jak najkrótszą do przejścia trasę. Problem polega na znalezieniu cyklu Eulera w grafie. Problem został pierwszy raz sformułowany w 1962 roku w języku chińskim. Złożoność obliczeniowa problemu uzależniona jest od rodzaju grafu, na którym jest on rozpatrywany. W przypadku grafów w całości skierowanych albo nieskierowanych, problem chińskiego listonosza można rozwiązać w czasie wielomianowym. W przypadku grafów mieszanych (częściowo skierowanych, częściowo nieskierowanych) problem zalicza się do klasy NP-trudnych. 16
Łańcuch/cykl Hamiltona Łańcuch (cykl) Hamiltona łańcuch (cykl) prosty zawierający wszystkie wierzchołki. UWAGA: z definicji łańcucha (cyklu) Hamiltona wynika, że można go wyznaczać jedynie dla szkieletu grafu. TWIERDZENIE (ORE A) Jeżeli w grafie zwykłym i spójnym istnieje najdłuższy łańcuch prosty łączący wierzchołki x oraz y taki, że L 2, s(x) + s(y) L+1, to łańcuch ten jest łańcuchem Hamiltona, a graf zawiera cykl Hamiltona. 17
Łańcuch/cykl Hamiltona TWIERDZENIE Założenia: G graf zwykły i spójny, R(G) 3. Jeżeli dla każdych dwóch wierzchołków (różnych) x, y W zachodzi: s(x) + s(y) R(G) 1, to w G każdy najdłuższy łańcuch prosty jest łańcuchem Hamiltona; jeżeli s(x) + s(y) R(G), to w G istnieje cykl Hamiltona. TWIERDZENIE (DIRAC A) G graf zwykły i spójny, R(G) 3 x W s 1 2 x R( G) w G istnieje cykl Hamiltona 18
Łańcuch/cykl Hamiltona - zastosowania Problem komiwojażera: dane jest n miast, które komiwojażer ma odwiedzić oraz odległość / cena podróży / czas podróży pomiędzy każdą parą miast. Celem jest znalezienie najkrótszej / najtańszej / najszybszej drogi łączącej wszystkie miasta, zaczynającej się i kończącej się w określonym punkcie. Przykład Miasta: Kutno, Warszawa, Poznań, Kraków. Znaleźć najkrótszą trasę z Kutna odwiedzającą wszystkie miasta dokładnie jeden raz. Miasto Kutno Warszawa Poznań Kraków Kutno 0 130 180 300 Warszawa 130 0 320 350 Poznań 180 320 0 360 Kraków 300 350 360 0 19
G liczba składowych spójności G W n; U m Liczba cyklomatyczna grafu G m G n Cyklomatyka grafów (G)=11+ +2-6=7 Las - G 0 Drzewo - G 0 i G 1 Własności i interpretacja 1. G 0 2. G 0 3. G G nie ma w G łańcuchów cyklicznych; jest równa liczbie gałęzi (zwanych klamrami), które trzeba usunąć, aby powstały graf częściowy G I I był lasem i G G. 20
Cyklomatyka grafów Karkas grafu G W, U, P - jest to graf częściowy T, T, I I W, U P spełniający dwa warunki z trzech: 1. m T m G G 2. T G 3. T 0 UWAGA! Karkas grafu = drzewo rozpinające (ang. spanning tree) Przykłady karkasów grafów 21
Cyklomatyka grafów dr hab. inż. Z. Tarapata, Teoria grafów i sieci, Temat nr 3: Marszruty, łańcuchy i drogi w grafach 1 Algorytm wyznaczania karkasu (dla składowej spójności) 1. Dowolny wierzchołek cechujemy cechą k=0. 2. Nieocechowanym wierzchołkom przyległym do ocechowanych cechą k nadajemy cechę k+1 aż do ocechowania wszystkich wierzchołków. 3. Do karkasu dołączamy wierzchołki o najwyższych cechach; dla każdego wierzchołka o cesze k wybieramy tylko jedną gałąź i to taką, która jest incydentna z rozpatrywanym wierzchołkiem i wierzchołkiem o cesze k-1. Włączamy do karkasu ten wierzchołek. Postępowanie kończymy po włączeniu wszystkich wierzchołków. k=0 Uwaga: Zaczynamy od składowej spójności zbudowanej na wierzchołkach: {1, 2, 3, 4, 5} 22
Cyklomatyka grafów dr hab. inż. Z. Tarapata, Teoria grafów i sieci, Temat nr 3: Marszruty, łańcuchy i drogi w grafach 1 Algorytm wyznaczania karkasu (dla składowej spójności) 1. Dowolny wierzchołek cechujemy cechą k=0. 2. Nieocechowanym wierzchołkom przyległym do ocechowanych cechą k nadajemy cechę k+1 aż do ocechowania wszystkich wierzchołków. 3. Do karkasu dołączamy wierzchołki o najwyższych cechach; dla każdego wierzchołka o cesze k wybieramy tylko jedną gałąź i to taką, która jest incydentna z rozpatrywanym wierzchołkiem i wierzchołkiem o cesze k-1. Włączamy do karkasu ten wierzchołek. Postępowanie kończymy po włączeniu wszystkich wierzchołków. k=1 k=0 Uwaga: Zaczynamy od składowej spójności zbudowanej na wierzchołkach: {1, 2, 3, 4, 5} 23
Cyklomatyka grafów dr hab. inż. Z. Tarapata, Teoria grafów i sieci, Temat nr 3: Marszruty, łańcuchy i drogi w grafach 1 Algorytm wyznaczania karkasu (dla składowej spójności) 1. Dowolny wierzchołek cechujemy cechą k=0. 2. Nieocechowanym wierzchołkom przyległym do ocechowanych cechą k nadajemy cechę k+1 aż do ocechowania wszystkich wierzchołków. 3. Do karkasu dołączamy wierzchołki o najwyższych cechach; dla każdego wierzchołka o cesze k wybieramy tylko jedną gałąź i to taką, która jest incydentna z rozpatrywanym wierzchołkiem i wierzchołkiem o cesze k-1. Włączamy do karkasu ten wierzchołek. Postępowanie kończymy po włączeniu wszystkich wierzchołków. k=1 k=0 Uwaga: Zaczynamy od składowej spójności zbudowanej na wierzchołkach: {1, 2, 3, 4, 5} 24
Cyklomatyka grafów dr hab. inż. Z. Tarapata, Teoria grafów i sieci, Temat nr 3: Marszruty, łańcuchy i drogi w grafach 1 Algorytm wyznaczania karkasu (dla składowej spójności) 1. Dowolny wierzchołek cechujemy cechą k=0. 2. Nieocechowanym wierzchołkom przyległym do ocechowanych cechą k nadajemy cechę k+1 aż do ocechowania wszystkich wierzchołków. 3. Do karkasu dołączamy wierzchołki o najwyższych cechach; dla każdego wierzchołka o cesze k wybieramy tylko jedną gałąź i to taką, która jest incydentna z rozpatrywanym wierzchołkiem i wierzchołkiem o cesze k-1. Włączamy do karkasu ten wierzchołek. Postępowanie kończymy po włączeniu wszystkich wierzchołków. k=3 k=1 k=0 Uwaga: Zaczynamy od składowej spójności zbudowanej na wierzchołkach: {1, 2, 3, 4, 5} 25
Cyklomatyka grafów dr hab. inż. Z. Tarapata, Teoria grafów i sieci, Temat nr 3: Marszruty, łańcuchy i drogi w grafach 1 Algorytm wyznaczania karkasu (dla składowej spójności) 1. Dowolny wierzchołek cechujemy cechą k=0. 2. Nieocechowanym wierzchołkom przyległym do ocechowanych cechą k nadajemy cechę k+1 aż do ocechowania wszystkich wierzchołków. 3. Do karkasu dołączamy wierzchołki o najwyższych cechach; dla każdego wierzchołka o cesze k wybieramy tylko jedną gałąź i to taką, która jest incydentna z rozpatrywanym wierzchołkiem i wierzchołkiem o cesze k-1. Włączamy do karkasu ten wierzchołek. Postępowanie kończymy po włączeniu wszystkich wierzchołków. k=3 k=1 k=0 Uwaga: Zaczynamy od składowej spójności zbudowanej na wierzchołkach: {1, 2, 3, 4, 5} 26
Cyklomatyka grafów dr hab. inż. Z. Tarapata, Teoria grafów i sieci, Temat nr 3: Marszruty, łańcuchy i drogi w grafach 1 Algorytm wyznaczania karkasu (dla składowej spójności) 1. Dowolny wierzchołek cechujemy cechą k=0. 2. Nieocechowanym wierzchołkom przyległym do ocechowanych cechą k nadajemy cechę k+1 aż do ocechowania wszystkich wierzchołków. 3. Do karkasu dołączamy wierzchołki o najwyższych cechach; dla każdego wierzchołka o cesze k wybieramy tylko jedną gałąź i to taką, która jest incydentna z rozpatrywanym wierzchołkiem i wierzchołkiem o cesze k-1. Włączamy do karkasu ten wierzchołek. Postępowanie kończymy po włączeniu wszystkich wierzchołków. k=3 k=1 k=0 Uwaga: Zaczynamy od składowej spójności zbudowanej na wierzchołkach: {1, 2, 3, 4, 5} 27
Cyklomatyka grafów dr hab. inż. Z. Tarapata, Teoria grafów i sieci, Temat nr 3: Marszruty, łańcuchy i drogi w grafach 1 Algorytm wyznaczania karkasu (dla składowej spójności) 1. Dowolny wierzchołek cechujemy cechą k=0. 2. Nieocechowanym wierzchołkom przyległym do ocechowanych cechą k nadajemy cechę k+1 aż do ocechowania wszystkich wierzchołków. 3. Do karkasu dołączamy wierzchołki o najwyższych cechach; dla każdego wierzchołka o cesze k wybieramy tylko jedną gałąź i to taką, która jest incydentna z rozpatrywanym wierzchołkiem i wierzchołkiem o cesze k-1. Włączamy do karkasu ten wierzchołek. Postępowanie kończymy po włączeniu wszystkich wierzchołków. k=3 k=1 k=0 Uwaga: Zaczynamy od składowej spójności zbudowanej na wierzchołkach: {1, 2, 3, 4, 5} 28
Cyklomatyka grafów dr hab. inż. Z. Tarapata, Teoria grafów i sieci, Temat nr 3: Marszruty, łańcuchy i drogi w grafach 1 Algorytm wyznaczania karkasu (dla składowej spójności) 1. Dowolny wierzchołek cechujemy cechą k=0. 2. Nieocechowanym wierzchołkom przyległym do ocechowanych cechą k nadajemy cechę k+1 aż do ocechowania wszystkich wierzchołków. 3. Do karkasu dołączamy wierzchołki o najwyższych cechach; dla każdego wierzchołka o cesze k wybieramy tylko jedną gałąź i to taką, która jest incydentna z rozpatrywanym wierzchołkiem i wierzchołkiem o cesze k-1. Włączamy do karkasu ten wierzchołek. Postępowanie kończymy po włączeniu wszystkich wierzchołków. k=3 k=1 k=0 Uwaga: Zaczynamy od składowej spójności zbudowanej na wierzchołkach: {1, 2, 3, 4, 5} 29
Cyklomatyka grafów dr hab. inż. Z. Tarapata, Teoria grafów i sieci, Temat nr 3: Marszruty, łańcuchy i drogi w grafach 1 Algorytm wyznaczania karkasu (dla składowej spójności) 1. Dowolny wierzchołek cechujemy cechą k=0. 2. Nieocechowanym wierzchołkom przyległym do ocechowanych cechą k nadajemy cechę k+1 aż do ocechowania wszystkich wierzchołków. 3. Do karkasu dołączamy wierzchołki o najwyższych cechach; dla każdego wierzchołka o cesze k wybieramy tylko jedną gałąź i to taką, która jest incydentna z rozpatrywanym wierzchołkiem i wierzchołkiem o cesze k-1. Włączamy do karkasu ten wierzchołek. Postępowanie kończymy po włączeniu wszystkich wierzchołków. k=3 k=1 k=0 Uwaga: Zaczynamy od składowej spójności zbudowanej na wierzchołkach: {1, 2, 3, 4, 5} 30
Cyklomatyka grafów dr hab. inż. Z. Tarapata, Teoria grafów i sieci, Temat nr 3: Marszruty, łańcuchy i drogi w grafach 1 Algorytm wyznaczania karkasu (dla składowej spójności) 1. Dowolny wierzchołek cechujemy cechą k=0. 2. Nieocechowanym wierzchołkom przyległym do ocechowanych cechą k nadajemy cechę k+1 aż do ocechowania wszystkich wierzchołków. 3. Do karkasu dołączamy wierzchołki o najwyższych cechach; dla każdego wierzchołka o cesze k wybieramy tylko jedną gałąź i to taką, która jest incydentna z rozpatrywanym wierzchołkiem i wierzchołkiem o cesze k-1. Włączamy do karkasu ten wierzchołek. Postępowanie kończymy po włączeniu wszystkich wierzchołków. k=3 k=1 k=0 Uwaga: Zaczynamy od składowej spójności zbudowanej na wierzchołkach: {1, 2, 3, 4, 5} 31
Cyklomatyka grafów dr hab. inż. Z. Tarapata, Teoria grafów i sieci, Temat nr 3: Marszruty, łańcuchy i drogi w grafach 1 Algorytm wyznaczania karkasu (dla składowej spójności) 1. Dowolny wierzchołek cechujemy cechą k=0. 2. Nieocechowanym wierzchołkom przyległym do ocechowanych cechą k nadajemy cechę k+1 aż do ocechowania wszystkich wierzchołków. 3. Do karkasu dołączamy wierzchołki o najwyższych cechach; dla każdego wierzchołka o cesze k wybieramy tylko jedną gałąź i to taką, która jest incydentna z rozpatrywanym wierzchołkiem i wierzchołkiem o cesze k-1. Włączamy do karkasu ten wierzchołek. Postępowanie kończymy po włączeniu wszystkich wierzchołków. k=3 k=1 k=0 Uwaga: Zaczynamy od składowej spójności zbudowanej na wierzchołkach: {1, 2, 3, 4, 5} 32
Cyklomatyka grafów dr hab. inż. Z. Tarapata, Teoria grafów i sieci, Temat nr 3: Marszruty, łańcuchy i drogi w grafach 1 Algorytm wyznaczania karkasu (dla składowej spójności) 1. Dowolny wierzchołek cechujemy cechą k=0. 2. Nieocechowanym wierzchołkom przyległym do ocechowanych cechą k nadajemy cechę k+1 aż do ocechowania wszystkich wierzchołków. 3. Do karkasu dołączamy wierzchołki o najwyższych cechach; dla każdego wierzchołka o cesze k wybieramy tylko jedną gałąź i to taką, która jest incydentna z rozpatrywanym wierzchołkiem i wierzchołkiem o cesze k-1. Włączamy do karkasu ten wierzchołek. Postępowanie kończymy po włączeniu wszystkich wierzchołków. k=3 k=1 k=0 Uwaga: Zaczynamy od składowej spójności zbudowanej na wierzchołkach: {1, 2, 3, 4, 5} 33
Cyklomatyka grafów dr hab. inż. Z. Tarapata, Teoria grafów i sieci, Temat nr 3: Marszruty, łańcuchy i drogi w grafach 1 Algorytm wyznaczania karkasu (dla składowej spójności) 1. Dowolny wierzchołek cechujemy cechą k=0. 2. Nieocechowanym wierzchołkom przyległym do ocechowanych cechą k nadajemy cechę k+1 aż do ocechowania wszystkich wierzchołków. 3. Do karkasu dołączamy wierzchołki o najwyższych cechach; dla każdego wierzchołka o cesze k wybieramy tylko jedną gałąź i to taką, która jest incydentna z rozpatrywanym wierzchołkiem i wierzchołkiem o cesze k-1. Włączamy do karkasu ten wierzchołek. Postępowanie kończymy po włączeniu wszystkich wierzchołków. k=3 k=1 k=0 Uwaga: Zaczynamy od składowej spójności zbudowanej na wierzchołkach: {1, 2, 3, 4, 5} 34
Zakład Badań Operacyjnych i Wspomagania Decyzji Instytut Systemów Informatycznych Wydział Cybernetyki, Wojskowa Akademia Techniczna DZIĘKUJĘ ZA UWAGĘ dr hab. inż. Zbigniew TARAPATA, prof. WAT e-mail: zbigniew.tarapata@wat.edu.pl http://tarapata.edu.pl