You are on page 1of 46

Podstawy analizy algorytmw

Od wyboru waciwej struktury danych moe zalee wiele: zoono obliczeniowa programu, moliwo jego atwej modyfikacji, czytelno algorytmu, a nawet satysfakcja programisty.

ALGORYTMY + STRUKTURY DANYCH = PROGRAMY

Podstawy analizy algorytmw

MACIERZ SSIEDZTWA WIERZCHOKW


Do zapisywania grafw uywamy struktur macierzowych i listowych. Wrd tych pierwszych wyrniamy macierze ssiedztwa i macierze incydencji. Macierz ssiedztwa opisuje relacj zachodzc pomidzy elementami tego samego zbioru, np. macierz ssiedztwa wierzchokw czy macierz ssiedztwa krawdzi. Macierz incydencji opisuje relacj zachodzc pomidzy elementami dwch rnych zbiorw, np. macierz incydencji wierzchoekkrawd bd macierz incydencji wierzchoekcykl.

Podstawy analizy algorytmw

Macierz ssiedztwa wierzchokw grafu G = (V, E) jest macierz zerojedynkow A = [aij] rozmiaru nn o elementach:

aij = {
1 2

1, gdy {i , j }E 0 , gdy {i , j }E

5
6 7

1 1 0 2 1 3 1 A = 4 1 5 0 6 0 7 0

2 1 0 0 1 0 0 0

3 1 0 0 1 1 1 0

4 1 1 1 0 0 0 1

5 0 0 1 0 0 1 1

6 0 0 1 0 1 0 1

7 0 0 0 1 1 1 0

Podstawy analizy algorytmw

Struktura danych wymaga O(n2) komrek pamici bez wzgldu na gsto grafu. Procedura boolowska B(i,j) zwracajca true, gdy wierzchoki nr i oraz j s poczone krawdzi w grafie G, bd false w przypadku przeciwnym, moe by wykonana w czasie O(1). Dopisanie krawdzi lub usunicie krawdzi moe by dokonane w staym czasie. Jeli G jest nieskierowany, to A jest symetryczna i moemy zaoszczdzi na pamici, przechowujc tylko jej grn poow. Jeli G jest skierowany i nie posiada cykli 2-wierzchokowych, to macierz A jest antysymetryczna, czyli aijaji = 0 dla wszystkich i, j, a zatem ponownie moemy zaoszczdzi i przechowa jedynie n(n 1)/2 komrek pamici, podstawiajc aij = 1, gdy aji = 1 (i < j). Ponadto, grna (dolna) macierz trjktna odpowiada digrafowi acyklicznemu.

Podstawy analizy algorytmw

Czy mona jeszcze bardziej skomprymowa macierz ssiedztwa? Poniej podamy sposb pamitania macierzy A w O(n2/log n) komrkach pamici, umoliwiajcy wci stay dostp do informacji o ssiedztwie. 2Niech k = log 2 n jest liczb cakowit. A moe mie co najwyej 2 k rnych podmacierzy kk. Zapiszmy A jako tablic (n/k) (n/k) wskanikw do owych podmacierzy. Wwczas liczba wymaganych komrek wynosi:

n n n n 2 2 k + pk 2 + 2 k = + n log n = ( n 2 / log n) k k k log n


2

gdzie p jest liczb potrzebnych macierzy rozmiaru k k. Czas dostpu do informacji, czyli zoono procedury B(i, j), jest O(1).

Podstawy analizy algorytmw

Ponisza macierz 16 16:


0 0 0 1 1 1 1 0 1 0 0 0 0 1 0 1 1 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 itd. 0 0 0 1 1 0 0

moe by reprezentowana jako nastpujca macierz wskanikw


itd.

gdzie: =

0 0 0 0

0 0 = 1 0

1 1 1 1

1 0 = 0 0

itd.

Podstawy analizy algorytmw

Macierze ssiedztwa wierzchokw s bardzo uyteczne przy rozwizywaniu rnorodnych problemw dotyczcych drg w grafie. Jest to zwizane z faktem, e element aijk macierzy Ak jest wikszy od 0 wtedy i tylko wtedy, gdy wierzchoki i i j s poczone drog dugoci k w grafie G, gdzie Ak jest k-t potg macierzy A. Jeli G jest grafem skierowanym, to powstaje ciekawy problem: jaka jest minimalna liczba dostpw c(P) do macierzy ssiedztwa wierzchokw, gwarantujca moliwo rozstrzygnicia, czy G posiada nietrywialn wasno P. Wasno P jest nietrywialna, gdy zachodzi dla nieskoczenie wielu grafw i nie zachodzi dla nieskoczenie wielu grafw. Mogoby wydawa si, e c(P)=n(n1)/2 dla wszystkich nietrywialnych wasnoci teoriografowych.

Podstawy analizy algorytmw

Jednake istnieje kontrprzykad, mianowicie problem istnienia ujcia w digrafie, czyli wierzchoka o stopniu wejciowym n1 i stopniu wyjciowym 0, dla ktrego c(P)=3nlog2n3. Udowodniono, e dla wszystkich nietrywialnych wasnoci teoriografowych P, c(P) 2n4. Z drugiej strony istnieje wiele wasnoci, dla ktrych funkcja c(P) nie jest liniowa. Nazywamy je nieuchwytnymi. Wasnociami nieuchwytnymi s np. hamiltoniczno, planarno, spjno. O wasnoci P grafu G mwimy, e jest monotoniczna, gdy spenia j kady n-wierzchokowy nadgraf grafu G. Przykadami takich wasnoci s: spjno, nieplanarno, hamiltoniczno. Udowodniono, e jeli P jest nietrywialn wasnoci monotoniczn, to c(P) n2/16.

Podstawy analizy algorytmw

LISTY SSIEDZTWA WIERZCHOKW


Bardziej oszczdna struktura wykorzystuje listy ssiedztwa wierzchokw. Dla kadego wierzchoka iV tworzymy list ssiadw.
1 2
1 2 3 2 1 1 1 3 3 4 3 4 4 2 6 5 5 5 3 7 7 6 6 7 4

4 5

5 6 7

6 7

Podstawy analizy algorytmw

Struktura ta wymaga n + 4m = O(m + n) komrek pamici dla grafu nieskierowanego i n + 2m = O(m + n) komrek pamici dla grafu skierowanego. Poniewa O(m + n) = o(n2), gdy m = o(n2), wic listy ssiedztwa maj na og nisz zoono pamiciow ni macierz ssiedztwa. Usunicie krawdzi wymaga uprzedniego znalezienia odpowiedniego elementu listy, co w najgorszym przypadku wymaga przejrzenia caej listy. Z tego samego powodu jedno wykonanie procedury B(i, j) zajmuje czas O(n). Jeli G jest nieskierowany, to moemy zaoszczdzi prawie poow pamici, zapisujc na i-tej licie jedynie te krawdzie, ktre prowadz do wierzchokw o numerach j > i.

Podstawy analizy algorytmw

PKI WYJCIOWE
Jeeli w trakcie dziaania algorytmu teoriografowego graf nie ulega zmianie, to moemy zrezygnowa ze wskanikw i zapamita wszystkie krawdzie po kolei w jednym wektorze. Uporzdkowany zbir wszystkich ssiadw wierzchoka i nosi nazw pkw wyjciowych tego wierzchoka i std nazwa tej struktury. Dla kadego i = 2, ..., n ssiedzi wierzchoka i s umieszczeni bezporednio za wierzchokami-ssiadami wierzchoka i 1.

Podstawy analizy algorytmw

Pki wyjciowe dla grafu G:

1 4 6 10 14 17 20 23

7 3

Podstawy analizy algorytmw

GRAFICZNA REPREZENTACJA GRAFW


Istniej dwa zasadnicze problemy dotyczce komputerowego reprezentowania grafw: P1: cyfrowa reprezentacja grafw w pamici komputera. P2: graficzna reprezentacja grafw na ekranie komputera.

Podstawy analizy algorytmw

Problem drugi sprowadza si do zagadnienia umieszczania grafw na paszczynie. Problem ten wymaga przyjcia pewnej estetyki, tzn. kryterium elegancji rysunku. Kryteria takie maj charakter heurystyczny, gdy dla jednego uytkownika moe to by brak przeci krawdzi, a dla innego ich prostoliniowo. Dobr estetyk jest przedmiotem osobistych preferencji, tradycji i kultury. Na og przyjmuje si nastpujce estetyki: unikanie przeci pokazywanie symetrii unikanie zagi krawdzi unikanie dysproporcji oszczdzanie powierzchni rysunku

Podstawy analizy algorytmw

Cakowite wyeliminowanie przeci jest moliwe jedynie wtedy, gdy graf G=(V, E), gdzie |V|=n i |E|=m, jest planarny. Grafy planarne s bardzo dobrze przebadan rodzin grafw pod ktem algorytmw rysujcych. Mona na przykad zada aby wszystkie krawdzie byy odcinkami linii prostych. Istnieje algorytm o zoonoci O(n), ktry tworzy takie rysunki, o ile graf jest planarny. Dowolny rysunek tego rodzaju nazywamy reprezentacj Faryego. Jeli graf planarny G jest 3-spjny (graf jest 3-spjny, jeli usunicie dowolnych dwch wierzchokw wraz incydentnymi krawdziami nie powoduje jego rozspojenia), to istnieje reprezentacja Faryego, w ktrej kada ciana skoczona jest wieloktem wypukym. I tutaj odpowiedni rysunek mona uzyska w czasie O(n). Istnieje nawet algorytm o zoonoci O(n) generujcy taki rysunek grafu planarnego bez przeci.

Podstawy analizy algorytmw

Jeli G nie jest planarny, to znalezienie liczby przeci (G) jest problemem NP-trudnym. W przypadku oglnym stosuje si rne heurystyki. Ca rodzin metod rysowania grafw s algorytmy oparte na modelach fizycznych. Skadaj si one z dwch czci. Pierwsz z nich jest model si zdefiniowany na grafie wejciowym. Drugim elementem jest technika pozwalajca znale lokalne minimum w zdefiniowanym modelu. Przykadem opisanych algorytmw jest tzw. metoda sprynowa. Jej celem podstawowym jest pokazywanie symetrii i prostoliniowoci krawdzi. Metoda sprynowa jest oparta ma modelu fizycznym ukadu obrczy i spryn. Proces ten jest symulowany za pomoc systemu mechanicznego, w ktrym wierzchoki odpowiadaj obrczom, a krawdzie sprynom. Spryny przycigaj obrcze, gdy s one zbyt odlege i odpychaj w przypadku przeciwnym.

Podstawy analizy algorytmw

Inn, popularn metod rysowania grafw skierowanych jest rysowanie hierarchiczne. Przed narysowaniem grafu przyporzdkowujemy kademu wierzchokowi odpowiadajc mu warstw. Wierzchoki z tej samej warstwy rysowane s na jednej linii poziomej, podczas gdy krawdzie skierowane s z gry do dou bd z dou do gry, przy czym minimalizowana jest liczba ich przeci. Gwne problemy, z ktrymi si spotykamy stosujc wspomnian metod to: 1. Przydzielenie Przydzielenie warstw wierzchokom tak, by minimalizowa zarwno szeroko, jak i wysoko rysunku. rysunku. 2. Minimalizacja Minimalizacja liczby przeci krawdzi. Oba wspomniane problemy nale do klasy problemw NP-trudnych.

Podstawy analizy algorytmw

Rysowanie ortogonalne. Krawdzie skadaj si z odcinkw prostych na przemian pionowych i poziomych. Rysunki tego typu maj szczeglnie due zastosowanie w tworzeniu obwodw drukowanych, schematw elektronicznych, czy blokowych. Minimalizowa tu mona liczb przeci oraz zgi krawdzi. Oba wspomniane problemy optymalizacyjne nale do klasy problemw NP-trudnych. Dla grafw planarnych stworzonych zostao wiele algorytmw majcych wysokie walory estetyczne. Jeli wic graf jest niemal planarny, opaca si najpierw splanaryzowa go, np. usuwajc jak najmniej krawdzi, narysowa w sposb planarny, po czym doda usunite krawdzie. Otrzymamy w ten sposb estetyczny rysunek, prawie bez skrzyowanych krawdzi. Zadanie planaryzacji grafu tak, by jak najmniej zaburzy jego struktur jest kolejnym problemem NP-trudnym.

Podstawy analizy algorytmw

Istnieje pewien interesujcy model rysowania grafw planarnych, ktry bierze pod uwag kierunek krawdzi. Rysunek grafu nazywamy planarnym w gr, jeli adne dwie krawdzie nie krzyuj si, a ponadto wszystkie krawdzie s skierowane w gr. To dodatkowe zaoenie o kierunku krawdzi sprawia, e przekraczamy granic zoonoci obliczeniowej, bowiem zadanie polegajace na zdecydowaniu, czy dany graf skierowany posiada reprezentacj planarn w gr jest problemem NP-zupenym. Owo przejcie jest bardzo drastyczne, gdy podobny problem dla grafw nieskierowanych ma zoono liniow. Co wicej, jeli zaoymy dodatkowo, e wejciowy graf skierowany jest 2-spjny, to okazuje si, e zawsze mona go narysowa planarnie w gr.

Podstawy analizy algorytmw

Rysunek 1: Dwa rysunki tego samego grafu planarnego paski i nie paski.

Podstawy analizy algorytmw

Rysunek 2: Graf narysowany poliliniowo.

Podstawy analizy algorytmw

a) rysunek wypuky

b) rysunek wklsy

Rysunek 3: Grafy narysowane prostoliniowo.

Podstawy analizy algorytmw

Rysunek 4: Przykady rnych stylw rysowania grafw: a) rysowanie ortogonalne, b) rysowanie blokowo-ortogonalne, c) rysowanie prostoktne, d) rysowanie blokowo-prostoktne.

Podstawy analizy algorytmw

Rysunek 5: Po lewej graf obrazujcy plastry miodu (4 wiersze, 4 kolumny), po prawej ten sam graf narysowany prostoktnie (dla uproszczenia ciany w grafach zostay ponumerowane).

Podstawy analizy algorytmw

Oprcz estetyki, przy projektowaniu rysunku naley uwzgldni konwencj rysowania i ograniczenia. Konwencja jest podstawow regu, ktr dany rysunek winien uwzgldnia, aby by akceptowalnym. Na przykad przy rysowaniu schematw blokowych programw wierzchoki musz by skrzynkami, za krawdzie liniami prostymi lub amanymi pod ktem prostym. Najczciej spotykane konwencje to: 1) 2) 3) 4) 5) 6) krawdzie prostoliniowe, krawdzie ortogonalne, wierzchoki i krawdzie na siatce rastrowej, uki zorientowane w jednym kierunku, wierzchoki podzielone na warstwy, rysunek grafu musi by planarny.

Podstawy analizy algorytmw

W odrnieniu od estetyki i konwencji, ktre dotycz caego rysunku, ograniczenia dotycz wybranych fragmentw grafu. Na przykad przy rysowaniu sieci PERT chcemy, by cieka krytyczna bya wyprostowana i znajdowaa si w centrum rysunku. Najczciej spotykane ograniczenia to: 1) 2) 3) scentrowanie wybranego wierzchoka zgrupowanie wybranych wierzchokw, wyprostowanie wybranej cieki w kierunku poziomym lub pionowym.

Podstawy analizy algorytmw

Od roku 1994 odbywaj si oglnowiatowe zawody w automatycznym rysowaniu grafw. Zawody odbywaj si zwykle w czterech zmieniajcych si z roku na rok kategoriach. W pierwszej poowie roku ogaszane s w Internecie grafy w postaci listy ssiedztwa, a w drugiej poowie roku w ramach konferencji Graph Drawing picioosobowe jury typuje zwycizcw, kierujc si subiektywnym odczuciem pikna.

Podstawy analizy algorytmw

Pierwsza nagroda z roku 1994

Podstawy analizy algorytmw

Pierwsza nagroda z roku 1998

Podstawy analizy algorytmw

Druga nagroda z roku 1998

Podstawy analizy algorytmw

Problem umieszczania grafw na paszczynie moe by uoglniony na inne rodzaje powierzchni. Oto przykadowe zagadnienia tego typu: 1) 2) 3) 4) umieszczanie grafw w ksikach, umieszczanie grafw na torusie i wstdze Mbusa, umieszczanie grafw na powierzchni rodzaju g, umieszczanie grafw w przestrzeni trjwymiarowej.

Podstawy analizy algorytmw

Ciekawym pomysem rysowania grafw jest najnowsza idea umieszczania grafw na paszczynie w sposb konfluentny. Krzywa jest lokalnie monotoniczna, jeeli nie przecina si sama ze sob oraz nie ma ostrych zmian kierunku. Intuicyjnie, krzywa taka jest jak tor kolejowy. Rysowanie konfluentne polega na przedstawianiu krawdzi w postaci krzywych lokalnie monotonicznych, scalanych w takie tory.

Podstawy analizy algorytmw

Grafy Kuratowskiego mona narysowa bez przeci w sposb konfluentny.

K3,3

K5

Podstawy analizy algorytmw

Najmniejszym znanym grafem niekonfluentnym jest graf Petersena bez jednego wierzchoka.

W obszarze problematyki rysowania grafw znajduj si take takie zagadnienia jak: rysowanie grafw o wierzchokach i krawdziach majcych zadane wielkoci, rysowanie grafw ewoluujcych, rysowanie grafw klastrowych, podpisywanie wierzchokw i krawdzi, nawigowanie po rysunkach grafw, uwidacznianie podgrafw w grafach, rysowanie grafw zwijanych i wiele innych.

Podstawy analizy algorytmw

Przykady grafw Petersena

Podstawy analizy algorytmw

yrafa Petersena

Podstawy analizy algorytmw

TABLICA
Tablica jest struktur danych zoon ze staej liczby elementw. W komputerze s one zwykle przechowywane w kolejnych komrkach pamici. W przypadku tablic jednowymiarowych, zwanych te wektorami, dostp do elementu odbywa si poprzez podanie pojedynczego indeksu. Deklaracja wektora liczb cakowitych wyglda nastpujco:

wektor: array[1..50] of integer;

Podstawy analizy algorytmw

Z punktu widzenia zoonoci obliczeniowej istotne jest, e moemy obliczy adres dowolnego elementu w staym czasie. Nawet gdy doliczymy do tego czas potrzebny na weryfikacj adresu, tj. ustalenie, e nie przekracza on zakresu dopuszczalnych wartoci, czas potrzebny do odczytania odpowiedniej wartoci lub zapisania nowej wartoci wynosi O(1).

Podstawy analizy algorytmw

Dowolna operacja wykonywana na caej tablicy bdzie tym dusza, im wiksza bdzie tablica. Niech n bdzie rozmiarem tablicy. Wwczas inicjalizacja tablicy lub znalezienie najwikszego elementu wymaga czasu proporcjonalnego do n, czyli O(n). Jeli chcemy zachowa pewien porzdek elementw w tablicy wwczas, za kadym razem gdy musimy wstawi now warto, musimy stworzy miejsce we waciwej pozycji albo przesuwajc wszystkie wysze wartoci o jedna pozycj w prawo, albo przesuwajc nisze wartoci o jedn pozycje w lewo. Bez wzgldu na to, jak strategi kopiowania przyjmiemy, w najgorszym przypadku bdziemy musieli przesun co najmniej n/2 elementw. Podobnie usunicie elementu moe wymaga przemieszczenia prawie wszystkich elementw tablicy. Zatem taka operacja moe by wykonana w czasie O(n).

Podstawy analizy algorytmw

Oczywicie, powysze rozwaania mog by uoglnione na tablice dwu i wielowymiarowe. Na przykad deklaracja tablicy dwuwymiarowej 400 liczb cakowitych mogaby wyglda nastpujco: macierz: array[1..20, 1..20] of integer;

Podstawy analizy algorytmw

Dostp do elementu takiej tablicy rwnie wymaga czasu O(1). Jednake, jeli oba wymiary takiej tablicy zale od n, to operacje takie jak wyzerowanie kadego elementu macierzy bd znalezienie maksymalnego elementu obecnie wymagaj czasu O(n2). Czas potrzebny do inicjalizacji tablicy rozmiaru n jest (n). Czasami w praktyce nie musimy inicjalizowa kadego elementu tablicy, a jedynie wiedzie, czy dany element zosta ustalony czy nie i jeli tak, to zna jego warto. Wwczas, jeli jestemy skonni przeznaczy wicej pamici ni n komrek, moemy dokona inicjalizacji w czasie o(n). Pozwala nam na to technika zwana inicjalizacj wirtualn. Polega ona na tym, e jeli chcemy zainicjalizowa tablic T[1..n], to potrzebujemy dwch dodatkowych tablic liczb cakowitych rozmiaru n, a[1..n] i b[1..n] oraz licznika counter.

Podstawy analizy algorytmw

LISTY

Z matematycznego punktu widzenia lista jest skoczonym cigiem elementw z pewnego rozwaanego zbioru. W przeciwiestwie do tablic liczba elementw jest tu na og nieustalona i z gry nieograniczona. Lista umoliwia nam szybkie okrelenie, ktry element jest pierwszy, ktry ostatni i ktry element jest poprzednikiem i/lub nastpnikiem danej pozycji na licie.

Podstawy analizy algorytmw

ZBIORY
W przeciwiestwie do elementw listy elementy w zbiorze S = {x1, x2, ..., xn} nie s podane w adnym ustalonym porzdku. Liczb n elementw w zbiorze S oznaczamy przez |S| i nazywamy rozmiarem zbioru S. Podstawowymi operacjami na zbiorach s: insert (x,S) = S{x} wstawienie elementu do zbioru S delete(x,S) = S{x} usunicie elementu x ze zbioru S member(x,S) wynikiem jest true, gdy x S, lub false, gdy x S min(S) zwrcenie najmniejszego elementu w S max(S) zwrcenie najwikszego elementu w S deletemin(S) = S{min(S)} usunicie najmniejszego elementu z S union(S1,S2) = S1S2 obliczenie sumy zbiorw S1 i S2

Podstawy analizy algorytmw

Istniej dwie podstawowe implementacje zbioru S = {x1, x2, ..., xn}: za pomoc wektorw bitw i za pomoc list. W pierwszym przypadku zakadamy, e wszystkie rozwaane zbiory s podzbiorami pewnego uniwersum U. Podzbir S U jest reprezentowany przez wektor VS o |U| bitach, taki, e

VS ( x) = {

1, gdy 0 , gdy

xS xS

Wektor VS nazywamy wektorem charakterystycznym zbioru S .

Podstawy analizy algorytmw

Operacje insert, delete i member maj zoono czasow O(1). Zoono pamiciowa jest proporcjonalna do rozmiaru |U|. Zalet tej implementacji jest szybko sprawdzenia naleenia elementu do zbioru, bowiem wystarczy sprawdzi x-ty bit wektora VS. Operacje takie jak S1 S2 i S1 S2 mog by wykonane jako suma logiczna i iloczyn logiczny w komputerze. Jest to szczeglnie cenne, gdy |U| jest nie wiksze ni rozmiar jednego sowa maszynowego. Jednake, gdy rozmiary S1 i S2 s mae w porwnaniu z rozmiarem uniwersum, to suma i iloczyn s wykonywane w czasie O(|U|), a nie w czasie proporcjonalnym do liczby elementw w obu sowach.

KONIEC

You might also like