关于Graph顺序表达式的数据结构

时间:2017-09-11 13:26:17

标签: c++ arrays data-structures graph

您好我已经阅读了有关图表的顺序表达但我无法理解数组元素的元素。

这本书说:

graph G4's

顺序表达式如下。enter image description here

我想知道如何获取每个数组的元素。

这本书也说,

  

node [i]是顶点的起点,node [n](n是顶点,e是edge)由n + 2e + 1设置。

     

Vertex' i'相邻的顶点保存在node [i] ... node [i + 1] -1

我无法理解这句话的意思。

2 个答案:

答案 0 :(得分:0)

它表示所有顶点都存储在node中。该顶点i存储在node[i]中。如果你想要顶点3,你可以使用node[3]

答案 1 :(得分:0)

扩大Eduard的答案(这是正确但可能过于简洁):

在此表示中,第一个n数组值用作其余数据的索引。让我们假设您希望获得节点1的连接:您读取nodes[1] == 11 - 这是节点1邻接的偏移,类似nodes[2] == 13 - 节点2的偏移量邻接,因此nodes[11]到(但不包括)nodes[13]的值是节点1的邻居的索引 - 在这种情况下,[3, 0]

请注意,nodes[8] == 23是超出nodes大小的额外值,表示偏移存储的结束。这允许访问任意节点i的邻接为nodes[nodes[i]] .. nodes[nodes[i+1]-1] - 这在C / C ++循环中自然表达。

类似但可以说更经常使用的格式是Compressed Sparse Row,其中nodes的两个部分(偏移和邻接列表)存储为两个单独的数组。