add_edge(v1, v2, graph)-时间复杂度
add_edge(v1, v2, graph)- time complexity
我需要构建一个图表并尝试决定如何构建(为了最小的时间复杂度)。
据我了解,有两种流行的方式来存储图表的数据:adjacency_list and adjacency_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
更便宜 — 在时间复杂度方面以及为什么?
我试图阅读 this 关于 add_edge
的时间复杂度的解释,但这个解释是关于 OutEdgeList
的。所以这让我很困惑。
add_edge
哪个型号更便宜,为什么?
所以我的问题是哪个数据库会使 add_edge 在时间复杂度方面更便宜,为什么?
与需要遍历附加到特定顶点的整个列表以添加边的邻接列表相比,它在矩阵中的速度更快( O(1) )。
我需要构建一个图表并尝试决定如何构建(为了最小的时间复杂度)。
据我了解,有两种流行的方式来存储图表的数据:adjacency_list and adjacency_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
更便宜 — 在时间复杂度方面以及为什么?
我试图阅读 this 关于 add_edge
的时间复杂度的解释,但这个解释是关于 OutEdgeList
的。所以这让我很困惑。
add_edge
哪个型号更便宜,为什么?
所以我的问题是哪个数据库会使 add_edge 在时间复杂度方面更便宜,为什么?
与需要遍历附加到特定顶点的整个列表以添加边的邻接列表相比,它在矩阵中的速度更快( O(1) )。