add_edge(v1,v2,graph) - 时间复杂度

时间:2015-04-22 12:40:40

标签: c++ boost

我需要构建一个图表并尝试决定如何(最小时间复杂度)。

根据我的理解,有两种常用的方法来存储图表的数据:adjacency_listadjacency_matrix

图表的声明是(例如,未定向):

typedef adjacency_list <vecS, vecS, undirectedS> UGraph; // In case of adjacency_list

typedef adjacency_matrix<undirectedS> UGraph; // In case of adjacency_matrix

两种情况都使用函数add_edge(v1,v2,UGraph)在两个顶点之间添加边。

所以我的问题是哪种模型会使add_edge更便宜 - 时间复杂的方式和原因?

我尝试阅读有关add_edge时间复杂度的this解释,但此解释是关于OutEdgeList。所以它让我很困惑。

add_edge哪个型号的价格更便宜?为什么?

1 个答案:

答案 0 :(得分:0)

所以我的问题是哪个数据库会使add_edge变得更便宜 - 时间复杂度和原因?

与邻接列表相比,矩阵中的速度更快(O(1)),在邻接列表中,您需要遍历附加到特定顶点的整个列表以添加边缘。