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].