10.2. Представление графа в памяти компьютера

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

Рассмотрим такой способ хранения графа, как матрица смежности. Матрица смежности представляет собой матрицу, где по строкам и столбцам располагаются номера вершин. Если рёбра между вершинами отсутствует, то на пересечении -ой строки и -ого столбца ставится 0. Если ребро есть, то ставят 1. Пример графа и его матрицы смежности приведён на рисунке ниже.

algosy

💡 Остановитесь и подумайте:
Всегда ли матрица смежности для неориентированного графа симметрична?

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

algosy

Также при работе с графами применяется и матрица инцидентности. По столбцам располагаются рёбра, а по строкам номера вершин. На пересечении -ой вершины и -ого ребра ставится 1, если одним из концов ребра была вершина . Пример приведён ниже.

algosy

В случае ориентированного графа матрица инцидентности не сильно меняется, за исключением того, что на пересечении -ой вершины и -ого ребра ставится 1, когда дуга входит в вершину и -1, когда выходит.

algosy

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

algosy

В случае ориентированного графа список смежности выглядит аналогичным образом.

algosy

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

algosy

✒️ Упражнение:
Подумайте, а какой вариант хранения графа в памяти компьютера самый оптимальный. Почему?

Отмечайте параграфы как прочитанные чтобы видеть свой прогресс обучения

Вступайте в сообщество хендбука

Здесь можно найти единомышленников, экспертов и просто интересных собеседников. А ещё — получить помощь или поделиться знаниями.
Вступить
Сообщить об ошибке
Предыдущий параграф10.1. Природа графа
Следующий параграф10.3. Обходы графа