Перейти к основному содержимому

Типы графов

Граф (graph) [1] представляет собой структуру данных, состоящую из узлов (называемых также вершинами графа, nodes, vertices) V={v1,v2,...vN}V=\{v_1,v_2,...v_N\}, некоторые из которых соединены ребрами (связи, edges) E={(vi,vj)}i,j соединеныE=\{(v_i,v_j)\}_{i,j\text{ соединены}}.

Каждому узлу графа viv_i соответствует набор соседних узлов, соединённых ребром с viv_i. Множество индексов соседних вершин вершины viv_i будем обозначать N(i)\mathcal{N}(i).

Рассмотрим основные виды графов и их обобщения, а также описание геометрии графов в виде матриц смежности и матриц степеней.

Ненаправленный граф

В ненаправленном графе (или ориентированном, directed graph) рёбра не имеют направления.

Пример ненаправленного графа приведён ниже:

На нём 5 вершин и 5 ребер (v1,v2),(v2,v4),(v4,v3),(v4,v1)(v_1,v_2),(v_2,v_4),(v_4,v_3),(v_4,v_1) и (v4,v5)(v_4,v_5).

Примеры данных, описываемых ненаправленным графом:

  • молекула, в которой узлами являются атомы, а рёбрами - химические связи;

  • электрические схемы, в которых узлами являются элементы схемы, а рёбрами - провода между ними;

  • социальная сеть, где узлами выступают пользователи, а рёбрами - отношения взаимной дружбы между ними;

  • туристическая карта, в которой узлами выступают локации, а рёбрами - тропинки между ними.

Направленный граф

В направленном графе (или ориентированном, directed graph) рёбра имеют направления. Для каждого ребра известно, из какой вершины оно выходит и в какую приходит.

Пример направленного графа приведён ниже:

Примеры данных, описываемых ненаправленным графом:

  • социальная сеть, где узлами выступают пользователи, а рёбрами - их подписки на новости друг друга;

  • система передачи данных, где узлами выступают элементы системы, а рёбрами описываются потоки данных между ними;

  • логистическая сеть, где узлами являются перекрёстки, а узлами - направления движения на дорогах.

Смешанный граф

Смешанный граф (mixed graph) содержит как направленные, так и ненаправленные рёбра.

Примеры данных, описываемых смешанным графом:

  • транспортные сети, где узлами выступают перекрёстки, а рёбрами - связи односторонними и двусторонними дорогами;

  • энергетические системы, где узлами выступают станции перераспределения, генераторы и потребители, а связями - линии передачи энергии.

Далее, для простоты, будут рассматриваться только ненаправленные графы, хотя приводимые выводы можно обобщить и для направленных и смешанных графов.

Ассоциированные данные

Каждой вершине графа viv_i может быть сопоставлен свой DD-мерный вектор признаков xix_i:

vihiRD.v_i \to \mathbf{h}_i \in \mathbb{R}^D.

Аналогично каждому ребру может сопоставляться свой вектор данных:

cjejRDec_j \to \mathbf{e}_j \in \mathbb{R}^{D_e}

Также всему графу целиком может сопоставляться вектор данных gRDg\mathbf{g}\in\mathbb{R}^{D_g}, описывающих весь граф.

Визуально это можно представить следующим образом:

Чаще всего рассматриваются только данные, ассоциированные узлам, которые можно объединить в матрицу H=[h1,...hN]RD×NH=[\mathbf{h}_1,...\mathbf{h}_N]\in\mathbb{R}^{D\times N}, в которой jj-му столбцу соответствует вектор данных xj\mathbf{x}_j, соответствующий узлу vjv_j.

Граф ребёр

По исходному графу можно построить сопряжённый граф рёбер (edge graph), в котором

  • каждая связь исходного графа становится узлом;

  • узлы сопряжённого графа соединяются, если соответствующие им рёбра имеют общий узел в исходном графе.

Пример (a) исходного графа (b) выделения рёбер в узлы и (c) сопряжённого графа рёбер приведён ниже [2]:

По сопряжённому графу рёбер можно обратно восстановить исходный граф.

Мультиграфы

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

Примеры данных, описываемых мультиграфом:

  • социальная сеть, в которой узлы - пользователи, которые могут вступать в разные виды взаимодействия (ставить лайти, писать комментарии, подписываться друг на друга);

  • логистическая сеть, где узлы - локации, по которым можно перемещаться, используя разный вид транспорта (на автобусе, метро, на самолёте).

Гетерогенные графы

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

Примеры данных, описываемых гетерогенным графом:

  • торговая система, в которой узлами выступают пользователи, товары и продавцы, взаимодействующие друг с другом;

  • граф знаний, в котором узлами являются персоны, компании, страны и события, связанные друг с другом.

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

Рёбра графа из NN вершин описываются матрицей смежности (adjency matrix) ARN×NA\in\mathbb{R}^{N \times N}.

Ненаправленный граф

Для ненаправленного графа элементы матрицы смежности формируются по правилу:

aij={1, если vi и vj соединены ребром,0, иначе.a_{ij}= \begin{cases} 1, & \text{ если $v_i$ и $v_j$ соединены ребром,} \\ 0, & \text{ иначе.} \end{cases}

Рассмотрим граф:

Для него матрица смежности будет

A=(0110010010100100110100010)A=\left(\begin{array}{ccccc} 0 & 1 & 1 & 0 & 0\\ 1 & 0 & 0 & 1 & 0\\ 1 & 0 & 0 & 1 & 0\\ 0 & 1 & 1 & 0 & 1\\ 0 & 0 & 0 & 1 & 0 \end{array}\right)

Эта матрица будет симметричной (A=ATA=A^T), поскольку если (vi,vj)(v_i,v_j) соединены ребром, то в ненаправленном графе ребром соединены и (vj,vi)(v_j,v_i).

Направленный граф

Для направленного графа элементы матрицы смежности формируются по правилу:

aij={1, если ребро выходит из vj в vi,0, иначе.a_{ij}= \begin{cases} 1, & \text{ если ребро выходит из $v_j$ в $v_i$,} \\ 0, & \text{ иначе.} \end{cases}

Рассмотрим граф:

Для него матрица смежности будет

A=(0010010010000000010000010)A=\left(\begin{array}{ccccc} 0 & 0 & 1 & 0 & 0\\ 1 & 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 1 & 0 & 0\\ 0 & 0 & 0 & 1 & 0 \end{array}\right)

Как видим, для направленного графа матрица смежности уже не будет симметричной.

Свойство матрицы смежности

Если oi\mathbf{o}_i - one-hot закодированная вершина viv_i, то

Aoi- число путей длины 1 до вершин из viAAoi- число путей длины 2 до вершин из viAAAoi- число путей длины 3 до вершин из vi\begin{aligned} A \cdot \mathbf{o}_{i} & \text{- число путей длины 1 до вершин из }v_{i}\\ A \cdot A\cdot\mathbf{o}_{i} & \text{- число путей длины 2 �до вершин из }v_{i}\\ A \cdot A\cdot A\cdot\mathbf{o}_{i} & \text{- число путей длины 3 до вершин из }v_{i}\\ \cdots & \cdots \end{aligned}

В общем случае, AnoiRNA^n\cdot\mathbf{o}_{i} \in\mathbb{R}^{N} - число путей длины nn из вершины viv_i до всех других вершин графа. При этом в расчёте числа путей допускается посещение каждой вершины и проход по одному и тому же ребру несколько раз.

Минимальное nn, при котором jj-й элемент {Anoi}j>0\{A^n\cdot\mathbf{o}_{i}\}_j>0 будет длиной маршрута из viv_i в vjv_j.

Матрица степеней

Также для графа рассматривают матрицу степеней (degree matrix) - диагональную матрицу DRN×ND\in\mathbb{R}^{N\times N}, в которой diid_{ii} равно

  • числу соседей вершины viv_i для ненаправленного графа,

  • числу входящих либо исходящих рёбер для направленного графа.

Рассмотрим граф:

Для него матрица степеней будет

D=(2000002000002000003000001),D=\left(\begin{array}{ccccc} 2 & 0 & 0 & 0 & 0\\ 0 & 2 & 0 & 0 & 0\\ 0 & 0 & 2 & 0 & 0\\ 0 & 0 & 0 & 3 & 0\\ 0 & 0 & 0 & 0 & 1 \end{array}\right),

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

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

Литература

  1. Граф (wikipedia).
  2. Prince S. J. D. Understanding deep learning. – MIT press, 2023.