Список смежности: различия между версиями
Перейти к навигации
Перейти к поиску
Содержимое удалено Содержимое добавлено
Создание страницы |
(нет различий)
|
Версия от 16:28, 4 июля 2016
Список смежности — один из способов представления графа в виде коллекции списков вершин. Каждый список содержит набор "соседей" вершины графа.
Особенности реализации
Граф на картинке наверху имеет следующий список смежности: | ||
a | смежно к | b, c |
b | смежно к | a,c |
c | смежно к | a,b |
Есть несколько вариаций представление графа списком смежности, отличающиеся особенностями ассоциация вершины и коллекции соседей, реализацией коллекций, включаются ли грани и вершины в коллекции соседей или только вершины, способами представления граней и вершин.
- Реализация предложенная Гвидо ван Россумом использует хэш-таблицу для ассоциации каждой вершины со списком смежных вершин. Нет явного представления граней в этой структуре.
- Кормен и другие предложили реализацию в которой вершины представлены числовым индексом в массиве, в котором каждая ячейка массива ссылается на однонаправленный связанный список соседних вершин.[5]
- Объектно ориентированный список смежности предложенный Гудричем и Таммасией содержит специальные классы вершин и граней. Каждый объект вершины содержит ссылку на коллекцию граней. Каждый объект грани содержит ссылки на исходящую и входящую вершину.[6]
Сравнение с матрицей смежности
Сравнение с матрицей смежности | ||
Операция | Список смежности | Матрица смежности |
Проверка на наличие грани (x,y) | ||
Определение степени вершины | ||
Использование памяти для разреженных графов | ||
Вставка/удаление грани | ||
Обход графа |
Ссылки
- ↑ Гвидо ван Россум. Python Patterns — Implementing Graphs (1998).
- ↑ Multimap at guava .
- ↑ Контейнер Multimap в языке c++ на основание бинарного дерева .
- ↑ Контейнер Multimap в языке c++ на хэш таблицы .
- ↑ Thomas H. Cormen. Introduction to Algorithms, Second Edition / Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest … [и др.]. — MIT Press and McGraw-Hill, 2001. — P. 527–529 of section 22.1: Representations of graphs. — ISBN 0-262-03293-7.
- ↑ Michael T. Goodrich and Roberto Tamassia. Algorithm Design: Foundations, Analysis, and Internet Examples. — John Wiley & Sons, 2002. — ISBN 0-471-38365-1.
- ↑ Steven Skiena. Тhe Algorithm Design Manual (2nd ed.). — 2010. — P. 152 of section 5.2: Data Structures for Graphs. — ISBN 0-387-00163-8.