В теории графов и информатике матрица смежности — это квадратная матрица, используемая для представления конечного графа . Элементы матрицы указывают , являются ли пары вершин смежными или нет в графе.
В частном случае конечного простого графа матрица смежности является (0,1)-матрицей с нулями на диагонали. Если граф неориентированный (т.е. все его ребра двунаправленные), матрица смежности симметрична . Связь между графом и собственными значениями и собственными векторами его матрицы смежности изучается в спектральной теории графов .
Матрицу смежности графа следует отличать от ее матрицы инцидентности , другого матричного представления, элементы которого указывают, инцидентны ли пары вершина-ребро или нет, и ее матрицы степеней , которая содержит информацию о степени каждой вершины.
Для простого графа с множеством вершин U = { u 1 , …, u n } матрица смежности представляет собой квадратную матрицу A размером n × n , такую, что ее элемент A ij равен единице, когда есть ребро из вершины u i в вершину u j , и нулю, когда ребра нет. [1] Все диагональные элементы матрицы равны нулю, поскольку ребра из вершины в себя ( петли ) не допускаются в простых графах. Иногда в алгебраической теории графов полезно заменять ненулевые элементы алгебраическими переменными. [2] Эту же концепцию можно распространить на мультиграфы и графы с петлями, сохранив количество ребер между каждыми двумя вершинами в соответствующем элементе матрицы и разрешив ненулевые диагональные элементы. Петли можно подсчитывать либо один раз (как одно ребро), либо дважды (как два инцидента вершина-ребро), если соблюдается согласованное соглашение. Неориентированные графы часто используют второе соглашение, подсчитывая циклы дважды, тогда как ориентированные графы обычно используют первое соглашение.
Матрицу смежности A двудольного графа , две части которого имеют r и s вершин, можно записать в виде
где B — матрица r × s , а 0 r , r и 0 s , s представляют нулевые матрицы r × r и s × s . В этом случае меньшая матрица B однозначно представляет граф, а оставшиеся части A можно отбросить как избыточные. B иногда называют матрицей бисмежности .
Формально, пусть G = ( U , V , E ) — двудольный граф с частями U = { u1 , ..., ur } , V = { v1 , ..., vs } и ребрами E. Матрица бисмежности — это матрица B размером r × s 0–1, в которой b i , j = 1 тогда и только тогда , когда ( u i , v j ) ∈ E.
Если G — двудольный мультиграф или взвешенный граф , то элементы b i,j считаются равными числу ребер между вершинами или весу ребра ( u i , v j ) соответственно.
Матрица смежности ( a , b , c ) A простого графа имеет A i , j = a , если ( i , j ) является ребром, b , если это не так, и c на диагонали. Матрица смежности Зейделя является матрицей смежности (−1, 1, 0) . Эта матрица используется при изучении сильно регулярных графов и двумерных графов . [3]
Матрица расстояний имеет в позиции ( i , j ) расстояние между вершинами v i и v j . Расстояние — это длина кратчайшего пути, соединяющего вершины. Если длины ребер явно не указаны, длина пути — это количество ребер в нем. Матрица расстояний напоминает высокую степень матрицы смежности, но вместо того, чтобы сообщать только о том, соединены ли две вершины (т. е. матрица соединений, которая содержит булевы значения ), она дает точное расстояние между ними.
Соглашение, которому здесь следуют (для неориентированных графов), заключается в том, что каждое ребро добавляет 1 к соответствующей ячейке в матрице, а каждая петля (ребро от вершины к себе) добавляет 2 к соответствующей ячейке на диагонали в матрице. [4] Это позволяет легко найти степень вершины, взяв сумму значений либо в соответствующей строке, либо в соответствующем столбце в матрице смежности.
Матрица смежности ориентированного графа может быть асимметричной. Можно определить матрицу смежности ориентированного графа либо так, что
Первое определение обычно используется в теории графов и анализе социальных сетей (например, социологии, политологии, экономике, психологии). [5] Второе определение более распространено в других прикладных науках (например, динамических системах, физике, сетевой науке), где A иногда используется для описания линейной динамики на графах. [6]
Используя первое определение, входящие степени вершины можно вычислить, суммируя записи соответствующего столбца, а исходящие степени вершины — суммируя записи соответствующей строки. При использовании второго определения входящая степень вершины определяется соответствующей суммой строки, а исходящие степени определяются соответствующей суммой столбца.
Матрица смежности полного графа содержит все единицы, за исключением диагонали, где есть только нули. Матрица смежности пустого графа является нулевой матрицей .
Матрица смежности неориентированного простого графа симметрична , и поэтому имеет полный набор действительных собственных значений и ортогональный базис собственных векторов . Набор собственных значений графа — это спектр графа. [7] Собственные значения принято обозначать как
Наибольшее собственное значение ограничено сверху максимальной степенью. Это можно рассматривать как результат теоремы Перрона–Фробениуса , но это можно легко доказать. Пусть v — один собственный вектор, связанный с , а x — запись, в которой v имеет максимальное абсолютное значение. Без потери общности предположим, что v x положительно, так как в противном случае вы просто берете собственный вектор - v , также связанный с . Тогда
Для d -регулярных графов d является первым собственным значением A для вектора v = (1, …, 1) (легко проверить, что это собственное значение, и оно является максимальным из-за указанной выше границы). Кратность этого собственного значения является числом связных компонент G , в частности, для связных графов. Можно показать, что для каждого собственного значения его противоположность также является собственным значением A, если G является двудольным графом . [8] В частности, − d является собственным значением любого d -регулярного двудольного графа.
Разница называется спектральным зазором и связана с расширением G . Также полезно ввести спектральный радиус , обозначаемый . Это число ограничено . Эта граница точна в графах Рамануджана , которые имеют приложения во многих областях.
Предположим, что даны два ориентированных или неориентированных графа G 1 и G 2 с матрицами смежности A 1 и A 2. Графы G 1 и G 2 изоморфны тогда и только тогда, когда существует матрица перестановки P такая, что
В частности, A 1 и A 2 подобны и , следовательно, имеют одинаковый минимальный многочлен , характеристический многочлен , собственные значения , определитель и след . Поэтому они могут служить инвариантами изоморфизма графов. Однако два графа могут обладать одним и тем же набором собственных значений, но не быть изоморфными. [9] Такие линейные операторы называются изоспектральными .
Если A — матрица смежности ориентированного или неориентированного графа G , то матрица A n (т. е. матричное произведение n копий A ) имеет интересную интерпретацию: элемент ( i , j ) дает количество (направленных или ненаправленных) путей длины n от вершины i до вершины j . Если n — наименьшее неотрицательное целое число, такое, что для некоторых i , j элемент ( i , j ) A n положителен, то n — расстояние между вершиной i и вершиной j . Отличным примером того, как это полезно, является подсчет количества треугольников в неориентированном графе G , который представляет собой в точности след A 3 , деленный на 3 или 6 в зависимости от того, ориентирован граф или нет. Мы делим на эти значения, чтобы компенсировать пересчет каждого треугольника. В неориентированном графе каждый треугольник будет подсчитан дважды для всех трех узлов, потому что путь можно пройти по часовой стрелке или против часовой стрелки: ijk или ikj. Матрицу смежности можно использовать для определения того, является ли граф связным .
Если ориентированный граф имеет нильпотентную матрицу смежности (т.е. если существует n такое, что A n является нулевой матрицей), то это ориентированный ациклический граф . [10]
Матрица смежности может использоваться как структура данных для представления графов в компьютерных программах для манипулирования графами. Основной альтернативной структурой данных, также используемой для этого приложения, является список смежности . [11] [12]
Пространство, необходимое для представления матрицы смежности, и время, необходимое для выполнения операций над ними, зависят от матричного представления, выбранного для базовой матрицы. Разреженные матричные представления хранят только ненулевые записи матрицы и неявно представляют нулевые записи. Например, их можно использовать для представления разреженных графов без дополнительных затрат пространства на хранение множества нулевых записей в матрице смежности разреженного графа. В следующем разделе предполагается, что матрица смежности представлена структурой данных массива , так что нулевые и ненулевые записи все напрямую представлены в хранилище.
Поскольку каждая запись в матрице смежности требует только один бит, ее можно представить очень компактным способом, занимая всего | V | 2 / 8 байт для представления ориентированного графа или (используя упакованный треугольный формат и сохраняя только нижнюю треугольную часть матрицы) приблизительно | V | 2 / 16 байт для представления неориентированного графа. Хотя возможны немного более сжатые представления, этот метод приближается к информационной теоретико-нижней границе для минимального числа бит, необходимых для представления всех n -вершинных графов. [13] Для хранения графов в текстовых файлах можно использовать меньшее количество бит на байт, чтобы гарантировать, что все байты являются текстовыми символами, например, используя представление Base64 . [14] Помимо избежания неиспользуемого пространства, эта компактность способствует локальности ссылок . Однако для большого разреженного графа списки смежности требуют меньше места для хранения, поскольку они не тратят место на представление отсутствующих ребер . [12] [15]
Альтернативная форма матрицы смежности (которая, однако, требует большего объема пространства) заменяет числа в каждом элементе матрицы указателями на объекты ребер (когда ребра присутствуют) или нулевыми указателями (когда ребра нет). [15] Также возможно хранить веса ребер непосредственно в элементах матрицы смежности. [12]
Помимо компромисса по пространству, различные структуры данных также облегчают различные операции. Поиск всех вершин, смежных с заданной вершиной в списке смежности, так же прост, как чтение списка, и занимает время, пропорциональное количеству соседей. С матрицей смежности вместо этого необходимо сканировать всю строку, что занимает больше времени, пропорционального количеству вершин во всем графе. С другой стороны, проверка того, есть ли ребро между двумя заданными вершинами, может быть определена сразу с помощью матрицы смежности, при этом требуется время, пропорциональное минимальной степени двух вершин со списком смежности. [12] [15]