folie z wykładu
Transkrypt
folie z wykładu
Krzysztof T. Zwierzy ski Algorytmy rysowania grafów Plan wykładu Definicje Rysowanie grafów planarnych Rysowanie grafów na okr gu Rysowanie grafów w ograniczonym obszarze Rysowanie grafów metod Pisanskiego Przekształcenia współrz dnych wierzchołków grafów Edytor grafów Kryteria oceny rysunków grafów Metody rysowania grafów do wyszukiwania klik w grafach Rysunki grafów w 3D Informatyka, Sem III, Optymalizacja kombinatoryczna Pozna , 8 grudnia 2003 r. Definicje Graf G = (V, E) → x = x1, x2, x3...., xn Linie proste x = x1, x2, x3...., xn y = y1, y2, y3...., yn G = (V, E, x, y) y = y1, y2, y3...., yn Rysunki grafów – typy kraw dzi Linie krzywe + informacja o pozycji ka dej kraw dzi (punkty charakterystyczne krzywych Beziera: punkty pocz tkowe i ko cowe, punkty kontrolne) Linie łamane + informacje o punktach łamania kraw dzi Linie z grotami + informacje o skierowaniu grotów Format .poz Rysunki grafów zapisywane s w plikach tekstowych z rozszerzeniem .poz. Ka da nowa linia w pliku oznacza nowy graf. Elementy ci gu opisuj cego rysunek grafu rozdzielone s znakiem spacji. Spacja powinna by równie na ko cu tego ci gu. gdzie: np.: n kod_grafu x1 y1 x2 y2 ... xn yn n – liczba wierzchołków grafu kod_grafu – ci g zer i jedynek b d cy zło eniem w jeden wektor elementów górnego trójk ta macierzy przyległo ci xi yi – współrz dne x i y wierzchołka o indeksie i 4 111111 15 295 295 295 295 15 15 15 2 Rysowanie grafów planarnych Twierdzenie (Fáry) Je eli graf jest planarny, to mo na przestawi go na rysunku w postaci, w której wszystkie kraw dzie nie krzy uj si i s odcinkami linii prostych. Rysunek grafu planarnego o takich wła ciwo ciach nazywa si Fáry embedding. Algorytm testowania czy graf jest planarny (Hopcroft-Tarajan 1974) zło ono O(n) Twierdzenie (Euler) Graf rz du n ≥ 3 z k kraw dziami nie jest planarny, je eli k > 3n − 6. Twierdzenie (K. Kuratowski, 1930). Graf jest planarny wtedy i tylko wtedy, gdy nie zawiera podgrafu homeomorficznego do K5 lub K3,3. Algorytm rysowania grafów planarnych 3 Rysowanie grafów na okr gu (Xmin, Ymin) (Xmin+ 15, Ymin+ 15) (Xmax/2, Ymax/2) (Xmax− 15, Ymax− 15) (Xmax, Ymax) Zało enie: Xmin = 0, Ymin = 0, Xmax = 310, Ymax = 310, π = 3.1415 Algorytm rozmieszczania wierzchołków na okr gu Dane: n – liczba wierzchołków, Xmin, Ymin, Xmax, Ymax – zakres dopuszczalnych warto ci nowych współrz dnych wierzchołków, Wynik: x, y – wektory opisuj ce nowe współrz dne wierzchołków. Metoda: 1. Oblicz: xmax := (Xmax - Xmin - 30)/2 ymax := (Ymax - Ymin - 30)/2. 2. Dla kolejnych wierzchołków i (1 ≤ i ≤ n) oblicz: dpni := 2⋅(i - 1)⋅π/n; xi := xmax + 0.9⋅xmax⋅sin(dpni) + 15; yi := ymax + 0.9⋅ymax⋅cos(dpni) + 15; Zło ono : O(n). Przykład 4 Rysowanie grafów w ograniczonym obszarze Losowe rozmieszczenie wierzchołków Arbitralne rozmieszczenie wierzchołków (np. na okr gu) Rozmieszczenie wierzchołków sterowane r cznie 5 Rysowanie grafów metod Pisanskiego Wyznaczenie macierzy wektorów własnych − 0.447 0.395 0.395 − 0.447 − 0.103 − 0.103 0.000 0.000 0.302 0.302 0.144 0.144 − 0.542 − 0.542 − 0.559 − 0.559 − 0.447 − 0.395 − 0.395 − 0.447 0.103 0.103 B= − 0.224 0.498 0.498 − 0.224 − 0.498 − 0.498 0.000 0.000 0.500 0.500 0.302 0.302 − 0.144 − 0.144 − 0.542 − 0.542 0.559 0.559 0.240 0.240 − 0.351 − 0.351 0.240 0.240 0.351 0.351 − 0.224 − 0.292 − 0.292 − 0.500 − 0.224 0.292 0.292 − 0.500 0.240 0.240 0.240 0.240 − 0.208 − 0.208 0.208 0.208 Uwaga! Posta macierzy zale y od etykietowania wierzchołków w grafie Dobór wektorów a) b) c) d) a) kolumny 1-2, b) 1-4, c) 1-5, d) 2-7 6 Przekształcenia współrz dnych wierzchołków grafów Normalizacja → Przyci ganie wierzchołków do w złów siatki Transformacje Obroty Przesuni cia Odbicia Skalowanie Grawitacja wx v + xv ' = wy v + xi i∈N ( v ) w + N (v ) yv ' = , yi i∈N ( v ) w + N (v ) Antygrawitacja wxv + xv ' = wyv + xi i∈N ( v ) w + N (v ) yv ' = "Spr yna" 7 yi i∈N ( v ) w + N (v ) Edytor grafów Dodawanie/usuwanie wierzchołków Przemieszczanie wierzchołków za pomoc myszki Dodawanie/usuwanie kraw dzi mi dzy dwoma wierzchołkami Zaznaczanie/odznaczanie grupy wierzchołków Przemieszczenie grupy wierzchołków za pomoc myszki Usuwanie grupy wierzchołków Usuwanie/dodawanie kraw dzi mi dzy zaznaczon grup wierzchołków Zamiana podgrafu indukowanego przez zaznaczon grup wierzchołków na dopełnienie Widok macierzy przyległo ci Dodawanie i usuwanie kraw dzi w macierzy Wy wietlanie informacji pomocniczych o wierzchołkach Numer wierzchołka, stopie wierzchołka 8 Kryteria oceny rysunków grafów Liczba skrzy owa kraw dzi Algorytm zliczania skrzy owa kraw dzi (wierzchołki na okr gu) Dane: n – liczba wierzchołków, A – macierz przyległo ci grafu. Wynik: cr – liczba skrzy owa . Metoda: 1. Przypisz cr := 0; 2. Dla ka dej kraw dzi {i, j} wyst puj cej w grafie okre l z iloma innymi si krzy uje zwi kszaj c odpowiednio cr. Wiadomo, e nie krzy uj si kraw dzie o etykietach {1, n} oraz {a, a+1}, gdy le na obwodzie grafu. Ka da kraw d {i, j} dzieli zbiór wierzchołków grafu na dwa podzbiory B (wierzchołki {i + 1, j −1}) i C (wierzchołki {j + 1, n} ) i tylko kraw dzie, które ł cz te ró ne podzbiory krzy uj si z dan kraw dzi . Zło ono : O(n3). Algorytm zliczania skrzy owa (ogólny) Liczba punktów przeci Definicja. Punkt przeci cia nazywamy miejsce skrzy owania si co najmniej dwóch kraw dzi. Suma k tów mi dzy kraw dziami Symetria – rozbicie zbioru wierzchołków grafu na orbity Trudno z rysowaniem grafów asymetrycznych, czyli takich, które maj tylko jeden automorfizm. 9 Optymalizacja rysunków grafów Wykorzystanie losowych transpozycji (czyli zamiana miejscami dwóch wylosowanych wierzchołków) Wykorzystanie losowych permutacji Algorytm minimalizacji liczby skrzy owa metod indukowania losowej permutacji Dane: n – liczba wierzchołków, A – macierz przyległo ci, x, y – ci gi opisuj ce współrz dne wierzchołków, s – liczba powtórze . Wynik: A' – macierz przyległo ci. Metoda: 1. B := A, A' := A. 2. Oblicz liczb skrzy owa cr := countCCR (B, x, y). 3. Powtórz s razy: a) wylosuj losow permutacj , b) indukuj permutacj B := induceP(n, , B), c) oblicz cr := countCCR (B, x, y), d) Je eli cr jest mniejsze od CCR to, A' = B, CCR := cr. Zło ono : Zale y od liczby powtórze oraz od zło ono ci indukowania permutacji i zliczania skrzy owa . cr = 15 cr = 11 cr = 8 Wykorzystanie bazy danych rysunków mniejszych grafów 10 cr = 4 Wykorzystanie przekształcenie grawitacja i antygrawitacja Metryka D ( x, x ' , y , y ' ) = n i =1 (x − x')2 + ( y − y')2 Wykorzystanie przekształcenia spr yna Wykorzystanie metaheurystyk (algorytmy ewolucyjne, symulowane wy arzanie) 11 Metody rysowania grafów do wyszukiwania klik w grafach Problem MCP (ang. Minimum Clique Partition Problem) podziału zbioru wierzchołków grafu na minimaln liczb rozł cznych klik. W wersji decyzyjnej jest to problem NP-zupełny. Algorytm dokładny EMCP Dane: n − liczba wierzchołków, A − macierz przyległo ci. Wynik: cp − minimalna liczba klik w grafie, c – ci g kolorów wierzchołków okre laj cy podział zbioru na podzbiory. Metoda: 1. Przypisz cp := n. 2. Generuj kolejne podziały zbioru wierzchołków na podzbiory i dla ka dego z nich sprawd , czy indukuje kliki. 3. Je eli tak, i jest to rozwi zanie lepsze od bie cego, to zapami taj bie ce rozwi zanie w ci gu c oraz popraw warto cp. Zło ono : wykładnicza Liczba podziałów zbioru na podzbiory odpowiada liczbie Bella Bn. r(n) = t(n)/ t(n/2) r(n) 1E+26 1E+24 1E+22 1E+20 1E+18 1E+16 1E+14 1E+12 1E+10 1E+08 1E+06 10000 100 1 O(n) O(n^2) O(2^n) O(3^n) O(n!) O(n^n) O(Bn) 4 8 12 16 20 12 24 28 Algorytm zachłanny GCP Dane: n − liczba wierzchołków, A − macierz przyległo ci. Wynik: cp − minimalna liczba klik w grafie, c – ci g kolorów wierzchołków okre laj cy podział zbioru na podzbiory. Metoda: 1.Wierzchołkowi 1 przydziel pierwszy kolor. 2.Kolejnym wierzchołkom przydziel: a) kolor zbioru wierzchołków o mniejszych etykietach je eli jest poł czony z ka dym z nich, b) nowy kolor w przeciwnym przypadku. Zło ono : O(n3) Algorytm IPG (Iteracyjnego Przekształcenia Grawitacyjnego) Dane: n − liczba wierzchołków, A − macierz przyległo ci, w – waga wierzchołka, pr – próg podobie stwa. Wynik: c – ci g kolorów opisuj cy przynale no danego wierzchołka do podzbioru. Metoda: 1. Losowo przypisz ka demu z wierzchołków par liczb (x, y) z przedziału [0, 1]. 2. Oblicz nowe warto ci tych par w nast puj cy sposób: wx v + xv ' = wy v + xi i∈N ( v ) w + N (v ) , yv ' = yi i∈N ( v ) w + N (v ) gdzie: N(v) − s siedztwo wierzchołka v. 3. Podziel wierzchołki na podzbiory stosuj c procedur PCA zapami tuj c najlepszy podział. 4. Je eli warto D(x, y, x', y') jest wi ksza ni zało ony próg podobie stwa pr, to id do punktu 2. Zło ono : wielomianowa Algorytm wyznaczania skupie PCA (ang. Principal Components Analysis) 1.Normalizuj współrz dne wierzchołków do przedziału [0, 1]. 2.Wyznacz warto ci rednie dla x i y. 3.Wyznacz odchylenia standardowe oraz współczynnik korelacji mi dzy atrybutami x i y. 4.Je eli odchylenia standardowe x i y nie s jednocze nie równe zero, to na podstawie powy szych informacji podziel wierzchołki na dwa podzbiory. 13 Algorytm ewolucyjny ECP Dane: n − liczba wierzchołków, A − macierz przyległo ci, m – wielko populacji, t – wykładnik funkcji skaluj cej, s – liczba iteracji. Wynik: c – ci g kolorów opisuj cy przynale no danego wierzchołka do podzbioru. Metoda: 1. Wylosuj populacj pocz tkow zło on z m ci gów o długo ci n zawieraj cych liczby całkowite z przedziału [1, n]. 2. Powtarzaj s razy: - Przegl daj elementy populacji weryfikuj c czy podziały, które reprezentuj , indukuj kliki w grafie oraz jaka jest ich liczba. Osobnik z najmniejsz liczb klik jest zapami tywany jako najlepsze rozwi zanie. - Oce ka dego osobnika nale cego do populacji. - Przeskaluj warto funkcji oceny za pomoc skalowania pot g . - Wyselekcjonuj za pomoc metody koła ruletki m osobników, których potomstwo trafi do nast pnej populacji. - Zmutuj wektor koduj cy ka dego z wyselekcjonowanych osobników. - Populacji bie cej przypisz nowo powstała populacj . Kodowanie osobników Funkcja oceny Operator ewolucyjny: mutacja, krzy owanie Metoda selekcji Anomalia 14 Eksport rysunków grafów do ró nych formatów SVG (Scalable Vector Graphics) – HTML, DocBook, MS Word <?xml version="1.0" standalone="no"?> <svg viewBox="0 0 310 310" xmlns:xlink="http://www.w3.org/1999/xlink"> <path id="k1_2" stroke="#000000" d="M 155 15 L 295 125 Z "/> <path id="k1_5" stroke="#000000" d="M 155 15 L 15 125 Z "/> <path id="k2_3" stroke="#000000" d="M 295 125 L 245 295 Z "/> <path id="k3_4" stroke="#000000" d="M 245 295 L 65 295 Z "/> <path id="k4_5" stroke="#000000" d="M 65 295 L 15 125 Z "/> <circle id="v1" cx="155" cy="15" r="5" <circle id="v2" cx="295" cy="125" r="5"/> <circle id="v3" cx="245" cy="295" r="5"/> <circle id="v4" cx="65" cy="295" r="5"/> <circle id="v5" cx="15" cy="125" r="5"/> </svg> EPS – TEX %!PS-Adobe EPSF-2.0 %%BoundingBox: 0 0 350 350 newpath 155 335 4 0 360 arc fill stroke newpath 295 225 4 0 360 arc fill stroke newpath 245 55 4 0 360 arc fill stroke newpath 65 55 4 0 360 arc fill stroke newpath 15 225 4 0 360 arc fill stroke newpath 155 335 moveto 295 225 lineto closepath stroke newpath 155 335 moveto 15 225 lineto closepath stroke newpath 295 225 moveto 245 55 lineto closepath stroke newpath 245 55 moveto 65 55 lineto closepath stroke newpath 65 55 moveto 15 225 lineto closepath stroke showpage RTF − MS Word 15 Rysunki grafów w 3D VRML LiveGraphics3D (Martin Kraus) http://www.vis.uni-stuttgart.de/~kraus/LiveGraphics3D/index.html <HTML> <HEAD> <TITLE>C5</TITLE> </HEAD> <BODY> <APPLET ARCHIVE="live.jar" CODEBASE="" CODE="Live.class" WIDTH=600 HEIGHT=600 ALIGN=LEFT> <PARAM NAME=INPUT VALUE=" Graphics3D[ {PointSize[0.03], GrayLevel[0.], {Point[{155,15 , 0}], Point[{295,125, 0}], Point[{245,295, 0}], Point[{65 ,295, 0}], Point[{15 ,125, 0}]}, {Line[{{155,15,0} ,{295,125,0}}], Line[{{155,15,0} ,{15 ,125,0}}], Line[{{295,125,0},{245,295,0}}], Line[{{245,295,0},{65 ,295,0}}], Line[{{65 ,295,0},{15 ,125,0}}],}}, {ViewPoint -> {2.948, -1.719, 1.405}, BoxRatios -> {4, 4, 4}, Boxed -> False} ] "> </APPLET> </BODY> </HTML> 16