Algorytm chińskiego listonosza – Katarzyna Ignaszewska SPI51

Transkrypt

Algorytm chińskiego listonosza – Katarzyna Ignaszewska SPI51
Algorytm chińskiego listonosza – Katarzyna Ignaszewska SPI51
Scenariusz lekcji
Temat: Problem chińskiego listonosza, czyli jak obejść miasto najmniejszym
nakładem sił.
W roku 1962 chioski matematyk Mei-Ko Kwan zaproponował następujący problem:
Listonosz roznosząc listy musi przejśd przez wszystkie ulice w swojej dzielnicy co najmniej
jeden raz i wrócid na pocztę. Ponieważ jest człowiekiem leniwym (nie odnosi się to do
pozostałych listonoszy, tylko do tego konkretnego), chciałby mied jak najkrótszą do przejścia
trasę. Znalezienie takiej trasy jest problemem, który nazwano problemem chioskiego
listonosza (ang. Chinese postman problem - CPP).
Cele zajęć
Uczeo:
doskonali intuicyjne rozumienie pojęcia algorytmu
zna pojęcie algorytmu optymalnego, czyli możliwie najlepszej metody rozwiązywania
zauważa problemy w życiu codziennym, gdzie rozwiązanie jest algorytmem
rozwija logiczne myślenie
Adresaci lekcji
Lekcja skierowana jest do uczniów ostatniej klasy gimnazjum lub do uczniów klas szkoły
średniej.
Uczniowie znają pojecie algorytmu, potrafią opisad krok po kroku algorytm zadanego
problemu.
Miejsce zajęć
Zajęcia odbywają się w sali komputerowej wyposażonej w odpowiednią liczbę stanowisk
komputerowych oraz w rzutnik multimedialny i ekran.
Przebieg zajęć
Mini wykład teoretyczny :1
Podstawowe pojęcia użyte w wykładzie
Graf w uproszczeniu – zbiór wierzchołków, które mogą byd połączone krawędziami, w taki
sposób, że każda krawędź kooczy się i zaczyna w którymś z wierzchołków. Grafy to
1
Wykład zaczerpnięty z MINI Wykłady, Wydział Matematyki i Nauk Informacyjnych Politechniki
Warszawskiej 2000
1
Algorytm chińskiego listonosza – Katarzyna Ignaszewska SPI51
podstawowy obiekt rozważao teorii grafów. Za pierwszego teoretyka i badacza grafów
uważa się Leonarda Eulera.
Przykłady grafów możemy zobaczyd na Rysunku 1 – graf z ponumerowanymi wierzchołkami
i Rysunku 2 – graf z ponumerowanymi wierzchołkami oraz wagami krawędzi.
Rysunek 1 Przykład grafu
Rysunek 2 Przykład grafu, z wagami krawędzi
Cykl/ szlak Eulera: szlak, który zawiera każdą krawędź grafu G jest nazwany szlakiem/cyklem
Eulera grafu G.
Obchód grafu G to skooczony domknięty spacer przechodzący przez każdą krawędź G
przynajmniej jeden raz.
Obchód Eulera jest obchodem zawierającym każdą krawędź grafu G dokładnie jeden raz.
Graf nazywamy eulerowskim (grafem Eulera) jeżeli zawiera obchód Eulera.
Sformułowanie problemu.
Rozważmy graf, którego krawędzie odpowiadają ulicom w rejonie, obsługiwanym przez
listonosza. Wierzchołki to po prostu skrzyżowania ulic. Krawędziom nadajemy wagi, które
oznaczają odległości między dwoma skrzyżowaniami. Znalezienie możliwie najkrótszej drogi,
którą musi przejśd listonosz sprowadza sie do znalezienia w tym grafie drogi o minimalnej
sumie wag krawędzi, która przechodzi przez każdą krawędź co najmniej raz.
2
Algorytm chińskiego listonosza – Katarzyna Ignaszewska SPI51
Jeśli graf posiada cykl Eulera.
Jeśli dany graf posiada cykl Eulera, to istnieje taka droga, która zaczyna i kooczy sie w tym
samym punkcie i wymaga przejścia po każdej ulicy dokładnie raz. Zauważmy, że ponieważ
każdy cykl Eulera przechodzi raz przez każdą krawędź to suma wag krawędzi (długośd drogi,
którą musi przejśd listonosz) jest zawsze taka sama (nie zależy od wierzchołka, w którym cykl
ten zaczyna się i kooczy). Rozwiązaniem jest więc dowolny cykl Eulera w tym grafie.
Jeśli graf nie posiada cyklu Eulera.
W takim przypadku listonosz będzie zmuszony przejśd niektórymi ulicami wielokrotnie.
Rozwiązanie jest więc cyklem, w którym suma długości krawędzi wybranych więcej niż raz
jest możliwie najmniejsza.
Przykład
Na rysunku pokazany jest układ ulic niedaleko Politechniki Warszawskiej. Załóżmy, że
fragmenty tych pięciu ulic tworzą rejon listonosza.
Rysunek 3 Fragment mapy w okolicy Politechniki Warszawskiej
Obok nazw ulic umieszczone są odległości w metrach. Prostokąt oznaczony literą P oznacza
miejsce, w którym umieściliśmy pocztę, na której pracuje 'nasz' listonosz. (Na marginesie:
nazwy i układ ulic są prawdziwe, jednak podane odległości oraz umiejscowienie poczty nie
odpowiadają rzeczywistości. Pocztę umieściliśmy w miejscu, gdzie w rzeczywistości znajduje
się Gmach Główny, w którym ma swoją siedzibę Wydział MiNI. I niestety nie ma w tym
budynku poczty.) Oto jak wygląda graf odpowiadający danemu układowi ulic. Zauważmy, że
graf ten nie ma cyklu Eulera ponieważ posiada dwa wierzchołki, z których wychodzi
nieparzysta liczba krawędzi. Na rysunku zaznaczono również rozwiązanie czyli optymalną
trasę listonosza.
3
Algorytm chińskiego listonosza – Katarzyna Ignaszewska SPI51
Rysunek 4 Graf na podstawie Rysunek 3
Zwródmy uwagę, że listonosz musi przejśd dwukrotnie tylko ulicę Nowakowskiego, zaś
pozostałe ulice dokładnie raz. Powyższa droga jest najkrótszą z możliwych ponieważ odcinek,
po którym przechodzi dwukrotnie liczy tylko 500 metrów i nie istnieje trasa spełniająca
zadane warunki o krótszym odcinku, który listonosz musi pokonad więcej niż raz.
Algorytm Fleury'ego
Jest to algorytm znajdujący cykl Eulera w grafie. Jak już wiemy, jeśli graf posiada taki cykl, to
jest on rozwiązaniem rozważanego problemu. Po wprowadzeniu pewnych modyfikacji może
posłużyd również do rozwiązywania problemu chioskiego listonosza w przypadku grafów,
które nie mają cyklu Eulera.
Opis Algorytmu Fleury'ego
Startujemy z dowolnego wierzchołka. Każda kolejna krawędź, po której przechodzimy,
wybierana jest spośród krawędzi wychodzących z wierzchołka, w którym aktualnie się
znajdujemy. Wybieramy oczywiście krawędź, po której jeszcze nie przeszliśmy. O ile jest to
możliwe, usunięcie wybranej krawędzi nie powinno rozciąd grafu na dwa 'kawałki'. Jeśli uda
nam się, postępując w ten sposób, dojśd do wierzchołka, z którego wyruszyliśmy i przejśd
przez wszystkie krawędzie, to otrzymana droga jest cyklem Eulera.
Podsumowując otrzymujemy następujący ogólny algorytm rozwiązujący problem chioskiego
listonosza:
K01: Sprawdź, czy graf jest spójny. Jeśli nie jest, to zakoocz algorytm z odpowiednim
komunikatem
K02: Wyszukaj w grafie wszystkie wierzchołki o nieparzystych stopniach
K03: Jeśli liczba tych wierzchołków jest równa 0, przejdź do kroku K07
K04: Wyznacz najkrótsze ścieżki łączące ze sobą wszystkie znalezione wierzchołki
o nieparzystych stopniach.
K05: Wyszukaj skojarzenie tych wierzchołków w pary o najmniejszej sumie wag krawędzi
4
Algorytm chińskiego listonosza – Katarzyna Ignaszewska SPI51
K06: Krawędzie wchodzące w skład wyznaczonych ścieżek skojarzenia zdubluj w grafie
wejściowym
K07: Wyznacz w grafie cykl Eulera i wyprowadź wynik
K08: Zakoocz algorytm
Zadanie dla uczniów
Wyobraź sobie, że zostałeś zatrudniony jako listonosz na poczcie przy ulicy Nowowiejskiej
48. Poczta znajduje się u zbiegu ulic Nowowiejskiej i Barlickiego (w rzeczywistości jest tam
placówka pocztowa). Twój rewir, po którym codziennie się poruszasz roznosząc przesyłki
listowe przedstawia mapka na Rysunku 5. Zaplanuj swoją codzienną pracę, czyli trasę
roznoszenia listów tak, aby Twoja droga była jak najkrótsza.
Rysunek 5 Fragment mapy Wrocławia
2
2
Mapa wykonana za pomocą Google Maps
5
Algorytm chińskiego listonosza – Katarzyna Ignaszewska SPI51
Uczniowie zanim zaczną szukad rozwiązania danego problemu, powinni sami określid długośd
poszczególnych ulic, korzystając z podanej skali. Następnie uczniowie przerysowują mapę do
postaci grafu.
Rysunek 6 Graf na podstawie Rysunek 5
Uczniowie korzystając z przykładu powinni zauważyd, że w grafie nie ma szlaku Eulera,
ponieważ są wierzchołki, z których wychodzi nieparzysta liczba krawędzi (dokładnie są 4
takie wierzchołki). Zatem niektóre z ulic należy przejśd dwukrotnie. Postępując zgodnie
z algorytmem Fleury'ego, tzn. wychodząc z poczty i wybierając ulicę po której jeszcze nie
szliśmy i starając się nie rozcinając grafu na dwie części, uczniowie powinni otrzymad
rozwiązanie.
6
Algorytm chińskiego listonosza – Katarzyna Ignaszewska SPI51
Rysunek 7 Rozwiązanie zadania
Widad, że w każdym „nieparzystym” wierzchołku (czyli takim, z którego wychodzi nieparzysta
liczba ulic), jedna z wychodzących krawędzi została podwojona. Ulice Kluczborska na
odcinku od Żeromskiego do Barlickiego, Nowowiejska pomiędzy Stein a Barlickiego oraz
Barlickiego pomiędzy Nowowiejską a Orzeszkowej zostaną pokonane dwukrotnie. Jest to
rozwiązanie optymalne, czyli droga listonosza będzie najkrótsza z możliwych.
Kontynuacja
Wcześniejsze zadanie może mied ciekawą kontynuacją. Problem chioskiego listonosza można
przenieśd na wędrówkę po szklakach górskich. W tym przypadku należy jednak problem
zmodyfikowad, wędrówki po górach są zazwyczaj kilkudniowe zatem wymagają
zaplanowania noclegów.
Jak zaplanowad wycieczkę w Kotlinę Kłodzką, aby wędrowad wszystkimi szlakami przy
najmniejszej liczbie przebytych kilometrów?
7
Algorytm chińskiego listonosza – Katarzyna Ignaszewska SPI51
Rysunek 8 Plan szlaków w Kotlinie Kłodzkiej
Literatura
Gurbiel E., Hardt-Olejniczak G., Kołczyk E., Krupicka H., Sysło M. M., Informatyka Poradnik
dla nauczyciel, WSiP, Warszawa 2004
Sysło M.M., Informatyka i technologia informacyjna w szkole, Instytut Informatyki UWr,
Wrocław 2004
MINI Wykłady, Wydział Matematyki i Nauk Informacyjnych Politechniki Warszawskiej 2000
http://edu.i-lo.tarnow.pl/inf/utils/002_roz/ol026.php
8