Rysunek grafu

Rozważmy następujące dwa grafy, w których wierzchołki oznaczone zostały liczbami z przedziału [0,5].

RBRrpPyeY21Qu
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Czy reprezentują one ten sam zbiór wierzchołków i krawędzi? Tak, ponieważ przedstawiają takie same wierzchołki wraz z zachowanymi połączeniami między nimi. Parametry takie jak długości krawędzi czy położenie wierzchołków nie mają tu żadnego znaczenia. Taką własność grafów nazywamy izomorfizmemizomorfizmizomorfizmem.

Gdyby grupie uczniów podano listę wierzchołków i krawędzi, a następnie poproszono o narysowanie reprezentującego je grafu, prawdopodobnie każda osoba wyobraziłaby go sobie zupełnie inaczej. Długości krawędzi czy ułożenie wierzchołków różniłyby się na każdym rysunku, a mimo to wszystkie ilustracje przedstawiałyby ten sam graf. Możemy zatem przyjąć, że jeżeli dowolne dwa wierzchołki na jednym rysunku grafu połączone są krawędzią i odpowiadające im wierzchołki na drugim rysunku również są połączone krawędzią, to obydwa rysunki przedstawiają ten sam graf.

Reprezentacje grafów prostych nieskierowanych bez wag krawędzi

Na początek omówmy sposoby reprezentacji podstawowych grafów, które nie zawierają krawędzi wielokrotnych ani pętli i mają krawędzie wyłącznie nieskierowane, a same krawędzie nie mają przypisanych wag.

Macierz sąsiedztwa

Poznaliśmy już jedną z reprezentacji grafów polegającą na przechowywaniu tablicy wierzchołków oraz tablicy krawędzi. Innym sposobem reprezentacji grafu jest wykorzystanie macierzy do przedstawienia połączeń między wierzchołkami.

Sposób ten to macierz sąsiedztwa. Jest to dwuwymiarowa tablica o rozmiarze , gdzie to liczba wierzchołków grafu. Jej wartości opisują, czy między dwoma wierzchołkami istnieje krawędź.

M = [ a 11 a 12 a 1 n a 21 a 22 a 2 n a n 1 a n 2 a n n ]

W grafach, których krawędzie nie mają przypisanych wag, wartość wyrazu wynosi 1, jeśli istnieje krawędź od wierzchołka do wierzchołka , lub 0, jeżeli taka krawędź nie istnieje. Przykład grafu oraz odpowiadającą mu macierz sąsiedztwa przedstawia następująca ilustracja:

R5lS56m04tSss
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Kolumny i wiersze macierzy sąsiedztwa opisane są indeksami wierzchołków. Wartości pól macierzy wskazują, czy dana krawędź istnieje, czy też nie. Przykładowo, wartość oznacza, że między wierzchołkami 0 i 1 istnieje krawędź, zaś  oznacza, że między wierzchołkami 0 i 3 nie ma takiego połączenia.

Rozmiar miejsca w pamięci komputera, które zajmuje macierz sąsiedztwa, jest proporcjonalny do kwadratu liczby wierzchołków. Oznacza to, że złożoność pamięciowa tej reprezentacji równa się O(n2), gdzie  to liczba wierzchołków grafu.

Podstawowe czynności, takie jak dodawanie krawędzi, usuwanie krawędzi i sprawdzanie, czy istnieje krawędź między wierzchołkiem  oraz wierzchołkiem , są operacjami, które wymagają jedynie zmiany wartości lub jej odczytania z konkretnego pola tablicy.

Listy sąsiedztwa

Macierz sąsiedztwa dla grafów o małej liczbie krawędzi względem liczby wierzchołków zajmuje w pamięci komputera dużo miejsca, które nie zostanie wykorzystane. To główny powód, dla którego w pewnych przypadkach lepszym sposobem reprezentacji będzie wykorzystanie list sąsiedztwa, bardziej oszczędnych pod względem ilości wykorzystanej pamięci komputera.

Listy sąsiedztwa są sposobem reprezentacji grafu jako jednowymiarowej tablicy list. Tablica ta zawiera  list, gdzie  jest liczbą wierzchołków grafu. Każdy z wierzchołków ma więc przypisaną dokładnie jedną listę zawierającą indeksy wierzchołków, które są z nim połączone krawędzią.

Na poniższym przykładzie grafu i odpowiadających mu list sąsiedztwa można zauważyć, że sposób ten zajmuje mniej miejsca w pamięci komputera niż macierz sąsiedztwa - taka macierz miałaby rozmiar , natomiast w reprezentacji wykorzystującej listy sąsiedztwa każda z list zawiera liczbę elementów równą liczbie sąsiadów danego wierzchołka (np. dla wierzchołka 1 są to jedynie dwa elementy).

RZ3M8aoEUHcYa
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Na powyższym przykładzie każdy z wierzchołków (o indeksach od 0 do 4) ma własną listę sąsiedztwa zawierającą indeksy sąsiadujących z nim wierzchołków. Przykładowo, lista sąsiedztwa wierzchołka o indeksie 4 zawiera wierzchołki, które są z nim połączone krawędziami: 0, 2 i 3.

Rozmiar miejsca w pamięci komputera, które zajmują listy sąsiedztwa, jest zależny od liczby krawędzi grafu - to ona definiuje liczbę elementów zawartych w listach. Oznacza to, że złożoność pamięciowa tej reprezentacji równa się O(m), gdzie  to liczba krawędzi grafu.

Macierz incydencji

Macierz incydencji to kolejny sposób reprezentacji grafu. Jest ona dwuwymiarową tablicą, której wiersze reprezentują wierzchołki, a kolumny - krawędzie grafu (jak na poniższym przykładzie).

R1UQe9iRYbAdS
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Wartość wyrazu wynosi 1 lub 0, w zależności od tego, czy krawędź jest incydentnaincydencjaincydentna z wierzchołkiem . Na powyższym grafie znajdziemy pięć wierzchołków i sześć krawędzi - zatem macierz incydencji będzie miała pięć wierszy i sześć kolumn. Pierwsza kolumna powyższej macierzy zawiera informację o tym, że w grafie istnieje krawędź , która łączy wierzchołek 0 i 2. Analogicznie interpretować można pozostałe kolumny macierzy.

Możemy zapisać, że macierz o rozmiarze  jest macierzą incydencji grafu, gdzie dla każdego wyrazu mamy:

- jeśli krawędź jest incydentna z wierzchołkiem . W przeciwnym razie:

Macierz incydencji jest tablicą . Wynika z tego, że jej złożoność pamięciowa wynosi zawsze O ( n m ), gdzie  to liczba wierzchołków grafu, a  to liczba jego krawędzi.

Reprezentacje innych typów grafów

Opisane sposoby reprezentacji grafów prostych można wykorzystać do reprezentacji grafów ważonych, grafów skierowanych czy multigrafów.

Wagi krawędzi

W zadaniach dotyczących problemu najkrótszych ścieżeknajkrótsza ścieżkanajkrótszych ścieżek (opisanego w e‑materiale Algorytm DijkstryP1F65HeHZAlgorytm Dijkstry) czy sieci maksymalnego przepływuproblem maksymalnego przepływusieci maksymalnego przepływu (o czym możesz przeczytać w e‑materiale Problem niezawodności sieciPJAfYLZPnProblem niezawodności sieci) istotną zmienną, którą należy wziąć pod uwagę, jest waga krawędzi. W zależności od zagadnienia, z jakim się mierzymy, wagi mogą reprezentować różne parametry, np. odległość między dwoma sąsiednimi wierzchołkami.

Wagi krawędzi to istotny parametr teorii grafów. Z tego względu należy określić pewien sposób reprezentacji, który umożliwia zapisanie w pamięci wszystkich wag krawędzi wraz z informacją o połączeniach między wierzchołkami. Okazuje się, że każdą z dotychczasowych reprezentacji można w łatwy sposób dostosować do naszych potrzeb.

  • Jeśli pewne dwa wierzchołki  oraz  połączone są krawędzią, to wyraz w macierzy sąsiedztwa jest równy wadze krawędzi, która je łączy. W wypadku, gdy wierzchołki  oraz nie są sąsiednie, wyraz  jest równy 0.

  • Lista sąsiadów wierzchołka w listach sąsiedztwa grafu zawiera pary postaci (j,w(i,j)), gdzie w(i,j) oznacza wagę krawędzi, która łączy wierzchołek z wierzchołkiem 

  • Jeśli w grafie istnieje krawędź ij o indeksie e i wadze w, to w macierzy incydencji wyrazy ai,e oraz aj,e są równe w, a wszystkie pozostałe wyrazy w kolumnie e mają wartość 0.

RSnY18u4yrAQJ
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Powyżej pokazano przykładowy graf z wagami krawędzi wraz z jego reprezentacjami. W grafie tym krawędź  łącząca wierzchołki 0 i 1 ma wagę 4:

  • W macierzy sąsiedztwa wyrazy  i  są równe 4.

  • W liście sąsiedztwa wierzchołka 0 znajduje się więc wierzchołek 1 z przypisaną wagą 4, a w liście sąsiedztwa wierzchołka 1 znajduje się wierzchołek 0, również z przypisaną wagą 4.

  • W macierzy incydencji w kolumnie  wartość 4 przypisana jest wierzchołkom 0 i 1.

Grafy skierowane

W grafie nieskierowanym krawędzie stanowią nieuporządkowaną parę pewnych dwóch wierzchołków oraz .

Sytuacja wygląda inaczej w przypadku grafów skierowanych. Wierzchołki takiego grafu połączone są za pomocą łuków, czyli krawędzi mających kierunek (krawędzi skierowanych). Łuk jest uporządkowaną parą wierzchołków , którą na rysunku grafu oznacza się strzałką.

Kolejność wierzchołków krawędzi skierowanej określa kierunek, w którym możemy przemieszczać się po grafie – oznacza to, że po krawędzi możemy przejść tylko od wierzchołka do . Odwrotny kierunek przemieszczania się jest niemożliwy. Krawędzie nie są więc traktowane jako ta sama krawędź.

Reprezentacje grafów skierowanych możemy zdefiniować następująco:

  • Wyraz w macierzy sąsiedztwa jest równy 1, jeśli istnieje krawędź od wierzchołka  do , lub równy 0, jeśli taka krawędź nie istnieje.

  • W listach sąsiedztwa wierzchołek znajduje się na liście wierzchołka , o ile istnieje krawędź skierowana od wierzchołka  do .

  • Jeśli w grafie istnieje krawędź skierowana o indeksie , to w macierzy incydencji wyraz jest równy 1, wyraz jest równy -1, a wszystkie pozostałe wyrazy w kolumnie mają wartość 0.

RrEK4SDMfs4B8
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Powyżej przedstawiono przykładowy graf skierowany wraz z jego reprezentacjami. W grafie tym krawędź  skierowana jest od wierzchołka 0 do wierzchołka 1.

  • W macierzy sąsiedztwa wyraz jest równy 1, a wyraz  jest równy 0.

  • W liście sąsiedztwa wierzchołka 0 znajduje się więc wierzchołek 1, ale w liście sąsiedztwa wierzchołka 1 nie ma wierzchołka 0.

  • W macierzy incydencji w kolumnie  wartość 1 jest przypisana wierzchołkowi 0, a wierzchołkowi 1 wartość -1.

Krawędzie wielokrotne i pętle

W bardziej złożonych problemach możemy spotkać się z pojęciem pętli i krawędzi wielokrotnej. Pętla to taka krawędź, która łączy dany wierzchołek z samym sobą. Krawędź wielokrotna natomiast to zbiór zwielokrotnionych krawędzi . Graf, który zawiera co najmniej jedną krawędź wielokrotną lub pętlę, nazywamy multigrafem.

Wiedząc już, jak zmieniają się postacie reprezentacji dla grafów ważonych i skierowanych, możemy scharakteryzować analogiczną zmianę dla multigrafów.

  • Każdy wyraz macierzy sąsiedztwa jest równy liczbie krawędzi łączących wierzchołki z wierzchołkiem . Pętlę wierzchołka zapisujemy wyrazem , który jest równy liczbie pętli tego wierzchołka.

  • W liście sąsiedztwa wierzchołka jest tyle wierzchołków sąsiednich , o ile zwielokrotniona jest krawędź łącząca wierzchołki  oraz . Jeśli istnieje pętla wierzchołka , to w liście wierzchołka powinno się znaleźć tyle wierzchołków , ile pętli ma ten wierzchołek.

  • Dla macierzy incydencji każda krawędź ma swój unikalny indeks, podobnie każdą krawędź zwielokrotnioną podpisujemy innym indeksem. Aby oznaczyć krawędź incydentną z wierzchołkiem , wyrazowi przypiszemy wartość 1. Jeśli krawędź jest pętlą wierzchołka , to w kolumnie jedynie wyraz ma wartość 1.

RFKYGG2NS6Ihp
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Powyżej przedstawiono przykładowy multigraf wraz z jego reprezentacjami. W grafie tym krawędzie  i  są pętlami incydentnymi z wierzchołkiem 0:

  • W macierzy sąsiedztwa wyraz  jest zatem równy 2.

  • W liście sąsiedztwa wierzchołka 0 dwukrotnie znajduje się więc wierzchołek 0.

  • W macierzy incydencji w kolumnach  wartość 1 przypisana jest wierzchołkowi 0.

Słownik

graf
graf

struktura składająca się z niepustego zbioru wierzchołków oraz rodziny krawędzi; dla grafu  zbiór wierzchołków oznaczamy jako (ang. verticies – wierzchołki) a zbiór krawędzi – (ang. edges – krawędzie); liczbę elementów zbioru  oznaczamy literą , zaś liczbę elementów zbioru  (oprac. na podst.: R. Wilson, Wprowadzenie do teorii grafów, PWN, Warszawa 2007)

graf spójny
graf spójny

graf, którego nie można przedstawić w postaci sumy dwóch grafów (oprac. na podst.: R. WilsonWprowadzenie do teorii grafów, PWN, Warszawa 2007)

incydencja
incydencja

relacja między dwoma wierzchołkami a łączącą je krawędzią; mówimy, że dwa sąsiednie wierzchołki połączone pewną krawędzią są incydentne z tą krawędzią

izomorfizm
izomorfizm

własność grafów mówiąca o tym, że liczba krawędzi łączących dane dwa wierzchołki jednego grafu jest równa liczbie krawędzi łączących odpowiadające im wierzchołki drugiego grafu (oprac. na podst.: R. WilsonWprowadzenie do teorii grafów, PWN, Warszawa 2007)

krawędź
krawędź

nieuporządkowana para (niekoniecznie różnych) elementów zbioru wierzchołków (oprac. na podst.: R. WilsonWprowadzenie do teorii grafów, PWN, Warszawa 2007)

najkrótsza ścieżka
najkrótsza ścieżka

ścieżka w grafie o najmniejszej sumie wag wszystkich krawędzi należących do ścieżki

problem maksymalnego przepływu
problem maksymalnego przepływu

problem polegający na wyznaczeniu maksymalnego przepływu sieci ze źródła do ujścia, biorąc pod uwagę ograniczenia związane z przepustowością każdej krawędzi

stopień wierzchołka
stopień wierzchołka

liczba krawędzi incydentnych z danym wierzchołkiem (oprac. na podst.: R. WilsonWprowadzenie do teorii grafów, PWN, Warszawa 2007)

wierzchołek
wierzchołek

element należący do zbioru wierzchołków (oprac. na podst.: R. Wilson, Wprowadzenie do teorii grafów, PWN, Warszawa 2007)