Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Data Structures and Algorithms in C++ 2e (На ру...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.37 Mб
Скачать

13.2. Структуры данных для графов 605

13.2.3 Структура матрицы смежности

Как смежность перечисляют структуру, структуру матрицы смежности графа также экс-

ухаживает за структурой списка края с дополнительным компонентом. В этом случае мы увеличиваем список края с матрицей (двумерное множество), который позволяет нам определить окрестности между парами вершин в постоянное время. В репутации матрицы смежности -

resentation, мы думаем о вершинах, как являющихся целыми числами в наборе0, 1..., n- 

и края, как являющиеся парами таких целых чисел. Это позволяет нам хранить ссылки на

края в клетках двумерного n n выстраивают A. Определенно, смежность

матричное представление расширяет структуру списка края следующим образом (см. рисунок 13.5):

• Объект вершины v хранит отличное целое число i в диапазоне 0, 1..., n- 1, названный

индекс v.

• Мы держим двумерный n n, выстраивают таким образом, что клетка [я, j] держу a

ссылка на край (v, w), если это существует, где v - вершина с индексом i и

w - вершина с индексом j. Если нет такого края, то [я, j] = пустой указатель.

(a)

(b)

Рисунок 13.5: (a) граф G ни с чем не сравнимые края. (b) Схематическое представление

упрощенная структура матрицы смежности для G.

606 Глава 13. Алгоритмы графа

Исполнение структуры матрицы смежности

Для графов с параллельными краями представление матрицы смежности должно быть экс-

ухаживаемый так, чтобы, вместо того, чтобы иметь [я, j] хранение указателя на связанный край (v, w), это сохранило указатель на коллекцию уровня I (v, w), который хранит все края от v до w. Так как большинство графов, которые мы рассматриваем, просто, мы не рассматриваем это осложнение здесь.

Матрица смежности A позволяет нам выполнять v.isAdjacentTo (w) в O (1) время. Это сделано, получив доступ к вершинам v и w, чтобы определить их соответствующие индексы i и j, и затем проверив, пустой ли [я, j]. Эффективности isAdjacentTo противодействует увеличение космического использования, однако, который является теперь O (n2), и в продолжительности других функций. Например, функция v.incidentEdges () теперь требует, чтобы мы исследовали весь ряд или колонку множества A, и таким образом управляет в O (n) временем. Кроме того, любые вставки вершины или удаления теперь требуют создающего совершенно нового множества A, большего или меньшего размера, соответственно, который берет O (n2) время.

Таблица 13.3 суммирует исполнение структуры матрицы смежности im-plementation графа. От этого стола мы замечаем, что смежность перечисляет struc-ture, превосходит матрицу смежности в космосе и выше как раз ко всем функциям за исключением функции isAdjacentTo.

Операция Время

вершины O (n)

края O (n2)

endVertices, напротив O (1) isAdjacentTo, isIncidentOn O (1)

incidentEdges O (n)

insertEdge, eraseEdge, O (1)

insertVertex, eraseVertex O (n2)

Таблица 13.3: Продолжительность для графа осуществлена с матрицей смежности.

Исторически, Булевы матрицы смежности были первыми представлениями, используемыми для графов (так, чтобы [я, j] = верный, если и только если (я, j) край). Мы не должны находить это удивление факта, однако, поскольку у матрицы смежности есть естественное обращение как математическая структура (например, у ненаправленного графа есть симметричная матрица смежности). Структура списка смежности прибыла позже, с ее естественным обращением в вычислении из-за ее более быстрых методов для большинства алгоритмов (много алгоритмов не используют функцию isAdjacentTo), и ее космическая эффективность.

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