RAMUR5P1ZVMRH
Fotografia przedstawia sieć połączeń przewodów.

I_R_W14_M41B_C++ Reprezentacja grafów

Źródło: Alina Grubnyak, domena publiczna.

Wiemy już, że każdy graf składa się z dwóch zbiorów: zbioru wierzchołków i zbioru krawędzi. Przechowywanie obu zbiorów w pamięci programu w postaci zwykłych tablic jest bardzo nieefektywne, ponieważ gdybyśmy chcieli sprawdzić, czy w grafie istnieje dana krawędź, trzeba by było przeszukać całą tablicę krawędzi. W niektórych algorytmach, gdzie sprawdzanie sąsiedztwa dwóch wierzchołków wykonuje się dość często, reprezentacja ta bardzo spowalniałaby program.

Aby tego uniknąć, wykorzystuje się znacznie efektywniejsze sposoby reprezentacji grafów. W tym e‑materiale poznamy trzy najczęściej stosowane – macierz sąsiedztwa, listę sąsiedztwa oraz macierz incydencji.

Ćwiczenie na rozgrzewkę

Ćwiczenie 1
RF7B3VUARXVJM
Zaznacz wszystkie zdania prawdziwe. Możliwe odpowiedzi: 1. Macierz sąsiedztwa musi być macierzą kwadratową., 2. Macierz incydencji w każdej kolumnie zawiera co najmniej dwa wyrazy wartości 0., 3. Macierz incydencji w każdej kolumnie zawiera co najmniej dwa wyrazy wartości 1., 4. Macierz incydencji może być macierzą kwadratową., 5. Macierz sąsiedztwa jest symetryczna., 6. W grafie, który zawiera pętlę macierzy sąsiedztwa, w każdym wierszu jest przynajmniej jeden wyraz równy 0.
Twoje cele
  • Scharakteryzujesz, czym są macierz sąsiedztwa, lista sąsiedztwa i macierz incydencji, oraz wyjaśnisz, jak za ich pomocą przedstawić dany graf.

  • Wskażesz zalety każdej z poznanych reprezentacji.

  • Przeanalizujesz reprezentacje grafów nieskierowanych i skierowanych, multigrafów oraz grafów ważonych.