我有一个无向图,其中节点存储在平面数组中。现在,我正在寻找边缘的数据结构。为了获得给定节点的所有边缘,它应该具有恒定的时间复杂度。一条边包含两个节点索引和其他信息,例如权重。

我看到的唯一方法是复制数据,一种按左节点排序,另一种按右节点排序。

vector<vector<int>> left, right;


但我想避免重复边缘。

最佳答案

听起来您只需要adjacency list表示形式。

在此表示中,每个节点将存储其所有连接边的列表。

对于无向图,可以让每个端点都存储边。

确实没有一种方法可以在恒定时间内不重复地获取节点的连接边。但是您可以只存储指向实际边缘的指针,引用或唯一ID(例如,可以是边缘数组中的索引),从而无需实际浮动2个副本。

关于c++ - 具有恒定时间复杂度的无向图边的数据结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20869292/

10-12 19:14