Открыть сервис

Матрица смежности

Матрица смежности — это один из способов представления графа в виде квадратной таблицы, где строки и столбцы соответствуют вершинам графа, а элемент на пересечении i-й строки и j-го столбца указывает на наличие или отсутствие ребра между вершинами i и j. Матрица смежности является фундаментальным понятием теории графов и широко используется в компьютерных науках, дискретной математике, анализе сетей и других областях, где требуется компактное и удобное для алгоритмической обработки описание структуры связей.

Определение и формальное описание

Пусть дан граф \( G = (V, E) \), где \( V \) — множество вершин, а \( E \) — множество рёбер. Матрица смежности \( A \) — это квадратная матрица размера \( |V| \times |V| \), в которой элемент \( a_{ij} \) определяется следующим образом:

  • Для невзвешенного графа: \( a_{ij} = 1 \), если существует ребро, соединяющее вершины \( i \) и \( j \); и \( a_{ij} = 0 \) в противном случае.
  • Для взвешенного графа: \( a_{ij} \) равен весу ребра между вершинами \( i \) и \( j \); если ребра нет, то \( a_{ij} = 0 \) или специальное значение (например, бесконечность), в зависимости от контекста.
  • Для неориентированного графа матрица симметрична относительно главной диагонали: \( a_{ij} = a_{ji} \).
  • Для ориентированного графа (орграфа) матрица, как правило, несимметрична: \( a_{ij} = 1 \) означает наличие дуги от вершины \( i \) к вершине \( j \).

В случае мультиграфа, где между двумя вершинами может быть несколько рёбер, элемент \( a_{ij} \) может быть равен числу таких рёбер. Для графов с петлями (ребро, соединяющее вершину саму с собой) элемент \( a_{ii} \) может быть равен 1 или числу петель.

Свойства

Матрица смежности обладает рядом важных свойств, которые делают её удобным инструментом для анализа графов:

  • Симметричность: для неориентированных графов матрица всегда симметрична.
  • След матрицы: след матрицы (сумма элементов на главной диагонали) равен удвоенному числу петель в графе (для неориентированных графов) или числу петель (для ориентированных).
  • Степень вершины: в неориентированном графе степень вершины \( i \) равна сумме элементов i-й строки (или i-го столбца). В ориентированном графе полустепень исхода равна сумме i-й строки, а полустепень захода — сумме i-го столбца.
  • Степени матрицы: элемент \( (A^k)_{ij} \) матрицы \( A^k \) (k-я степень матрицы смежности) равен числу путей длины \( k \) от вершины \( i \) к вершине \( j \). Это свойство широко используется в алгоритмах поиска путей и анализа связности.
  • Собственные значения и векторы: спектр матрицы смежности (набор собственных значений) связан с такими характеристиками графа, как его регулярность, число компонент связности, наличие клик и другие. Спектральная теория графов опирается на анализ собственных значений матрицы смежности.
  • Связь с матрицей Лапласа: матрица Лапласа графа определяется как \( L = D - A \), где \( D \) — диагональная матрица степеней вершин. Матрица Лапласа используется для изучения связности, разреза графа и в спектральной кластеризации.

Виды и варианты

Матрица смежности может быть модифицирована для различных типов графов и задач:

  • Взвешенная матрица смежности: вместо 0 и 1 содержит веса рёбер. Используется для представления сетей с расстояниями, пропускными способностями, стоимостью и т.д.
  • Матрица смежности для мультиграфов: элемент \( a_{ij} \) равен числу параллельных рёбер между вершинами.
  • Матрица инцидентности: альтернативное представление графа, где строки соответствуют вершинам, а столбцы — рёбрам. В отличие от матрицы смежности, она не является квадратной.
  • Список смежности: более компактное представление для разреженных графов, где для каждой вершины хранится список смежных с ней вершин. Матрица смежности, напротив, эффективна для плотных графов.

Применение

Матрица смежности находит применение в самых разных областях:

  • Компьютерные науки: реализация алгоритмов на графах (поиск в ширину и глубину, алгоритм Дейкстры, алгоритм Флойда — Уоршелла, алгоритм Прима и Краскала). Матричное представление позволяет использовать эффективные библиотеки линейной алгебры (например, BLAS, LAPACK) для ускорения вычислений.
  • Анализ социальных сетей: матрица смежности описывает связи между пользователями. Анализ её спектра позволяет выявлять сообщества, центральные узлы и структуру сети.
  • Транспортные и логистические сети: представление карт дорог, маршрутов авиаперелётов, электрических сетей. Взвешенная матрица смежности используется для расчёта кратчайших путей и оптимальных потоков.
  • Биоинформатика: моделирование взаимодействий белков, метаболических путей, нейронных сетей. Матрица смежности позволяет анализировать структуру биологических систем.
  • Теория кодирования и связь: графы состояний кодеров, коды с исправлением ошибок.
  • Химия: представление молекулярных структур, где вершины — атомы, а рёбра — химические связи. Матрица смежности используется для вычисления индексов подобия и прогнозирования свойств.

Преимущества и недостатки

Преимущества

  • Простота реализации и интуитивность.
  • Возможность проверки наличия ребра за время \( O(1) \) (доступ к элементу по индексу).
  • Удобство для выполнения матричных операций (сложение, умножение, возведение в степень).
  • Эффективность для плотных графов, где число рёбер близко к \( |V|^2 \).

Недостатки

  • Высокая потребность в памяти: \( O(|V|^2) \), что делает её непригодной для очень больших разреженных графов (например, веб-граф с миллиардами вершин).
  • Для разреженных графов (где число рёбер \( |E| \ll |V|^2 \)) хранение матрицы приводит к значительному расходу памяти на нулевые элементы.
  • Операции перебора всех соседей вершины требуют \( O(|V|) \) времени, что может быть неэффективно по сравнению со списками смежности.

Пример

Рассмотрим неориентированный граф с тремя вершинами (1, 2, 3) и рёбрами: между 1 и 2, между 2 и 3. Матрица смежности \( A \) будет иметь вид:

\[ A = \begin{pmatrix} 0 & 1 & 0 \\ 1 & 0 & 1 \\ 0 & 1 & 0 \end{pmatrix} \]

Здесь \( a_{12} = a_{21} = 1 \), \( a_{23} = a_{32} = 1 \), остальные элементы равны 0. Степени вершин: вершина 1 — 1, вершина 2 — 2, вершина 3 — 1. Квадрат матрицы \( A^2 \) даёт число путей длины 2: например, \( (A^2)_{13} = 1 \) (путь 1-2-3).

Альтернативные представления

Помимо матрицы смежности, существуют другие распространённые способы представления графов:

  • Список смежности: для каждой вершины хранится список её соседей. Эффективен по памяти для разреженных графов, но проверка наличия ребра может занимать \( O(\deg(v)) \) времени.
  • Матрица инцидентности: размер \( |V| \times |E| \), где элемент равен 1, если вершина инцидентна ребру. Используется реже из-за больших размеров.
  • Рёберный список: простое перечисление всех рёбер в виде пар вершин. Компактен, но неудобен для быстрого доступа.

Выбор представления зависит от плотности графа, требуемых операций и доступной памяти.

Источники

  • Харари Ф. Теория графов. — М.: Мир, 1973.
  • Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгоритмы: построение и анализ. — 3-е изд. — М.: Вильямс, 2013.
  • Дистель Р. Теория графов. — Новосибирск: Изд-во Института математики, 2002.
  • Богарт К. П., Штейн К. Дискретная математика для компьютерных наук. — М.: Бином, 2015.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →