background image
background image

Ws zechnica Popołudniowa

Znajdowanie najkróts zych dróg ora z najniżs zych i najkróts zych drzew

 prof. dr hab. Maciej M Sysło

prof. dr hab. Maciej M Sysło

Zes zyt dydaktyczny opracowa ny w ramach projektu edukacyjnego

 — ponadregionalny program rozwija nia kompetencji 

uczniów s zkół ponadgimna zjalnych w zakresie technologii 
informacyjno-komunikacyjnych (ICT).

Wars zawska Wyższa Szkoła Informatyki

ul. Le wartows kiego 17, 00-169 Wars zawa

Projekt graficzny: FRYCZ I WICHA

Warsza wa 2010
Copyright ©  Wars zawska Wyższa  Szkoła Informatyki 2010
Publikacja nie jes t przeznaczona do sprzedaży.

Uniwers ytet Wrocławski, UMK w Toruniu

s yslo@ii.uni.wroc.pl, syslo@mat.uni.torun.pl

background image

< 4 > 

Informatyka + 

Wykład jes t poś więcony elementom teorii gra fów i obliczeń na  gra fach. Grafy odgrywają podwójną rolę w in-
formatyce. Z je dnej strony, s ą modelami obliczeń – w tej roli najczę ściej wys tępują drzewa – lub odzwiercie -
dlają s trukturę połączeń komunikacyjnych, a z drugiej – wiele problemów o praktycznych zas tos owaniach 
jes t definiowanych na grafach jako s trukturach połączeń (zależności) między elementami. W pierws zej czę -
ści wykładu zos taną przeds tawione problemy, które miały wpływ na rozwój teorii grafów ora z dużą ich popu-
larność. Druga częś ć jes t poś więcona  wykorzys taniu drze w jako schematów obliczeń i algorytmów, a w trze -
ciej częś ci zos taną przeds tawione klas yczne problemy obliczeniowe na grafach, takie jak: znajdowa nie naj-
krótszych dróg i znajdowanie najkrótszego drzewa rozpina jącego w gra fie z obcią żonymi połączeniami. Roz-
wią za nia problemów bę dą prezentowane w s pecjalnym oprogramowaniu. 

1.  Grafy jako modele różnych s ytuacji ............................................................................................................. 5

2.  Trzy kla s yczne zagadnienia ......................................................................................................................... 6
 

2.1. Grafy Eulera  .......................................................................................................................................... 6

 

2.2. Malowanie map  .................................................................................................................................... 7

 

2.3. Grafy Hamiltona i problem komiwoja żera  ............................................................................................. 8

3.  Przykłady za s tos owań grafów w informat yce  ............................................................................................ 10
 

3.1. Drzewa  wyrażeń  ................................................................................................................................. 10

 

3.2. Drzewa  a lgorytmów  .............................................................................................................................11

 

3.3. Drzewa Huffmana – krótkie kody  ........................................................................................................ 12

4.  Algorytmy na grafach  ................................................................................................................................ 13
 

4.1. Grafy i ich komputerowe reprezentacje  ............................................................................................... 14

 

4.2. Znajdowanie najkrótszych dróg w grafach  .......................................................................................... 15

 

4.3. Znajdowanie najkróts zych drzew rozpinają cych w grafach .................................................................. 16

Literatura  ....................................................................................................................................................... 17

> Znajdowanie najkrótszych dróg oraz najniższych i najkrótszych drzew 

< 5  >

Ten wykład je st poś wię cony gra fom i ich zas tos owaniom. W potocznym s ensie grafem jes t pewien zbiór ele -
mentów, mię dzy którymi is tnieją połączenia. Na przykład, mia s ta i s ieć połą czeń mię dzy nimi tworzą graf. Po-
łączeniami z kolei mogą być drogi dla s amochodów, sie ć połączeń kolejowych lub s ieć połączeń lotniczych. 
Na rys unku 1 s ą przedstawione fragmenty połą czeń lotniczych. W rozwa żaniach informatycznych (algoryt-
micznych) na ogół nie intere suje na s , czemu odpowiadają elementy w takich sieciach połączeń (mia s ta , s ta -
cje, lotniska) i jaki jes t charakter połączeń (drogowy, kolejowy, lotniczy). Elementy w takich sieciach połączeń 
na zywamy wierzchołkami, połączenia – krawędziami (jeśli s ą s ymetryczne, czyli nieskierowane) lub łukami 
(jeśli s ą skierowane), a sie ć – grafem (gdy za wiera s ymetryczne połączenia) lub digrafem (gdy zawiera skie -
rowane połączenia). Graf jes t modelem s ytuacji, w której mamy zbiór elementów i połączenia mię dzy nimi. 

Rysunek 1. 
Przykład sieci połączeń lotniczych z Bydgos zczy

Na rysunku 2 przeds tawiono inny przykład pojawiania się grafów. Jes t on zwią zany z Eulerem, który rozwa -
żał s iatki wielościanów, czyli grafy utworzone z wierzchołków i kra wę dzi wieloś cianów – s tąd pochodzą na-
zwy wierzchołek i krawędź. 

Rysunek 2. 
Sześ cian i graf jego siatki. Wierzchołki sze ścianu s ą wierzchołkami grafu, a krawę dzie s ześ cianu s ą krawę -
dziami grafu. Dwa inne przykłady s ze ścianów s ą poka zane obok

Elementarnym wprowadzeniem do teorii grafów jes t ksią żka [8]. Za s tosowania gra fów w informatyce zilustro-
wano w ksią żkach [2], [5], [6]. Grafy zwią zane z zagadka mi można znaleźć w [6]. Głębs ze rozwa żania na tema t 
grafów i ich algorytmów zamies zczono w ksią żkach [1], [3], [7]. 

W rozdziale 2 przytaczamy najbardziej zna ne przykłady zwią zane z grafami, które przyczyniły s ię do ich po-
pularności i wzros tu zainteresowania nimi. W rozdziale 3 ilustrujemy pos łużenie się drzewami – specjalnymi 
rodzajami gra fów, które mają duże zas tos owania w informa tyce , a dokładniej – w kons trukcji i analizie algo-
rytmów. Na tomias t w rozdzia le 4 przeds ta wiamy kilka problemów i algorytmów zwią zanych z dowolnymi gra -

background image

< 6 > 

Informatyka + 

fami. Rozwa żania na wykładzie będą ilus trowane za pomocą oprogramowania edukacyjnego, które s łuży do 
demons tracji dzia łania algorytmów na grafach i ich komputerowych realiza cji. 

Przeds tawiamy tutaj trzy przykłady klas ycznych zagadnień, które uwa ża się, że najbardziej przyczyniły s ię do 
olbrzymiej popularnoś ci grafów jako modeli różnych s ytuacji. 

Wspomniany już wcześniej Leonhard Euler (1707-1783) je st uwa żany za ojca teorii grafów. W roku 1736, gdy 
mies zkał w obe cnym Kaliningradzie (Rosja), zainteres ował s ię, czy można zorganizowa ć wycie czkę po tym 
mieś cie w taki s pos ób, aby przejś ć ka żdy mos t na rzece Pregoła, ka żdy dokładnie je den ra z. Zagadka ta nosi 
na zwę mostów królewieckich, gdyż Kaliningrad przez jakiś czas  od połowy XV wieku nosił na zwę Królewiec; 
za cza s ów Eulera zaś  na zywał się Königs berg. Na rysunku 3, na s tarej mapie te go mias ta z czas ów Eulera , na-
niesiono wspomniane w zagadce mos ty, było ich siedem. 

Rysunek 3. 
Rzeka  Pregoła w Königsberg z za znaczonymi na niej mos tami (białe grube kreski), a obok graf (dokładniej – 
multigraf) odpowia dający tej s ytuacji

Zagadkę Eulera można przetłumaczyć na ję zyk innej zagadki, w której pytamy, czy daną  figurę można na ry-
sować na kartce papieru be z odrywania ołówka przechodząc ka żdą linię dokładnie jeden ra z. Taka figura na-
zywa s ię jednobie żną lub unikurs alną. Ła two zauwa żyć, że w ka żdym wierzchołku takiej figury liczba  połą -
czeń, którymi wchodzimy do wierzchołka musi być równa liczbie połączeń, którymi wychodzimy z tego wierz-
chołka , a więc liczba połączeń w ka żdym wierzchołku – tę liczbę na zywamy s topnie m wierzchołka – musi 
być parzys ta , jeś li mamy powrócić do punktu startu, lub graf może zawierać dokładnie tylko dwa wierzchołki 
o s topniach nieparzys tych, wtedy droga zawierająca wszys tkie połączenia musi się zaczynać i kończyć w tych 
wierzchołkach. W pierws zym przypadku, graf zawiera cykl Eulera , a w drugim – drogę Eulera . Graf zawiera ją-
cy cykl Eulera na zywamy grafem Eulera . Ła two s pos trzec, że graf mos tów królewieckich na rys . 3 nie je st jed-
nobie żny, gdyż ws zys tkie jego cztery wierzchołki mają s topnie nieparzys te. 

Rysunek 4. 
Odpowiedz, która z figur jes t jednobieżna? 

> Znajdowanie najkrótszych dróg oraz najniższych i najkrótszych drzew 

< 7  >

W połowie XIX wieku w Anglii duże zainteres owanie wzbudził Proble m Czerech Kolorów, który prze z ponad 
s to lat był Przypus zczeniem Cztere ch Kolorów. Ten problem, ja k więks zoś ć problemów dotyczących grafów, 
ma bardzo pros te s formułowa nie. Bierzemy mapę na przykład mapę Polski z podzia łem adminis tracyjnym 
i chcemy tak pomalować województwa kolorami, by żadne dwa są siadujące ze s obą  województwa nie zos tały 
pomalowa ne tym s amym kolorem, s taramy s ię przy tym użyć możliwie jak najmniejs zej liczby kolorów. Fran-
cis Guthrie , s tudent De Morga na, w 1852 roku pos ta wił przypus zczenie, że zaws ze cztery kolory wys tarczą.

Zwią zek Problemu Czterech Kolorów z grafami jes t zilus trowany na  rysunku 5. Najpierw tworzymy graf, któ-
ry bę dzie odzwiercie dlał s ąs iedztwo województw. A za tem wierzchołki w tym grafie mogą odpowia dać s toli-
com woje wództw i dwa wierzchołki połączymy krawędzią , jeśli odpowiadające im województwa bezpośre d-
nio graniczą ze sobą . Zauwa żmy, że w tak utworzonym grafie, żadne dwie krawę dzie nie przecinają się poza 
wierzchołkami – graf, który można tak narys ować, na zywa się grafem planarnym, a jego rysunek – grafem 
płas kim. Specyfikacja Problemu Cztere ch Kolorów dla grafów ma tera z na s tępującą pos tać: 

Problem Czterech Kolorów dla grafów
Dane:  

Graf planarny G.

Wynik:    Pomalowanie wierzchołków grafu G co najwyżej 4 kolorami w taki spos ób, że żadne dwa wierzchoł-

ki połączone krawędzią, nie zos ta ły pomalowane tym s amym kolorem. 

Rysunek 5. 
Mapa polski z podziałem na województwa. Na mapie naniesiono połączenia odpowiadające s ą siedztwu wo-
jewództw.  Obok  graf  województw  i je go pokolorowanie czterema  kolorami  (kolory  s ą oznaczone liczbami 
1, 2, 3, 4)

Wróćmy do ma lowania grafu woje wództw (patrz rys. 5). Wierzchołki tego grafu pomalowaliśmy 4 kolorami 
(oznaczonymi liczba mi 1, 2, 3, 4) s tosując algorytm, w którym wierzchołki są malowane w kolejnoś ci s topni, 
od najwięks zego i malowanemu wierzchołkowi dajemy kolor o możliwie najmniejs zej liczbie. W taki spos ób, 
najpierw Poznań (s ą siaduje z 7 województwami) otrzyma ł kolor 1, później Łódź (s ąs iaduje z 6 województwa-
mi) otrzyma ła kolor 2, na s tępnie Wars zawa otrzymała kolor 1, Kielce – kolor 3, Bydgos zcz – kolor 3, Gdańsk 
– kolor 2, Ols ztyn – kolor 4, Lublin – kolor 2, Katowice – kolor 1, Opole – kolor 3, Szczecin – kolor 3, Biały-
s tok – kolor 3, Rzes zów – kolor 1, Kraków – kolor 2, Wrocław – kolor 2, Zielona Góra – kolor 4. Jako ćwiczenie 
proponujemy sprawdzenie, czy ten graf nie można pomalowa ć trzema kolorami. 

Za s tosowany przez na s algorytm malowania grafu to algorytm s ekwencyjny, który może być s tos owany do 
malowa nia wierzchołków dowolnego grafu. Stos owana jes t w nim  s trategia zachłanna – na ka żdym kroku 
jes t używany możliwie najmniejs zy kolor. Problem kolorowania grafów jes t bardzo trudny algorytmicznie – 
więcej szczegółów na temat tego problemu można znaleźć w ksią żkach [8] i [7]. 

background image

< 8 > 

Informatyka + 

Wróćmy jes zcze do his torii Problemu Cztere ch Kolorów. W 1879 roku Alfred B. Kempe opublikował dowód, że 
ka żdy graf planarny można pomalować co najwyżej 4 kolorami. Je dnak w 1890 roku Percy J. Heawood znala zł 
błąd w dowodzie Kempego, ale był w s tanie udowodnić, że 5 kolorów wys tarczy dla grafów pla narnych (do-
wód jes t bardzo pros ty – patrz [8]). Przez niemal 100 la t tym problemem interesowali się niemal ws zys cy ma-
tematycy, rozwijają c wiele różnych me tod, a ż dopiero w 1976 roku Przypus zczenie Czterech Kolorów zos ta ło 
potwierdzone przez … komputer. Dokonali tego Kenneth Appel i Wolfgang Haken przy współpracy z progra-
mis tą Johnem Kochem. Komputer pracowa ł prze z 1200 godzin. Dotychcza s nie udało s ię podać dowodu te go 
twierdzenia, który nie korzystałby z komputera. 

Bardzo podobnie do problemu Eulera z punktu 2.1 brzmi problem pos tawiony w 1859 roku prze z Williama R. 
Hamiltona  (1805-1865). W tym przypadku, zagadka dotyczyła dwuna s tościanu formalnego i nale żało znaleźć 
drogę zamknię tą przechodzącą po krawędziach tej bryły, która  za wiera ka żdy jej wierzchołek dokładnie je -
den ra z (pa trz rys . 6). Taką drogę na zywamy cykle m Hamiltona , a graf zawierający taki cykl – grafem Hamil-
tona . 

Problem Cyklu Hamiltona
Da ne:  

Dowolny G.

Wynik:   Znale źć cykl Hamiltona  w grafie G albo s twierdzić, że takiego cyklu nie ma w grafie G. 

Rysunek 6. 
Dwuna s toś cian foremny i jego graf z za znaczonym cyklem Hamiltona

Różnica mię dzy problemami Eulera i Hamiltona tkwi w tym, że w pierws zym przypadku pos zukujemy cyklu za-
wierającego ws zys tkie połączenia , ka żde dokładnie ra z, a w drugim – cyklu zawierającego ws zystkie wierz-
chołki, również ka żdy dokładnie ra z. Różnica wydaje s ię być nie wielka, jednak obliczeniowo te dwa problemy 
należą do diametralnie różnych kla s złożonoś ci. Problem Eulera ma ła twe rozwiązanie – wys tarczy sprawdzić, 
czy stopnie ws zys tkich wierzchołków s ą parzys te i czy graf jes t s pójny (tzn. jes t w „jednym kawa łku”). Nato-
mias t dla  problemu Ha miltona nie podano dotychcza s efektywnego algorytmu rozwiązywania. Dalej w tym 
punkcie zajmiemy się nas tępującą, praktyczną wersją problemu Hamiltona . 

Problem komiwoja że ra (TSP)
Da ne:  

n mia s t (punktów) i odległości między ka żdą  parą mias t.

Wyniki:    Tras a zamknięta , przechodząca przez ka żde mia s to dokładnie jeden ra z, której długoś ć je st możli-

wie najmniejs za . 

Przykładem za stos owania problemu komiwoja żera  (TSP – Tra velling Salesman Problem) może być zadanie 
wyznaczenia  najkróts zej  tras y  obja zdu  prezydenta  kra ju  po  wszys tkich  s tolicach  województw  (s tanów  – 
w Stanach zjednoczonych, landów – w Niemcze ch itp.). Na  tej tra sie, pre zydent wyjeżdża ze s tolicy kraju, ma 
odwiedzić s tolicę ka żdego woje wództwa dokładnie jeden raz i wrócić do s tolicy kra ju. 

Na rysunku 7 prze ds tawiliśmy jedną z możliwych tra s dla s tolic województw, a le nie jes te śmy pewni, czy jes t 
ona najkrótsza . Obsługa biura prezydenta może je dnak chcie ć zna leźć najkróts zą tra s ę. W tym celu pos tano-
wiono generować ws zys tkie możliwe tra s y – za s tanówmy s ię, ile ich jes t. To ła two policzyć. Z Wars zawy moż-
na się udać do jednego z 15 mias t wojewódzkich. Będąc w pierwszym wybranym mieś cie, do wyboru ma my 

> Znajdowanie najkrótszych dróg oraz najniższych i najkrótszych drzew 

< 9  >

jedno z 14 mia s t. Po wybraniu drugie go mia s ta na tras ie, kolejne mias to można wybrać s poś ród 13 mia st i tak 
dalej. Gdy osiągamy os tatnie mias to, to czeka na s tylko powrót do Wars zawy. A zatem ws zys tkich możliwych 
wyborów jes t: 15*14*13*…*2*1. Oznaczmy tę liczbę na s tępująco: 

15! = 15*14*13*…*2*1

a ogólnie  

 

 

 

 

 

 

 

 

 

       n! = n*(n – 1)*(n – 2)*…*2*1

Oznaczenie n! czytamy „n silnia”, a za tem n! jes t iloczynem kolejnych liczb ca łkowitych, od jeden do n. War-
tości tej funkcji dla kolejnych n ros ną bardzo s zybko, patrz tabela 1. 

Tabela 1. 
Wartości funkcji n!

n

n!

10

3628800

15

1.30767*10

12

20

2.4329*10

18

25

1.55112*10

25

30

2.65253*10

32

40

8.15915*10

47

48

1.24139*10

61

100

9.3326*10

157

Z wartości umies zczonych w tabeli 1 wynika , że pos ługując się superkomputerem o mocy 1 PFlops, czyli wy-
konującym 10

15

 operacji na s ekundę , w realizacji na szkicowanej metody, służącej do znale zienia najkróts zej 

tra s y dla  prezydenta, otrzymanie takiej tra s y w przypadku Polski zabrałoby mniej niż s ekundę. Jednak w ol-
brzymim kłopocie znajdzie się pre zydent Stanów Zjednoczonych chcąc taką s amą metodą znaleźć najkrót-
s zą tra s ę objazdu po s tolica ch ws zys tkich kontynentalnych s tanów (jes t ich 49, z wyjątkiem Hawa jów) trwa-
łoby to 3.9*10

38

 lat. 

Znane są metody rozwią zywania problemu komiwoja żera szybsze niż na s zkicowana  powyżej, je dnak 

problem TSP pozos taje bardzo trudny. W takich przypadkach częs to s ą s tosowane metody, które s łużą do 
s zybkie go znajdowania rozwią zań przybliżonych,  nie koniecznie  najkróts zych. Jedna z  takich metod,  zwa -

Rysunek 7. 
Przykładowa tras a przejazdu prezydenta po s tolicach woje wództw

background image

< 10 > 

Informatyka + 

na metodą najbliżs zego s ą siada , polega na przeje żdżaniu w ka żdym kroku do mia s ta , które znajduje się naj-
bliżej mia sta , w którym s ię znajdujemy – jes t to typowe podejś cie zachłanne, gdyż na ka żdym kroku chcemy 
wykonywa ć możliwie na jleps zy ruch. W rozwią zaniu na sze go problemu tą metodą , pierws zym odwie dzonym 
mias tem powinna być Łódź, później Kielce, Kraków, Ka towice , … Nies tety, tra sa otrzymana metodą najbliżs ze -
go s ą siada nie jes t króts za niż tras a na szkicowana na rys. 7. 

W  tym  rozdziale  przeds tawimy  wybrane  za s tosowania  grafów  w  informa tyce.  Głównie  tymi  grafami  będą 
drze wa. Drzewo jes t grafem, który nie zawiera cyklu, czyli drogi zamkniętej, i je st s pójny, czyli jes t w „jednym 
kawałku”. Ze spójnoś ci wynika , że ka żde dwa wierzchołki w drze wie są połączone drogą , a z braku cyklu – że 
dla ka żdych dwóch wierzchołków is tnieje dokładnie jedna droga, która je łączy. Na ogół w zas tos owaniach 
informa tycznych drzew, drzewa mają wyróżniony wierzchołek, który na zywamy korzeniem. Na rysunku 8 s ą 
prze ds tawione przykładowe drze wa. 

Rysunek 8.
Przykładowe drze wa

W tym rozdziale przeds tawimy trzy pros te zas tos owania drzew. W punkcie 3.1.omówimy krótko reprezento-
wanie wyra żeń na drzewie. Nas tępnie wykorzys tamy drzewa do repre zentowania algorytmów (punkt 3.2) i na 
końcu (punkt 3.3) na s zkicujemy metodę tworzenia krótkich kodów. 

Na początku nauki matema tyki w s zkole pods tawowej s potkaliś cie się z drzewem jako s chematem obliczania  
wartoś ci wyra żenia . W takim drze wie, zwanym drzewem wyra żenia , argumenty wyra żenia (liczby lub zmien-
ne) znajdują się w wierzchołkach końcowych (zwanych wis zącymi a także liś ćmi), a dzia łania są  umies zczo-
ne w wierzchołkach pośrednich. Przykłady takich drze w są  poka zane na rys . 9. Wyróżniony wierzchołek drze -
wa na zywa się korzeniem. W teks tach informatycznych, drzewo jes t na ogół rys owane z korzeniem u góry, jak 
po prawej s tronie rysunku. Do elementów drzewa  częs to s tos uje s ię na zewnictwo wzięte z dendrologii – ko-
rzeń, liście.

wie rzchołki 
końcowe –  liś cie

wie rzchołki 
końcowe –  liś cie

korzeń

korzeń

6

+

+

( )

2

( )

2

/

x

y

a

b

13

13

5

3

4

*

*

wie rzchołki
pośrednie

Rysunek 9. 
Drzewa  wyrażeń: (6 + 3)*(5 – 3*4) i (x

2

 + y

2

)/ (a – b) 

> Znajdowanie najkrótszych dróg oraz najniższych i najkrótszych drzew  < 11 >

Wykonanie obliczeń za pis anych w pos taci drze wa wyra żenia polega na „zwinięciu” te go drze wa, począw-
s zy od liś ci, czyli przejś ciu od liś ci do korzenia, w którym jes t otrzymywa na wartoś ć wyra żenia . Stosujemy 
przy tym oczywis tą za s adę: aby móc wykonać dane działanie (umies zczone w wierzchołku pośrednim) musi-
my znać jego argumenty. A zatem, w wyra żeniu po lewej s tronie na rys . 9. nie można wykonać odejmowania, 
zanim nie będzie znana wartoś ć odjemnika w wierzchołku powyżej, czyli na jpierw nale ży wykonać mnożenie 
umies zczone w tym wierzchołku. Proponujemy prześ ledzenie kolejnoś ci wykonania działań podczas  oblicza -
nia wartości wyra żeń repre zentowanych przez drzewa na  rys . 9. 

Drze wa wyra żenia  s ą przydatne przy interpretacji i tworzeniu pos taci wyra żenia w tak zwanej odwrotnej nota -
cji pols kiej (ONP), w której zbę dne s ą nawias y. Na zwa tej notacji pochodzi od twórcy notacji polskiej, polskie -
go logika Jana Łuka siewicza (1878-1956). Ta notacja jes t s tos owana w wielu językach programowania , była 
wykorzys tana również w kalkulatorach He wlett-Packard i Sinclair. Pos tać ONP wyra żenia tworzy się s tosując 
rekurencyjnie na s tępującą za s adę: Zacznij w korzeniu i wypisz to, co jes t w wierzchołku dopiero po wypis a -
niu tego co jes t w lewym poddrze wie a później tego, co jes t w prawym poddrzewie. Dla przykładu, za s tosuj-
my tę za sadę do drzewa  po le wej s tronie na rys. 9. Przed wypis aniem znaku mnożenia musimy najpierw wypi-
s ać to, co jes t w le wym poddrzewie i w prawym poddrzewie. Przechodzimy więc do lewego poddrzewa i s to-
sujemy w nim tę samą  za sadę: aby wypis ać znak dodawania najpierw wypisujemy oba argumenty tego dzia -
ła nia, czyli dla lewego poddrze wa wyra żenia ma pos tać 6 13 +. Podobnie , dla prawego poddrzewa otrzymuje -
my 5 3 4 * – . A zatem ca łe wyra żenia ma na s tępującą pos tać ONP: 6 13 + 5 3 4 * – *. 

Drzewo algorytmu jes t jednym ze sposobów zapis ywania algorytmów, przypominającym schematy blokowe. 
Na rysunku 10 jes t przeds tawione drze wo algorytmu porządkowania trzech liczb a, b, c. 

Rysunek 10. 
Drze wo porządkowania trze ch liczb

Wierzchołki końcowe drzewa algorytmu zawierają ws zys tkie możliwe rozwią zania – w nas zym przykładzie 
s ą to wszys tkie możliwe uporządkowania trze ch elementów. Takich uporządkowa ń jes t 6, a wykonywanie al-
gorytmu zapisa nego w pos taci drzewa , rozpoczyna s ię w korzeniu te go drze wa. Dzieje s ię zatem nieco ina -
czej niż w drzewie wyra żenia . Zapis anie tego a lgorytmu w postaci drzewa  jes t przejrzys tym opis em wykony-
wanych operacji i ich kolejności. Ponadto drzewo algorytmu może służyć do kons truowania i analizowania al-
gorytmów. 

Drze wo na rysunku 10 może być łatwo rozszerzone do drze wa a lgorytmu, który służy do porządkowa-

nia czterech liczb a , b, c i d. Wystarczy w tym celu wstawić czwarty element d do uporządkowanych ciągów 
trzech pierws zych elementów – w tym celu należy wykonać dwa dodatkowe porównania zaczyna jąc od środ-
kowe go elementu. 

Drze wo  algorytmu  może s łużyć do  okre ślenia liczby  operacji  wykonywanych przez algorytm.  Zilus trujemy 
to na przykładzie drzewa prze ds tawionego na rysunku 10. Dla uzyskania konkretnego wyniku tego algoryt-
mu, który znajduje się w wierzchołku wis zącym tego drzewa , liczba wykonanych porównań równa s ię liczbie 
wierzchołków pośre dnich na drodze od korzenia  (licząc również korzeń) do te go wierzchołka – tę liczbę na -
zywamy długoś cią takiej drogi. Na przykład, jeśli dane trzy liczby a, b i c spełniają nierówności c ≤ a ≤ b lub 
c ≤ b ≤ a , to algorytm wykonuje 2 porównania , a w pozos tałych przypadkach – wykonuje 3 porównania . Naj-

background image

< 12 > 

Informatyka + 

większa długoś ć drogi z korzenia do wierzchołka końcowego w drzewie na zywa się wys okoś cią drzewa . Drze -
wo na rysunku 10 ma wysokość 3. Wysokość drzewa to najwięks za liczba opera cji wykonywanych w algoryt-
mie dla jakiegokolwiek układu danych. W algorytmice wielkoś ć ta na zywa się złożonością obliczeniową algo-
rytmu. Jak ilustruje to na sz przykład, je st to złożoność pe s ymist yczna lub złożonoś ć najgorszego przypad-
ku, gdyż w niektórych przypadkach algorytm może działać s zybciej. Dla danego problemu mamy tym lepszy 
(s zybs zy) algorytm, im mniejs zą wysokość ma jego drzewo.

Drze wo a lgorytmu może być wykorzys tane  do wyka zania , ile operacji mus i wykona ć ja kikolwiek algorytm 
rozwią zywa nia  dane go problemu, co może  być wykorzys ta ne przy dowodzeniu opt ymalnoś ci a lgorytmów, 
patrz [5]. 

Pojemnoś ć pamięci komputerów roś nie w je s zcze więks zym tempie niż s zybkoś ć proces orów. Możliwoś ć za -
pis ania  w pamię ci komputera ca łej ks ią żki spowodowa ła chęć zapis ania ca łych bibliote k. Możliwoś ć poka -
zania na ekra nie monitora dobre j ja koś ci obra zu rozwinę ła s ię do rozmiarów całe go filmu. Alterna tywą dla 
powięks zenia pamię ci jes t kompres ja danych, czyli minimalizowanie ich objętoś ci przez reprezentowanie 
w zwięzłej pos taci. Gwa łtowny rozwój metod i form komunikowania s ię nie byłby możliwy bez cią głego ulep-
s zania  metod kompres ji danych. Odnosi się to zarówno do tra dycyjnych form wymiany informa cji, takich ja k: 
faks , modem czy tele fonia  komórkowa , jak i do wymiany informacji za poś rednictwe m sie ci Internet, w t ym 
zwła s zcza do wymiany informa cji multime dialnych. Kompresja da nych jes t możliwa  dzięki wykorzys taniu 
pewnych włas noś ci danych, na przykład częs to powtarzające się fragmenty można  za s tę pować umownym 
s ymbolem lub im częś ciej jakiś fra gment wys tępuje tym mniejs za  (króts za) powinna być jego re pre zenta -
cja. W dals zej częś ci te go punktu zajmie my się je dynie kompresją teks tu, która polega  na odpowie dnim ko-
dowa niu znaków. 

Trudno uwierzyć, ale his toria kompre sji informacji ma s wój początek … w połowie XIX wieku. 24 maja 1844 
roku Samuel Mors e po ra z pierws zy posłużył się zbudowanym przez siebie tele grafem i przesłał na odległoś ć 
37 mil (z Kapitolu w Wa s zyngtonie do Baltimore) depes zę , w której zacytował Biblię „To, co uczynił Bóg” (ang. 
What Hath God Wrought!). Jego osiągnięciem było nie tylko zbudowanie telegrafu, ale równie ż opracowanie 
specjalnego alfabetu, zwane go alfabetem Morse’a , umożliwiającego kodowanie znaków w tekś cie za pomocą 
dwóch s ymboli – kropki i kreski, którym wtedy odpowiadały krótsze lub dłuższe impuls y elektryczne, a dzi-
siaj mogłyby to być cyfry 0 i 1. Mors e przy konstrukcji s wojego alfabetu przyją ł założenie, że im częś ciej znak 
wys tępuje w informacji, tym krótszy powinien mieć kod. Dla tego w jego alfabecie litera E ma  kod   (kropka), 
a litera T ma kod – (kreska), gdyż s ą to najczęś ciej wys tępujące litery w tekstach języka angielskie go. W ję zy-
ku pols kim byłyby to odpowie dnio litery A oraz I. Wadą alfabe tu Morse’a je st koniecznoś ć s tosowania znaku 
oddzielającego litery, gdyż kod danej litery może być początkową  częś cią  kodu innej litery. Na przykład zapis 

 może oznaczać dwie litery EE a także literę I, która ma taki kod. 

Zauwa żmy, że s tos ując kod ASCII ws zys tkie znaki s ą kodowane za pomocą jednakowej liczby bitów. 

Prze ds tawimy tera krótko kod Huffmana , który je st zbudowany na podobnych za sadach co alfabet Morse’a , 
ale nie ma wspomnianej wady tego alfabetu, czyli nie muszą  być s tos owane zna ki do rozdzielania kodów li-
ter teks tu. W kodzie Huffmana: 

 

znaki s ą zapis ywane również za pomocą dwóch znaków (cyfr 0 i 1); 

 

kod żadnego znaku nie jes t początkiem kodu żadnego innego znaku – nie trzeba więc s tosować znaków 
rozdzielających; 

 

śre dnia  długoś ć kodu znaku w tekście jes t możliwie najmniejs za . 

Kod Huffmana tworzy się za pomocą specjalnego drzewa, drze wa Huffmana , w którym powyżs ze wła sności 
są realizowane w na stę pujący sposób: 

 

na ga łę ziach drzewa są umieszczone cyfry 0 i 1; 

 

znaki, dla których jes t tworzony kod, znajdują się w wierzchołkach wis zących drzewa; 

 

wierzchołki wis zące ze zna kami o więks zej częs tości występowania w teks tach znajdują się wyżej niż 
wierzchołki ze znaki o mniejszych częs toś ciach. 

> Znajdowanie najkrótszych dróg oraz najniższych i najkrótszych drzew  < 13 >

Drze wo Hoffmana dla da nego zes tawu znaków o poda nych czę stotliwoś ciach jes t budowane sukces ywnie 
przez łączenie ze s obą na każdym e tapie dwóch poddrze w o najmniejs zych częs totliwoś ciach i zas tępowaniu 
ich poddrzewem o sumie ich częs totliwości. Szczegółowy opis algorytmu Huffmana można  znaleźć w pod-
ręczniku [2] i w ksią żce [6]. Na rys unku 11 przeds tawiamy drzewo Huffmana otrzymane tą me todą dla na s tę -
pujących znaków i ich częs totliwości (to s ą rzeczywiste częs totliwości wys tępowania tych liter w teks tach 
w ję zyku polskim): 

a  

8.71

b  

1.29

d  

3.45

k  

3.10

o  

7.90

r  

4.63

W pierwszym kroku tworzenia tego drze wa zgodnie z na s zkicowanym algorytmem, łączone s ą dwie najmniej-
s ze częs totliwoś ci odpowiada jące literom b oraz k i za stępowane są przez czę s totliwoś ć 1.29 + 3.10 = 4.39. 
Nas tępnie jes t łączona częs totliwoś ć 3.35 (litera d) z otrzymaną przed chwilą częs totliwością , itd. 

0

0

0

0

1

1

1

a

o

d

b

k

r

1

1

0

Rysunek 11. 
Drze wo Huffmana dla s ześ ciu liter

Na pods tawie drzewa z rysunku 11 otrzymujemy na s tępujące kody liter:  

a  

00

b  

1010

d  

100

k  

1011

o  

01

r  

11

Słowo ABRAKADABRA ma w otrzymanym kodzie pos tać 00101011001011001000010101100, złożoną z 29 
cyfr, a s tosując kod ASCII – pos tać tego słowa miałaby długość 88 znaków. Odpowiada to kompresji o wiel-
koś ci 60%. 

Algorytm  Huffmana  je st  wykorzys tywany  w  wielu  profe sjonalnych  metodach  kompre sji  teks tu,  obra zów 
i dźwięków, równie ż w połączeniu z innymi me todami. Redukcja wielkoś ci danych przy s tos owaniu tego al-
gorytmu wynosi około 50% (w przypadku obra zów i dźwięków kodowane s ą nie s ame znaki, ale różnice mię -
dzy kolejnymi znakami). 

W tej czę ści wykładu przeds ta wiamy algorytmy na grafach, które mają wiele za s tos owań pra ktycznych, s ą 
jednocze śnie ilus tracją typowych sposobów rozwią zywania problemów definiowanych na grafach. Szczegó-
łowe rozwa ża nia dotyczące prze ds tawionych tutaj algorytmów można znale źć w ksią żce [7]. 

background image

< 14 > 

Informatyka + 

W cza sie wykładu, działanie pre zentowanych algorytmów będzie ilus trowane za pomocą specjalne go progra-
mu edukacyjnego Algorytmy Grafowe, w którym można: 

 

budować i modyfikować grafy, 

 

zapoznać się z pods ta wowymi s posobami reprezentowa nia grafów w komputerze, 

 

śledzić przebieg działania pods tawowych algorytmów grafowych, w tym m.in. zwią zanych 
z przes zukiwaniem grafów, znajdowaniem najkrótszych dróg w grafach i znajdowaniem najkróts zego drzewa 
rozpinającego grafu; podczas  działania algorytmu, jego przebie g jes t zs ynchronizowany z demons tracją 
wykonywania programu w pseudo-ję zyku programowania , poka zywane s ą również zmieniające s ię s tany 
s truktur danych, wykorzys tywanych w algorytmach. 

Na rysunku 12 jest prze ds tawione okno programy Algorytmy Grafowe , w którym wida ć graf i jego kompute -
rowe reprezentacje. 

Rysunek 12. 
Okno w programie Algorytmy Grafowe z grafem dwuna s tościanu i je go komputerowymi repre zentacjami

W dals zej częś ci tego rozdziału, najpierw definiujemy grafy i omawia my ich komputerowe reprezentacje. Na-
s tę pnie przeds tawiamy dwie grupy problemów definiowa nych na grafach i demons trujemy dzia łanie wybra-
nych algorytmów ich rozwią zywania . 

Jak już pis aliśmy, ka żdy gra f składa się ze zbioru wierzchołków i zbioru połączeń. Wyróżniamy dwa rodzaje 
gra fów: nieskierowane i skierowane. 

Grafy nie skierowane na zywamy po pros tu grafami. Ws zys tkie połączenia  w nich s ą nieskierowane , a to 

oznacza, że mogą być przechodzone w obie s trony. Połączenia w grafach nieskierowanych na zywamy krawę -
dziami. Przykładowy gra f jes t poka zany w oknie programu na rys unku 12. 

Z kolei, grafy skierowane nazywamy digrafami. Ws zys tkie w nich połączenia mają za znaczony kierunek 

przechodzenia . Połączenia w digrafach na zywamy łukami. Przykładowy digraf jes t poka zany na rysunku 13. 

Grafy i digrafy można repre zentować w komputerze na wiele sposobów. Na począ tku przyjmijmy, że wierz-
chołki s ą ponumerowane kolejnymi liczbami 1, 2, 3, … W ka żdym ze sposobów reprezentowania digra fów 

> Znajdowanie najkrótszych dróg oraz najniższych i najkrótszych drzew  < 15 >

i grafów w komputerze jes t zapis ywane s ą sie dztwo wierzchołków,  czyli  dla ka żdego wierzchołka je st  po-
dane, z którymi innymi wierzchołkami jes t on połączony. W przypadku grafów s ymetrycznych, dla ka żdego 
wierzchołka podajemy numery wierzchołków, z którymi jes t on połączony, a dla digrafów – podajemy nume -
ry wierzchołków, do których prowadzi skierowane połączenie. 

Najpopularniejs ze s ą dwie reprezentacje: macierzowa i w pos taci lis t są siadów. W reprezentacji macierzowej, 
jeś li graf za wiera połączenie z wierzchołka j do wierzchołka k, to w macierzy s ą siedztwa na  przecięciu wier-
s za j z kolumną  k jes t 1, a w przeciwnym ra zie jes t 0. Z kolei w lis tach s ąs iedztwa, w liś cie o numerze j wys tę -
pują ws zys tkie wierzchołki, które są  s ą siednie do wierzchołka k. Na rysunkach 12 i 13 ilustrujemy te kompu-
terowe reprezentacje dla grafów przeds tawionych na tych rysunkach. Są siedztwo w grafach należy traktować 
jako relację s ymetryczną , natomias t w digrafach są sie dztwo jes t wska zywany przez zwrot łuków. 

Rysunek 13. 
Digraf i jego komputerowe repre zentacje

Drogą w grafie na zywamy ciąg wierzchołków, dla których graf zawiera połą czenia między kolejnymi wierz-
chołkami te go cią gu. Za uwa żmy na rysunkach 12 i 13, że połączenia mają przypisane im liczby – s ą to wagi 
połączeń, które mogą oznaczać na przykład rzeczywistą długoś ć połączenia . Długoś ć drogi definiujemy jako 
sumę długości połączeń, które tworzą tę drogę. Na przykład, droga (2, 3, 8, 13, 9, 4) w grafie na rysunku 12 ma 
długoś ć 9+5+8+1+9 = 32, a droga (1, 3, 4, 5, 2) w digrafie na rys unku 13 ma długoś ć 5+5+1+4 = 15.  

Is tnieje wiele różnych problemów, w których celem jes t znalezienie najkróts zej drogi. Jeden z takich 

problemów był przedmiotem nas zych rozwa żań w punkcie 2.3, gdzie zas tanawialiś my się, jak zna leźć tra sę 
dla komiwoja żera , czyli najkróts zy cykl przechodzący przez ka żdy wierzchołek w grafie dokładnie jeden ra z. 
Kla s yczne problemy najkrótszych dróg można podzielić na  nas tępujące grupy: 

1.  zna leźć najkróts zą drogę mię dzy wybraną parą wierzchołków w grafie; 
2.  znaleźć najkrótsze drogi z wybranego wierzchołka w grafie do wszystkich pozos tałych wierzchołków w grafie; 
3.  zna leźć najkróts ze drogi między ka żdą parą wierzchołków w grafie. 

W tych s formułowania ch problemów, „znaleźć najkróts zą drogę” oznacza znaleźć długoś ć najkrótszej drogi 
ora z cią g wierzchołków drogi o najkrótszej długości. 

Łatwo zauwa żyć, że rozwią zanie problemu typu 1 może być wykorzys tane w rozwiązaniu problemów typu 2 
i 3. Podobnie, rozwią zanie problemu typu 2 może być wykorzys tane do rozwią zania problemu typu 3. Na ogół, 
rozwią zywanie problemu typu 2 może być przerwane, gdy mamy już rozwiązanie problemu typu 1. Dlatego za -
trzymamy s ię jedynie nad problemem typu 2 i dodatkowo założymy, że ws zystkie wagi połączeń s ą nieujem-
ne (w ogólnoś ci nie muszą być). A zatem, rozwa żymy na s tępujący problem, przyjmując dodatkowo, że s zuka-
my najkróts zych dróg w obcią żonych digrafa ch. Je śli chcemy znaleźć najkróts ze drogi w obcią żonym grafie s y-
metrycznym, to ka żdą krawędź traktujemy jako parę łuków prze ciwnie skierowanych. 

background image

< 16 > 

Informatyka + 

Problem najkróts zych dróg z ustalonego wierzchołka w digrafie obcią żonym
Da ne:  

digraf G z łukami obcią żonymi nieujemnymi wagami; wybrany wierzchołek s. 

Wynik:   najkróts ze drogi w G z s do ws zys tkich pozos tałych wierzchołków w digrafie G. 

Do rozwią zania tego problemu posłużymy się algorytmem Dijks try. Nie zamie szczamy tutaj jednak s zczegó-
łowego opisu tego algorytmu, tylko opiszemy jego główną ideę, a nas tępnie w cza sie wykładu zilus trujemy 
dzia łanie tego algorytmu posługując s ię programem Algorytmy Grafowe , patrz rysunek 14. 

Algorytm Dijks try ma charakter me tody za chłannej. Startujemy z dane go wierzchołka s, zaliczamy go 

do rozwią zania i w pierws zym kroku obliczamy długoś ci dróg z s do ws zys tkich jego wierzchołów s ą siednich 
(te drogi składają s ię z pojedynczych łuków) a nas tępnie wybieramy wierzchołek s ąsie dni w, który jes t najbli-
żej s – wierzchołek w zalicza my do rozwią zania i dla ka żde go wierzchołka v, który nie należy jes zcze do roz-
wią za nia, s pra wdzamy, czy droga z s do v przez w nie jes t króts za od dotychczas owej drogi na jkróts zej z s 
do v. Jeśli tak jes t, to poprawia my długości dróg. Na s tępnie , ponownie wybieramy wierzchołek spośród tych, 
które nie należą jes zcze do rozwią zania , a który jes t najbliżs zy s i powtarzamy to postę powanie. Liczba ite -
racji w tej metodzie wynosi n – 1, bo tyle wierzchołków trzeba dołączyć do rozwią zania w kolejnych krokach. 

Polecamy  prze śledzić  dzia łania  algorytmu  Dijks try  w  programie  Algorytmy  Grafowe  na  wybranych 

przykładach digrafów i grafów. 

Rysunek 14. 
Demonstracja działania algorytmu Dijkstry w programie Algorytm Grafowe, zastosowana do digrafu z rysunku 13

Jak pamiętamy, drzewo jes t grafem, który je st s pójny i nie za wiera cykli, a graf jes t spójny, je śli ka żda para 
jego wierzchołków jes t połą czona drogą. Zakładamy tutaj że graf jes t s yme tryczny. Jeśli graf jes t spójny, to 
można znaleźć w nim podgraf, który jes t drzewem – takie drze wo w grafie na zywamy drzewem rozpinającym. 
Drzewo rozpinające w grafie spójnym można  znajdować na dwa spos oby. Drzewo o n wierzchołka ch ma do-
kładnie n – 1 krawędzi: 

1.  usuwać krawę dzie , które nie powodują rozpojenia grafu, tak długo jak długo graf ma więcej niż n – 1 krawę -

dzi, gdzie n jes t liczbą wierzchołków w grafie;

2.  wybierać krawę dzie w grafie, ale tylko takie , które nie powodują pows tania cyklu wśród wybranych krawę -

dzi; postępować tak długo, a ż wybranych zos tanie n – 1 kra wę dzi, gdzie n jes t liczba wierzchołków w grafie. 

> Znajdowanie najkrótszych dróg oraz najniższych i najkrótszych drzew  < 17 >

Rozwa żany przez nas problem ma na s tępującą pos tać: 

Problem najkróts zego drzew rozpinającego w grafie obcią żonym
Dane:  

graf G z krawędziami obcią żonymi wagami. 

Wynik:    najkróts ze drzewo rozpinające w grafie G. Za długość drzewa przyjmujemy sumę wag (długoś ci) jego 

kra wę dzi. 

Najbardziej znanym algorytmem rozwią zywania tego problemu jes t zachłanny algorytm Kruskala . Polega on 
tworzeniu drzewa rozpinającego metodą nr 2 przy za łożeniu, że krawędzie s ą rozpatrywane w kolejnoś ci od 
najlżejszych (najkróts zych) Opis zemy ten algorytm w pseudo-języku programowania . Zakładamy, ze rozwa -
żany graf jes t spójny. 

algorytm Kruskala;

begin

   T:=pusty;  {T – zbiór kraw

ę dzi tworzonego drzewa}

   E – zbiór kraw

ę dzi grafu G;

   while T ma mniej elementów ni

ż  n – 1 do begin 

      wybierz najkrótsz

ą  krawę dź  e w zbiorze E;

      usu

ń e z E;

      if e nie tworzy cyklu z kraw

ę dziami w T then

         do

ł ą cz krawę dź  e do zbioru T 

   end

end

Na rysunku 15 jes t przeds tawione okno z demons tracją algorytmu Kruskala na los owym grafie.

Ciekawą modyfikacją algorytmu Krus kala je st  algorytm  Prima-Dijks try,  który  jes t również  algorytmem  za-
chłannym, ale podobnie jak algorytm Dijks try dla znajdowania najkróts zych dróg, może rozpocząć budowa -
nie najkróts zego drzewa rozpinającego zaczynając w dowolnym wierzchołku grafu, jako korzeniu. Proponuje -
my prześle dzić dzia łanie tego algorytmu w programie Algorytmy Grafowe . 

Rysunek 15.
Demons tracja działania  algorytmu Kruskala w programie Algorytm Gra fowe

background image

< 18 > 

Informatyka + 

1.  Cormen T.H., Leisers on C.E., Rive st R.L., Wprowadzenie do algorytmów, WNT, Wars zawa 1997
2.  Gurbiel E., Hard-Olejniczak G., Kołczyk E., Krupicka H., Sysło M.M., Informatyka , Część 1 i 2, Podręcznik dla  

LO, WSiP, Warsza wa 2002-2003 

3.  Harel D., Algorytmika. Rzecz o istocie informatyki, WNT, Wars zawa  1992 
4.  Knuth D.E., Sztuka programowa nia, Tomy 1 – 3, WNT, Wars zawa 2003 
5.  Sys ło M.M., Algorytmy, WSiP, Wa rszawa 1997 
6.  Sys ło M.M., Piramidy, szys zki i inne konstrukcje algorytmiczne, WSiP, Wars zawa 1998. Kolejne rozdziały tej 

ks ią żki s ą zamies zczone na stronie: http:// www.wsipnet.pl/ kluby/ informatyka _eks tra .php?k= 69

7.  Sys ło M.M., Deo N., Kowalik J.S., Algorytmy optymalizacji dyskretnej z programami w języku Pascal, WN PWN, 

Wars zawa 1997

8.  Wilson R.J., Wprowadzenie do teorii grafów, WN PWN, Wars zawa 1998

Notatki 

< 19 >

background image

W projekcie 

, poza wykładami i warsztatami,

przewidziano następujące działania:

 

24-godzinne kursy dla uczniów w ramach modułów tematycznych

 

24-godzinne kursy metodyczne dla nauczycieli, przygotowujące 

do pracy z uczniem zdolnym

 

nagrania 60 wykładów informatycznych, prowadzonych 

przez wybitnych specjalistów i nauczycieli akademickich

 

konkurs y dla uczniów, trzy w ciągu roku

 

udział uczniów w pracach kół naukowych

 

udział uczniów w konferencjach naukowych

 

obozy wypoczynkowo-naukowe.

Szczegółowe informacje znajdują się na stronie projektu