6.1 Матриця суміжності: принцип роботи, плюси і мінуси.
Матриця суміжності — це спосіб представлення графа у вигляді квадратної матриці розміром n x n, де n — кількість вершин у графі. Елементи матриці вказують на наявність або відсутність ребер між вершинами:
- Якщо існує ребро між вершинами
iіj, то елементA[i][j] = 1(або вага ребра, якщо граф зважений). - Якщо ребра немає, то
A[i][j] = 0.
Приклад:
Для графа з вершинами A, B, C і ребрами (A, B), (B, C) і (C, A) матриця суміжності буде:
Якби всі вершини були з'єднані з усіма, то матриця суміжності виглядала б ось так:
Плюси:
- Простота: легко зрозуміти і реалізувати.
- Швидкий доступ: перевірка наявності ребра між двома вершинами виконується за
O(1). - Підходить для щільних графів: ефективний для графів з великою кількістю ребер.
Мінуси:
- Високі витрати пам'яті: потребує
O(n^2)пам'яті, навіть якщо граф містить мало ребер (рідкий граф). - Неефективність для рідких графів: при великій кількості вершин і малій кількості ребер більшість елементів матриці будуть нулями, що призводить до неефективного використання пам'яті.
6.2 Списки суміжності: принцип роботи, плюси і мінуси.
Списки суміжності — це спосіб представлення графа у вигляді масиву списків. Кожен елемент масиву відповідає вершині графа і містить список всіх суміжних з нею вершин.
Приклад:
Для графа з вершинами A, B, C і ребрами (A, B), (B, C) і (C, A) списки суміжності будуть:
Якби всі вершини були з'єднані з усіма, то списки суміжності виглядали б ось так:
Плюси:
- Ефективне використання пам'яті: потребує
O(V + E)пам'яті, деV— кількість вершин,E— кількість ребер, що робить його більш підходящим для рідких графів. - Легкість обходу: зручний для виконання операцій обходу графа (наприклад, пошук в ширину або в глибину).
Мінуси:
- Більш складний доступ: перевірка наявності ребра між двома вершинами потребує
O(k)часу, деk— кількість сусідів вершини. - Менш очевидна структура: більш складний у реалізації та розумінні порівняно з матрицею суміжності.
6.3 Порівняння різних методів представлення графів.
Давайте порівняємо різні методи представлення графів.
1. Матриця суміжності:
- Простота: легко зрозуміти і реалізувати.
- Пам'ять: потребує
O(n^2)пам'яті, що може бути неефективним для рідких графів. - Швидкість доступу: перевірка наявності ребра виконується за
O(1). - Підходить: для щільних графів з великою кількістю ребер.
2. Списки суміжності:
- Простота: менш очевидні, ніж матриця суміжності, але також зрозумілі.
- Пам'ять: потребують
O(V + E)пам'яті, що більш ефективно для рідких графів. - Швидкість доступу: перевірка наявності ребра виконується за
O(k), деk— кількість сусідів вершини. - Підходять: для рідких графів з малою кількістю ребер.
Порівняння:
Матриця суміжності краще підходить для щільних графів, де більшість вершин з'єднані ребрами, оскільки забезпечує швидкий доступ до інформації про ребра і проста у реалізації.
Списки суміжності більш підходящі для рідких графів, де кількість ребер значно менша, ніж кількість можливих пар вершин. Вони забезпечують ефективне використання пам'яті та зручні для виконання операцій обходу графа.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ