PETERSEN - odločanje na podlagi teorije grafov

Transcription

PETERSEN - odločanje na podlagi teorije grafov
Poglavje 10
PETERSEN - odloˇcanje na podlagi
teorije grafov
Teorija grafov
Minimalno vpeto drevo
Primer: iskanje najkrajših poti z izbranimi algoritmi
210
PETERSEN - odloˇcanje na podlagi teorije grafov
10.1 Teoretiˇcno ozadje
10.1.1
Teorija grafov
Kadar govorimo o teoriji grafov, govorimo o veji matematike in raˇcunalništva,
ki raziskuje lastnosti grafov. Zaˇcetke razvoja beležimo vse od druge polovice 19.
stoletja. Razvila se je iz potrebe po reševanju konkretnih primerov v znanosti
in tehnologiji. Graf definiramo kot množico objektov in reˇci, imenovane toˇcke
(vozlišˇca, vozil. . . ), ki so povezane s povezavami (robovi, veje. . . ). S teorijo
grafov rešujemo številne primere v praksi. Grafe lahko razširimo z vpeljavo
ˇ npr. graf predstavlja
uteži, ko so pozitivna števila, prirejena vsaki povezavi. Ce
ˇ grafu dodamo
mrežo cest, lahko uteži predstavljajo dolžino vsake ceste. Ce
utežene povezave, govorimo o mreži. Grafe uporabljamo predvsem pri metodi
mrežnega planiranja.
Reˇcemo lahko, da graf G sestavljata neprazna množica elementov, ki jih
imenujemo toˇcke ali vozlišˇca grafa in seznam (neurejenih) parov teh elementov,
ki jih imenujemo povezave grafa. Grafe si enostavno predstavljamo z njihovimi
diagrami. Toˇcke (vozlišˇca) ponazorimo s krogci, sosednji toˇcki pa povežemo s
cˇ rto.
Minimalno vpeto drevo
Minimalno vpeto drevo je je pomembno za reševanje problemov naˇcrtovanja
optimalnih (najpogosteje najcenejših) prometnih in drugih omrežij. Prometni
problem lahko rešujemo s pomoˇcjo neusmerjenega grafa. Vozlišˇca v grafu
predstavljajo mesta, ki jih želimo povezati, povezave pa so oznaˇcene z
razdaljami, cˇ asom oz. cenami povezave med dvema krajema. Ker za povezavo
vseh mest zadošˇca, da v grafu obstaja ena pot med vsakim krajem, problem
definiramo kot iskanje minimalnega (najcenejšega) podgrafa, ki izpolnjuje
ta pogoj. Takšen podgraf imenujemo minimalno vpeto drevo. Iskanje
minimalnega vpetega drevesa v povezanem neusmerjenem grafu izvedemo s
pomoˇcjo dveh znanih algoritmov - Kruskalov in Primov.
Kruskalov algoritem
Kruskalov algoritem je model, ki se uporablja za iskanje minimalnega vpetega
drevesa v omrežju. Drevo zaˇcnemo graditi iz najkrajše povezave, ki je že sama
zase vpeto drevo in nato naprej išˇcemo najkrajše povezave, dokler nimamo
celega vpetega drevesa (pri tem smo pozorni, da ne pride do cikla). V izbranem
naˇcinu gradimo drevo tako, da na vsakem koraku v rešitev dodamo povezavo z
minimalno vrednostjo, ki ima najveˇc eno izmed toˇck, ki so v enem delu rešitve. V
10.2 O programskem orodju
211
primeru, ko je prva toˇcka povezave v enem delu rešitve in druga toˇcka povezave
v drugem delu rešitve, ta dva dela rešitve združimo.
Primov algoritem
Tudi Primov algoritem se uporablja za iskanje minimalnega vpetega drevesa
v omrežju. Drevo zaˇcnemo graditi iz poljubnega vozlišˇca, ki je že samo zase
vpeto drevo in nato dodajamo najkrajše povezave, dokler ne dobimo celega
vpetega drevesa. V grafu poišˇcemo povezave, s katerimi povežemo vse toˇcke, ki
imajo najmanjšo vsoto povezav. Postopek raˇcunanja poteka tako, da v celotnem
grafu izberemo najkrajšo povezavo med vozlišˇci v doslej zgrajenemu drevesu in
vozlišˇci, ki še niso del drevesa in z njo ne naredimo cikla, kar je osnoven korak.
ˇ sta dve povezavi z enakimi vrednostmi, izberemo tisto, ki ne naredi cikla.
Ce
ˇ nobena povezava ne naredi cikla, izberemo eno izmed njiju. To povezavo
Ce
dodamo in postopek ponavljamo, dokler obstajajo prosta vozlišˇca.
10.2 O programskem orodju
Petersen programsko orodje je nastalo pod okriljem avtorja Chrisa Mawata.
Izdelujemo, urejamo in manipuliramo enostavne grafe ter preuˇcujemo njihove
lastnosti. Prikazujemo podatke o grafu (število toˇck in njihove stopnje), matriko
sosednosti in število sestavnih delov; preverimo, cˇ e je graf dvostranski, cˇ e sta
dva grafa izomorfna ali cˇ e je graf podgraf drugega. Petersen dokazuje Euler in
Hamilton vezja, algoritme za iskanje minimalnih vpetih dreves ipd.
Pri pisanju programskega orodja je avtor poskušal rešiti cˇ im veˇc
izobraževalnih in uˇcnih problemov. Eden izmed razlogov nastanka je prikaz
velikih in zapletenih grafov. Za pripravo takšnih grafov je potreben bistveno
daljši cˇ as, saj je že samo pridobivanje informacij iz velikih grafov muˇcno in
dolgotrajno. Algoritmi v programu niso novi. Edina razlika med Petersen
programskim orodjem ter poslovnimi in raziskovalnimi aplikacijami je v tem, da
je njegov glavni cilj dobiti rezultate v najkrajšem možnem cˇ asu. V izobraževalnih
ustanovah pa je primarni cilj, da študent spozna in vidi grafiˇcen prikaz nekega
problema.
Prenos in namestitev
Programsko orodje Petersen je dostopno na spletnem naslovu Mathcove [33].
Deluje preko spletne aplikacije Java. V kolikor Jave nimamo že predhodno
namešˇcene, na spletni strani (Getting Java Web Start) izberemo možnost go to
Java [22] (glej Sliko 10.1).
212
PETERSEN - odloˇcanje na podlagi teorije grafov
Slika 10.1: Prenos Jave
Brezplaˇcno Petersen programsko orodje prenesemo tako, da v razdelku
Getting Petersen, iz spletne strani Mathcove [33] (glej Sliko 10.2), v 2. poglavju
izberemo možnost download petersen-3.2.1.jar (glej Sliko 10.2).
Programsko okno
Pred priˇcetkom uporabe programskega orodja se informiramo o funkcijah in
orodjih, ki so na voljo. Ob zagonu programskega orodja se v zaˇcetnem oknu
pojavi menijska vrstica, katere funkcije razložimo v nadaljevanju (glej Sliko
10.3).
Menijska vrstica Graph omogoˇca številne možnosti urejanja in oblikovanja
grafov. V primeru, ko izberemo možnost Named Graph in v nadaljevanju Null
Graph se prikaže možnost doloˇcitve toˇck (How many vertices?). V okence vpišemo
število toˇck, ki bodo vkljuˇcene v graf (glej Sliko 10.4).
V razdelku menijske vrstice Graph - Named Graph v Complete izbiramo med
tremi razdelki. Izberemo možnost izrisa grafa z doloˇcitvijo števila povezav, ki
bodo povezane z že narisanimi toˇckami (glej Sliko 10.5).
Ob izbiri razdelka Complete Bipartite Graph zapišemo število toˇck na levi in
desni strani (glej Sliko 10.6).
V razdelku Complete Tripartite Graph izbiramo in zapišemo 3 vrste števil:
število toˇck v prvi skupini, število toˇck v drugi skupini in število toˇck v tretji
skupini (glej Sliko 10.7).
Razdelek Circuit Graph izriše graf, ki je povezan v cikel. Izberemo zgolj
možnost števila toˇck, za katere želimo, da bodo vsebovane v doloˇcenem
10.2 O programskem orodju
Slika 10.2: Prenos Petersen-ovega programskega orodja
Slika 10.3: Menijska vrstica
213
214
PETERSEN - odloˇcanje na podlagi teorije grafov
Slika 10.4: Doloˇcitev števila toˇck – Null Graph
Slika 10.5: Doloˇcitev števila toˇck – Complete
Slika 10.6: Complete – Complete Bipartite Graph
10.2 O programskem orodju
215
Slika 10.7: Complete-Complete Tripartite Graph
Slika 10.8: Circuit Graph
cikliˇcnem grafu (glej Sliko 10.8).
Ob izbiri razdelka Wheel se na grafu (npr. 4 povezane toˇcke) izriše doloˇceno
število toˇck (npr. 5 toˇck). Toˇcke se izrišejo na naˇcin, da je ena toˇcka povezana z
vsemi ostalimi na grafu (glej Sliko 10.9).
Izbiramo lahko med posameznimi oblikami grafov (Windmills). Ti se lahko
izrišejo v obliki metuljˇcka (Butterfly) ipd. (glej Sliko 10.10).
Full n-ary Tree prikazuje možnost izrisa razcepljenega grafa. Izberemo
možnosti razcepov s po 2 toˇckama (glej Sliko 10.11).
Izbiramo lahko tudi med izrisom razliˇcnih vrst grafov, kot so: n-Cube, Star
(graf v obliki zvezde), Bull, Herschel in Petersen graf (glej Sliko 10.12).
Podana je še možnost izrisa (Platonic Graph) v obliki tetraedra, oktaedra ipd.
(glej Sliko 10.13).
V menijski vrstici Graph so na voljo tudi druge možnosti: vnos podatkov za
vhodno matriko sosednosti (Input Adjancency Matrix) in LCF zapis (Input LCF
216
PETERSEN - odloˇcanje na podlagi teorije grafov
Slika 10.9: Wheel
Slika 10.10: Windmills
10.2 O programskem orodju
217
Slika 10.11: Full n-ary Tree
Notation). V programu lahko odpremo že shranjen dokument na disku (graf
- Read Graph From Disk, matrika sosednosti – Read Adjacency Matrix From Disk
ipd.). V danem razdelku izberemo tudi možnost tiskanja grafa (Print) in izhoda
iz programskega orodja (Exit Program) (glej Sliko 10.14).
Na koncu menijske vrstice se nahaja razdelek Pomoˇc oz. Help (Slika 10.15). V
razdelku About je naslov spletne strani, kjer so na voljo informacije za uporabo
programskega orodja.
Na spletni strani najdemo še informacije iz posameznega podroˇcja (npr. klik
na dano spletno stran: Mathcove [33], prikaže meni s številnimi podatki).
Pri poglobljenem prouˇcevanju doloˇcenega podroˇcja je smiselno prebrati
besedilo, zapisano pod posamezno lekcijo. Na koncu vsake lekcije je povezava,
ki direktno preusmeri na podroˇcje, ki nas zanima. Na Sliki 10.16 je prikazana
teorija o minimalno vpetem drevesu.
S klikom na povezavo (vijoliˇcaste barve) se prikaže okno programskega
orodja (glej Sliko 10.17).
Izriše se prazno modro okno, kjer imamo na voljo povsem lastno izbiro
dodajanja ali brisanja povezav in linij (glej Sliko 10.18).
218
PETERSEN - odloˇcanje na podlagi teorije grafov
Slika 10.12: Razliˇcne vrste grafov – 1. del
10.2 O programskem orodju
Slika 10.13: Razliˇcne vrste grafov – 2. del
219
220
PETERSEN - odloˇcanje na podlagi teorije grafov
Slika 10.14: Menijska vrstica in razdelek Graph
Slika 10.15: Dodatna pomoˇc pri uporabi programa
10.2 O programskem orodju
Slika 10.16: Dodatna literatura na temo minimalnega vpetega drevesa
Slika 10.17: Klik na direktno povezavo
221
222
PETERSEN - odloˇcanje na podlagi teorije grafov
Slika 10.18: Posamezna programska okna
Problem
Z danim programskim orodjem v nadaljevanju prikažemo problem, opažen
v resniˇcni situaciji. V namišljenem podjetju OpenStorage moramo poskrbeti
za transport komponent, namenjenih za izdelavo avtomobilov znamke X.
Komponente (natanˇcneje platišˇca) se v podjetje dostavljajo s cestnim
transportom (prevoz s tovornjaki), pri cˇ emer so mnogokrat izpostavljene
oviram na poti, zato je potrebno izbrati pot, kjer ovire obidemo z minimalni
stroški.
V ta namen s Petersen programskim orodjem prikažemo problem dostave
platišˇc od dobavitelja do podjetja v Bohinju. Izraˇcunamo najkrajšo pot po kateri
dobavitelj pripelje platišˇca na dostavno mesto, preizkusimo pa še nekaj izmed
drugih možnosti, ki jih programsko orodje omogoˇca.
10.3 Uporaba
V menijski vrstici Graph izberemo razdelek Write Graph To Disk, kjer narisan graf
shranimo na poljubno mesto (glej Sliko 10.19).
Ob ponovnem odpiranju shranjenega dokumenta odpremo Petersen
10.3 Uporaba
223
Slika 10.19: Shranjevanje datoteke
programsko orodje v Javi in znotraj njega izberemo možnost (Read Graph
From Disk). Za prikaz problema izbranim toˇckam doloˇcimo razdalje (uteži na
povezavah). Doloˇcimo 5 toˇck, ki jih med sabo povežemo. Risanje grafa priˇcnemo
postopoma, tako da najprej zapišemo in povežemo 5 toˇck. Te narišemo tako, da
v razdelku Named Graph – Null Graph izberemo možnost 5 toˇck. Nato jih med
sabo, z ukazom v menijski vrstici Complete razdelek Complete Graph povežemo
(ponovno izberemo možnost 5) (glej Sliko 10.20).
Razdelek Mouse omogoˇca, da z miško spreminjamo toˇcke in povezave, jih
dodajamo ali brišemo (Move Vertex, Add/Delete Vertex, Merge Vertices). Podana je
možnost premikanja grafa (Mode Graph), prav tako pa lahko grafom dodajamo
doloˇcene uteži. Kadar želimo uveljaviti spremembe na grafu, enostavno
kliknemo na želeno možnost, npr. dodajanje uteži (Weighted Edge) (glej Sliko
10.21).
Najprej dodamo utež med toˇckama 4 in 5. Z miško se postavimo na toˇcko
4 in se premikamo do toˇcke 5. Program nas vpraša po vrednosti uteži, ki jo
vpišemo v prazno okence. V danem primeru toˇcki 4 in 5 pomenita vozlišˇce
med dvema krajema z razdaljo 4 kilometrov. Enak postopek izvedemo še za
doloˇcitev ostalih povezav (glej Sliko 10.22).
V primeru omejitev izberemo drugo vrsto uteži - Weighted Directed Edge.
224
PETERSEN - odloˇcanje na podlagi teorije grafov
Slika 10.20: Izris grafa s petimi toˇckami in povezavami
Slika 10.21: Dodajanje uteži
10.3 Uporaba
225
Slika 10.22: Zapis uteži
Postopek je popolnoma enak, kakor je predhodno zapisano, le da so povezave
ˇ želimo, da bo povezava obojestranska se z
zapisane od ene do druge toˇcke. Ce
miško postavimo iz ene na drugo toˇcko (npr. 3 →4) in nato še v obratni smeri
(npr. 4 →3). V izbranem problemu uporabimo obojestranske povezave.
Slika 10.23 prikazuje vrednosti dvosmernih povezav. Da ne bi prišlo do
zapletov, vozlišˇca oznaˇcimo s cˇ rkami, saj so cˇ rke bolje razvidne.
Ob zapisu povezav in razdalj med posameznimi toˇckami izbiramo med
možnostmi, ki jih ponuja programsko orodje. Razdelek Change title omogoˇca
spreminjanje naslova dokumenta.
Razdelek Background Color omogoˇca
spreminjanje ozadja grafa - na voljo imamo najrazliˇcnejše barvne sheme (Color
Sheme) in linije (Edges) (glej Sliko 10.24).
V razdelku Labels doloˇcimo oznake vozlišˇc: brez oznak (No labels), s
številkami (Numbers), s cˇ rkami (Letters) ali z že uporabljenimi oznakami (User’s
Labels). Menijska vrstica Graph Size ponuja možnost prikaza grafa (glej Sliko
10.25).
Razdelek Flip graph ponuja možnost horizontalnega, vertikalnega in
diagonalnega premika. V razdelku Picture se nahaja razdelek Rotate Graph,
ki omogoˇca poljubno rotacijo grafa (glej Sliko 10.26).
V menijski vrstici se nahaja še meni Properties. Razdelek Statistics prikazuje
226
PETERSEN - odloˇcanje na podlagi teorije grafov
Slika 10.23: Vrednosti povezav
Slika 10.24: Možnosti grafa – 1. del
10.3 Uporaba
227
Slika 10.25: Možnosti grafa – 2. del
Slika 10.26: Možnosti grafa – 3. del
228
PETERSEN - odloˇcanje na podlagi teorije grafov
Slika 10.27: Properties- Statistics
statistiˇcne podatke, ki se nanašajo na dani transportni problem (glej Sliko 10.27).
Sledi prikaz matrike sosednosti glede na razdalje. S klikom na dano možnost
(Adjacency Matrix) se izriše tabela, prikazana na Sliki 10.28.
Slika 10.29 prikazuje izpis matrike sosednosti glede na povezave (Adjacency
List).
Z danim grafom ustvarjamo in izpišemo rezultate, glede na številne
možnosti, ki jih ponuja programsko orodje. Ena izmed njih je izpis kromatiˇcnega
števila (Chromatic Number) (glej Sliko 10.30).
Seveda programsko orodje ponuja še številne druge možnosti, izhajajoˇce iz
teorije grafov, npr.: Hamiltonov cikel, Eulerjev graf. Hamiltonova pot je po
teoriji grafov pot v neusmerjenem grafu, ki gre skozi vsako toˇcko na grafu
ˇ sta zaˇcetna in konˇcna toˇcka poti enaki, jo imenujemo
natanko enkrat. Ce
Hamiltonov cikel. Ime je dobila po irskem matematiku William Rowan
Hamilton. V danem primeru se le ta ne izriše saj je graf usmerjen. Teorija
Eulerjevega grafa temelji na dejstvu, da gremo po vsaki toˇcki natanko enkrat
in zakljuˇcimo na isti toˇcki. Obhod je torej Eulerjev, cˇ e vsebuje vsako povezavo
grafa natanko enkrat (in se zakljuˇci v zaˇcetni toˇcki).
10.3 Uporaba
229
Slika 10.28: Matrika sosednosti glede na vrednosti
Slika 10.29: Matrika sosednosti glede na povezave
230
PETERSEN - odloˇcanje na podlagi teorije grafov
Slika 10.30: Kromatiˇcno število
10.3 Uporaba
231
Slika 10.31: Minimalno vpeto drevo
Iskanje najkrajše poti
V nadaljevanju se osredotoˇcimo na problem iskanja najkrajše poti. V praksi
poznamo dva algoritma, ki jih podrobneje opišemo v samem uvodu. Problem
voznika, ki v podjetje dostavlja platišˇca je lahko povsem preprost. Prevoz opravi
s tovorim vozilom, pri cˇ emer upošteva razdalje med lokacijami.
V menijski vrstici Properties izberemo razdelek Spanning Trees, v nadaljevanju
pa Minimal Spanning Trees. Odloˇcimo se med dvema možnostima - reševanje s
Kruskalovim ali Primovim algoritmom (glej Sliko 10.31).
Na Sliki 10.32 prikazujemo izraˇcun minimalnega vpetega drevesa s Kruskalovim algoritmom. Programsko orodje glede na izbrane lokaciije prikaže, da
je minimalno vpeto drevo oz. minimalno število km, ki jih voznik tovornjaka
opravi 24. Minimalno vpeto drevo lahko poišˇcemo tudi s Primovim algoritmom,
ki v danem primeru izriše enako pot. Obiˇcajno poti nista enaki. V danem
primeru imamo na voljo manjše število povezav, kar pomeni, da je možnosti
drugih poti bistveno manjša.
Druge možnosti programa
Menijska vrstica vsebuje še meni razliˇcnih postavitev programa (Layout), kar je
prikazano na Sliki 10.33.
ˇ imamo veˇc
Menijska vrstica Relations prikaže razmerja med grafi. Ce
grafov (npr.
2), lahko ta med sabo primerjamo.
Pogledamo ali sta
232
PETERSEN - odloˇcanje na podlagi teorije grafov
Slika 10.32: Minimalno vpeto drevo – Kruskalov algoritem
10.3 Uporaba
233
Slika 10.33: Postavitev grafa
234
PETERSEN - odloˇcanje na podlagi teorije grafov
Slika 10.34: Graf z omejitvami
izomorfna (Isomorphism)) in ugotovimo ali sta subgrafa (Subgraph). Menijska
vrstica Operation omogoˇca možnost prikaza komplementa narisanega grafa
(Complement)), linijskega grafa med dvema toˇckama (Line Graph), prizme (Prism))
ipd.
Menijska vrstica Find z razdelkom Search omogoˇca pregled grafa v globino
in širino. Pomen iskanja toˇck na takšen naˇcin bo zagotovo znan znanstveniku,
ki se podrobneje ukvarja s teorijo grafov. Pregled grafa v širino (Breadth First)
je algoritem, ki zaˇcne v izbrani toˇcki, katero pregleda. Vse ”sosede” da v FIFO
podatkovno strukturo in si zapomni h komu spada posamezna toˇcka. Nato
vzame prvega iz FIFO strukture in ponovi postopek. Postopek se konˇca, ko je
FIFO struktura prazna. Pregled grafa v globino (Depth First) je algoritem, ki
zaˇcne v izbrani toˇcki in jo pregleda. Prav tako da vse sosede v LIFO podatkovno
strukturo. Zapomni si h komu spada posamezna toˇcka. Vzame prvega iz LIFO
strukture in ponovi postopek. Konˇca, ko je LIFO struktura prazna. Obstaja še
možnost iskanja najkrajše poti na podlagi Dijkstrovega algoritma (Shortest Path
→ Dijkstra). V danem algoritmu išˇcemo najkrajšo pot od V1 do vseh ostalih toˇck.
ˇ bi imeli postavljen model z
V izbranem primeru ni razlik v doloˇcitvi poti. Ce
omejitvami, bi lahko le te tudi upoštevali (glej Sliko 10.34).
10.3 Uporaba
235
Povzetek
Petersen programsko orodje je uˇcinkovito, praktiˇcno, enostavno in brezplaˇcno
s pomoˇcjo katerega izdelujemo, urejamo in manipuliramo z enostavni grafi
in preuˇcujemo njihove lastnosti. Njegovo uporabo priporoˇcamo vsem, ki se
ukvarjajo z danim podroˇcjem. Z njegovo pomoˇcjo na enostaven in hiter naˇcin
preverimo rezultate, ki smo jih pridobili z analitiˇcnim izraˇcunom.
Prikažemo podatke o grafu, npr. število toˇck in njihove stopnje, matriko
sosednosti, število sestavnih delov; preverimo, cˇ e je graf dvostranski, ali sta
dva grafa izomorfna, cˇ e je graf podgraf drugega, poišˇcemo najkrajše poti
ipd. Program omogoˇca pridobitev risbe grafov, do katerih je drugaˇce skoraj
nemogoˇce priti, uporaba animacije pa omogoˇca enostaven prikaz nekaterih
pojmov.
Z izbranim programskim orodjem na podlagi teorije grafov prikažemo izraˇcun
optimalne transportne poti iz lokacije A do lokacije E in nekaj drugih možnosti,
ki jih ponuja programsko orodje.
Pri opisu programskega orodja Petersen smo uporabili še dodatne vire in
literaturo: [92].