Список смежности

Материал из testwiki
Версия от 10:49, 4 декабря 2024; imported>Гриня12 (Ссылки: + шаблон)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску
Этот цикличный ненаправленный граф может быть описан тремя списками Шаблон:Nowrap}, Шаблон:Nowrap}, Шаблон:Nowrap}.

Список смежности — один из способов представления графа в виде коллекции списков вершин. Каждой вершине графа соответствует список, состоящий из «соседей» этой вершины.

Особенности реализации

Граф на картинке наверху имеет следующий список смежности:
a смежно к b, c
b смежно к a, c
c смежно к a, b

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

  • Реализация, предложенная Гвидо ван Россумом, использует хеш-таблицу для ассоциации каждой вершины со списком смежных вершин. Нет явного представления рёбер в этой структуре[1][2].
  • Кормен и другие предложили реализацию, в которой вершины представлены числовым индексом в массиве, в котором каждая ячейка массива ссылается на однонаправленный связанный список соседних вершин.[3]
  • Объектно-ориентированный список смежности, предложенный Шаблон:Нп3 и Шаблон:Нп3, содержит специальные классы вершин и рёбер. Каждый объект вершины содержит ссылку на коллекцию рёбер. Каждый объект ребра содержит ссылки на исходящую и входящую вершины.[4]

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

Шаблон:Mainref

Сравнение с матрицей смежности
Операция Список смежности Матрица смежности
Проверка на наличие ребра (x,y) O(|V|) O(1)
Определение степени вершины O(1) O(|V|)
Использование памяти для разреженных графов O(|V|+|E|) O(|V|2)
Вставка/удаление граниШаблон:Нет АИ O(1) O(d)
Обход графа O(|V|+|E|) O(|V|2)

Ссылки

Шаблон:Примечания

Шаблон:Представления графов