2016-09-20 4 views

ответ

2

В списках смежности хранится список примыканий.

То есть, для каждого вершины хранится список смежных вершин.

Это означает, что вершины могут храниться в одном контейнере, но каждая вершина содержит собственный (отдельный) контейнер смежности («другие ссылки вершин»).

Это должно объяснить: нет такой вещи как «краевой контейнер», что делает невозможным непосредственное обращение к краям по индексу или как один соседний контейнер.

Примечание есть и другие модели графа (например, EdgeList понятие, как моделируется edge_list)

+0

Большое спасибо @sehe для объяснения. Что меня отличает, это нечто вроде boost: adjacency_list , где вектор используется как контейнер для ребер. Документ BGL [здесь] (http://www.boost.org/doc/libs/1_61_0/libs/graph/doc/using_adjacency_list.html) дает больше разъяснений - ** Контейнеры, используемые для списков ребер, должны либо удовлетворять требованиям для последовательности или для AssociativeContainer ** while ** Контейнер должен моделировать Sequence или RandomAccessContainer ** для _VertexList_. – Curious

+0

Вещь, селектор контейнера Edge используется один раз на вершину :) Обратите внимание, что это/not/требуется при моделировании EdgeList, но это способ, которым был создан adjacency_list <>. – sehe

+0

Извините, так как это должен быть вопрос новичков, поэтому для представления adjacency_list ребра хранятся в векторе векторов для чего-то вроде этого: boost: adjacency_list '? – Curious