Conferinţa Naţională de Învăţământ Virtual, ediţia a IV-a, 2006 133 Graph Magics Dumitru Ciubatîi Universitatea din Bucureşti, workusmd@yahoo.com 1. Introducere Graph Magics este un program destinat construcţiei şi procesării grafurilor. Mulţimea de instrumente şi funcţionalităţi ce oferă posibilitatea modelării simple şi eficiente a grafurilor, generatorul de grafuri şi 17 algoritmi ce pot fi aplicaţi asupra lor determină ca acest program să fie unic în felul său. Figura 1. Graph Magics Notă: programul poate fi descărcat de pe http://www.graph-magics.com. 2. Caracteristicile de bază Graph Magics are o interfaţă grafică confortabilă şi simplă de utilizat, oferind majoritatea facilităţilor importante ce pot fi găsite în alte editoare bine cunoscute: modelarea grafică a nodurilor şi muchiilor, cut/copy/paste, undo/redo, zoom, posibilitatea de a tipări reprezentarea grafului, şi altele. Printre utilităţile importante ale programului se enumeră: 133
134 Facultatea de Matematică şi Informatică, Bucureşti 3 vizualizări diferite ale grafului. Altfel spus, toate trei conţin acelaşi graf, dar în fiecare dintre ele el poate fi aranjat într-un mod diferit. 5 moduri diferite de reprezentare a nodurilor: dreptunghi, pătrat, cerc, elipsă şi romb. Posibilitatea de a aranja automatic nodurile grafului în cerc, arbore, grilă şi graf bipartit. Importarea şi exportarea structurii grafului în alte formate decât cele utilizate de Graph Magics: matrice de adiacenţă, listă de vecini, listă de muchii. Pe lângă reprezentarea grafică a grafului, sunt oferite şi tabele cu valorile costurilor şi capacităţilor muchiilor: Figura 2a. Tabelul costurilor muchiilor Figura 2b. Reprezentarea grafică a grafului împreună cu tabelul costurilor muchiilor Un loc aparte îl ocupă generatorul de grafuri şi cei 17 algoritmi, prezentarea lor urmând mai departe. 2.1. Limitările grafurilor Un graf poate conţine maxim 1000 noduri. Valorile costurilor muchiilor pot fi cuprinse între 1 şi 2147483647 inclusiv. Valorile capacităţilor muchiilor pot fi cuprinse între 0 şi 2147483647 inclusiv. 3. Generatorul de grafuri Cu ajutorul generatorului de grafuri este posibilă crearea simplă şi eficientă a diferitor tipuri de grafuri. Pentru generarea grafului sunt oferiţi următorii parametri: Numărul de noduri: o un număr ales o un număr aleator dintr-un interval ales Numărul de muchii: o un număr ales o un număr aleator dintr-un interval ales 134
Conferinţa Naţională de Învăţământ Virtual, ediţia a IV-a, 2006 135 Costurile muchiilor: o un număr ales o un număr aleator dintr-un interval ales Tipul grafului: o general o bipartit o arbore (cu posibilitatea de a alege numărul maxim de nivele) o arbore binar Opţiunea de a alege dacă muchiile vor fi direcţionate sau nu Opţiunea de a alege dacă graful va fi numaidecât conex sau nu. Figura 3. Generatorul de grafuri Figura 4. Un arbore generat cu 45 noduri şi 5 nivele NOTĂ: orice tip de graf se generează practic instantaneu chiar şi pentru 1000 noduri şi zeci de miii de muchii. 4. Algoritmii Graph Magics oferă 17 algoritmi diferiţi ce pot fi aplicaţi asupra grafurilor construite. Acest fapt face ca programul sa fie foarte util în analiza şi rezolvarea a unui număr mare de probleme. 135
136 Facultatea de Matematică şi Informatică, Bucureşti Algoritmii oferiţi: Drumul minim între 2 noduri (puncte). Figura 5a. Graf ce reprezintă un labirint Figura 5b. Drumul minim găsit între punctul stânga-sus şi punctul dreapta-jos ale grafului Toate drumurile minime ce încep într-un nod selectat. Arborele parţial de cost minim. Componenta conexă ce conţine un nod selectat. Conexitatea grafului (subgrafului). Cicluri şi lanţuri Euleriene. Problema poştaşului chinez (pentru orice tip de graf). Cicluri Hamiltoniene. Lanţuri Hamiltoniene. Fluxul maxim. Fluxul maxim de cost minim. Tăietura minimă. Mulţimea maximă de noduri independente. Clica maximă. Colorarea optimă a grafului. Mediana grafului. Centrul grafului. Figura 6. Fluxul maxim al unui graf 136
Conferinţa Naţională de Învăţământ Virtual, ediţia a IV-a, 2006 137 Figura 7. Tăietura minimă a unui graf Toţi aceşti algoritmi găsesc soluţiile optime (i.e. nici unul dintre ei nu este euristic) şi pot fi aplicaţi atât asupra grafului întreg, cât şi asupra unei submulţimi de noduri. Drumul minim, arborele parţial de cost minim, componenta conexă ce conţine un nod ales, conexitatea grafului şi lanţurile/ciclurile euleriene sunt găsite instantaneu. Fluxul maxim, fluxul maxim de cost minim, tăietura minimă, mediana grafului şi centrul grafului sunt găsite instantaneu în majoritate cazurilor şi au nevoie de câteva secunde pentru grafurile mari. Algoritmii pentru găsirea colorării optime a grafului, a ciclurilor/lanţurilor hamiltoniene, a mulţimii maxime de noduri independente şi a clicăi maxime, care sunt probleme NP-Complete, lucrează mai rapid decât alţi algoritmi cunoscuţi. Spre exemplu, pentru grafuri ce conţin 50-100 noduri, execuţia fiecăruia dintre ultimii doi algoritmi dintre aceşti patru necesită, în medie, mai puţin de câteva secunde. Similar, algoritmul ce rezolvă problema poştaşului chinez pentru grafuri mixte se dovedeşte a fi mai eficient decât alţi algoritmi ştiuţi. Mai mult ca atât, în internet probabil nu se găseşte un alt program care rezolvă această problemă pentru grafuri mixte. Merită de remarcat faptul că pe lângă toate acestea este posibilă execuţia şi urmărirea pas cu pas a unor algoritmi: găsirea drumului minim şi a tuturor drumurilor minime ce încep dintr-un punct, găsirea arborelui parţial de cost minim, găsirea fluxului maxim, a fluxului maxim de cost minim şi a tăieturii minime, şi alţi algoritmi. Acest lucru este foarte util în predarea şi studierea teoriei grafurilor. Figura 8. Un pas al execuţiei algoritmului pentru găsirea drumului minim între 2 puncte 137
138 Facultatea de Matematică şi Informatică, Bucureşti 5. Aplicaţii În prezent teoria grafului este aplicată în mai multe domenii. Datorită acestui fapt Graph Magics poate fi utilizat în mai multe scopuri: Predarea şi studierea teoriei grafurilor. Studierea, analiza şi rezolvarea problemelor ce pot fi abordate cu ajutorul grafurilor. Aplicarea grafurilor şi algoritmilor acestora în diferite domenii: matematică, informatică, economie, sociologie, inginerie civilă şi urbanism, şi altele. Construcţia şi modelarea grafurilor pentru alte scopuri, spre exemplu pentru reprezentarea diferitor diagrame şi scheme. Utilitatea acestui program este de asemenea remarcată prin faptul că în prezent el este utilizat de diferiţi profesori, studenţi şi alte persoane în scopuri didactice, în scopuri comerciale şi chiar în câteva cercetări ştiinţifice. 6. Implementarea programului Graph Magics este în întregime implementat în limbajul C#.NET şi nu utilizează nici o componentă străină. BIBLIOGRAFIE [1] Nicos Christofides, Graph Theory An algorithmic approach, Academic Press Inc., Orlando USA, 1975 [2] Richard C. Larson, Amedeo R. Odoni, Urban Operations Research, Prentice-Hall, New Jersey USA, 1981 [3] David Eppstein, Small maximal independent sets and faster exact graph coloring, http://www.ics.uci.edu/~eppstein/pubs/epp-wads-01.pdf [4] Walter Klotz, Graph Coloring Algorithms, http://www.math.tuclausthal.de/arbeitsgruppen/diskrete-optimierung/publications/2002/gca.pdf 138