Типы графов
Граф (graph) [1] представляет собой структуру данных, состоящую из узлов (называемых также вершинами графа, nodes, vertices) , некоторые из которых соединены рёбрами (связями, edges) .
Рассмотрим основные виды графов и их обобщения, а также описание геометрии графов в виде матриц смежности и матриц степеней.
Ненаправленный граф
В ненаправленном графе (или неориентированном, undirected graph) рёбра не имеют направления: если вершина соединена с , то симметрично соединена с .
Пример ненаправленного графа:

В нём 5 вершин и 5 ребер и .
Примеры данных, описываемых ненаправленным графом:
молекула, в которой узлами являются атомы, а рёбрами - химические связи;
электрические схемы, в которых узлами являются элементы схемы, а рёбрами - провода между ними;
социальная сеть, где узлами выступают пользователи, а рёбрами - отношения взаимной дружбы между ними;
туристическая карта, в которой узлами выступают локации, а рёбрами - пешеходные дороги между ними.
Направленный граф
В направленном графе (или ориентированном, directed graph) рёбра имеют направления. Для каждого ребра известно, из какой вершины оно выходит и в какую приходит.
Пример направленного графа приведён ниже:

Примеры данных, описываемых направленным графом:
социальная сеть, где узлами выступают пользователи, а рёбрами - их подписки на новости друг друга;
система передачи данных, где узлами обозначаются элементы системы, а рёбрами - потоки данных между ними;
автомобильная дорожная сеть, где узлами являются перекрёстки, а рёбрами - направления движения на дорогах.
Смешанный граф
Смешанный граф (mixed graph) содержит как направленные, так и ненаправленные рёбра.
Примеры да нных, описываемых смешанным графом:
транспортные сети, где узлами выступают перекрёстки, а рёбрами - связи односторонними и двусторонними дорогами;
энергетические системы, где узлами выступают станции перераспределения, генераторы и потребители, а связями - линии передачи энергии.
Далее, для простоты, будут рассматриваться только ненаправленные графы, хотя приводимые выводы можно обобщить и для направленных и смешанных графов.
Ассоциированные данные
Каждой вершине графа может быть сопоставлен свой -мерный вектор признаков :
Например, в социальной сети это могут быть характеристики пользователя.
Аналогично каждому ребру может сопоставляться свой вектор данных:
В графе социальной сети связи могут дополняться информацией, которую пользователи пересылают друг другу.
Также всему графу целиком может сопоставляться вектор данных , описывающий весь граф.
Графу, описывающему молекулярное соединение, может сопоставляться информация о физических и химических свойствах этого соединения.
Ниже приведён пример графа с визуализацией векторов данных, описывающих свойства вершин, рёбер и свойств всего графа целиком:

Чаще всего рассматриваются только данные, ассоциированные узлам, которые можно объединить в матрицу , в которой -му столбцу соответствует вектор , описывающий характеристики вершины .
Граф рёбер
По исходному графу можно построить сопряжённый граф рёбер (edge graph), в котором
-
каждая связь исходного графа становится узлом;
-
узлы сопряжённого графа соединяются, если соответствующие им рёбра имеют общий узел в исходном графе.
Пример (a) исходного графа (b) выделения рёбер в узлы и (c) сопряжённого графа рёбер приведён ниже:

По сопряжённому графу рёбер можно обратно восстановить исходный граф.
Мультиграфы
Существуют структуры данных, описываемые мультиграфами (multigraph), в которых узлы могут соединяться рёбрами разных типов, обозначенными в примере ниже цветом:

Примеры данных, описываемых мультиграфом:
социальная сеть, в которой узлы - пользователи, которые могут вступать в разные виды взаимодействия (ставить лайки, писать комментарии, подписываться друг на друга);
логистическая сеть, где узлы - локации, по которым можно перемещаться, используя разный вид транспорта (на автобусе, метро или самолёте).
Гетерогенные графы
Гетерогенные графы (heterogeneous graph) - это графы, состоящие из узлов разных типов. Ниже приведён пример гетерогенного мультиграфа, на котором узлы и рёбра разных типов обозначены различными цветами:

Примеры данных, описываемых гетерогенным графом:
торговая система, в которой узлами выступают пользователи, товары и продавцы, взаимодействующие друг с другом;
граф знаний, в котором узлами являются персоны, компании, страны и события, связанные друг с другом.
Матрица смежности
Рёбра графа из вершин описываются матрицей смежности (adjency matrix) .
Ненаправленный граф
Для ненаправленного графа элементы матрицы смежности формируются по правилу:
Рассмотрим граф:

Для него матрица смежности будет
Эта матрица будет симметричной (), поскольку если соединены ребром, то в ненаправленном графе ребром также будут соединены и .
Направленный граф
Для направленного графа элементы матрицы смежности формируются по правилу:
Рассмотрим граф:

Для него матрица смежности будет
Для направленного графа матрица смежности уже не обязательно будет симметричной.
Свойство матрицы смежности
Если - one-hot закодированная вершина , то
В общем случае, - число путей длины из вершины до всех других вершин графа. При этом в расчёте числа путей допускается посещение каждой вершины и проход по одному и тому же ребру несколько раз.
Минимальное , при котором -й элемент , будет длиной маршрута из в .
Матрица степеней
Также для графа рассматривают матрицу степеней (degree matrix) - диагональную матрицу , в которой равно числу связей -й вершины с другими вершинами. При этом для направленного графа различают матрицу степеней для входящих и исходящих рёбер.
Рассмотрим граф:

Для него матрица степеней будет
Важно понимать, что вершины в графе можно нумеровать в произвольном порядке: если их перенумеровать, то, по сути, это будет тот же самый граф, и модели, обрабатывающие графы, не должны зависеть от перенумерации вершин. Графы, эквивалентные с точностью до перенумерации вершин, называются изоморфными. Изоморфизму в графах посвящена следующая глава.
Далее мы рассмотрим, какие задачи можно решать на графах, изучим подходы к их решению, используя глубокое обучение, а потом разберём основной использующийся для этого нейросетевой метод - свёрточные графовые сети.