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

PYI_R_W14_M41B Reprezentacja grafów 

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

Grafy to jedna z najważniejszych struktur danych w informatyce, wykorzystywana do modelowania sieci społecznych, map drogowych, zależności między zadaniami i wielu innych problemów. 

Wiemy już, że każdy graf składa się z dwóch zbiorów: zbioru wierzchołków i zbioru krawędzi.  Ich implementacja wymaga przemyślenia, jak przechowywać wierzchołki i krawędzie, aby operacje były szybkie i efektywne. Wybór odpowiedniej struktury danych – macierzy sąsiedztwa, listy sąsiedztwa czy innych bardziej zaawansowanych reprezentacji – zależy od charakterystyki grafu, liczby wierzchołków, gęstości połączeń i rodzaju operacji, które będziemy wykonywać. W tym e‑materiale poznamy trzy najczęściej stosowane sposoby implementacji grafów – macierz sąsiedztwa, listę sąsiedztwa oraz macierz incydencji.

Ćwiczenie na rozgrzewkę:

Ćwiczenie 1
RE8FHFP25MPP8
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 oraz grafów ważonych.

  • Przeanalizujesz przykłady macierzy sąsiedztwa, listy sąsiedztwa i macierzy incydencji zapisane w języku Python.