我想使用boost中的并行MST算法dense_boruvka_minimum_spanning_tree。
该算法界面的一个必需参数是“必须是顶点列表图和分布式边缘列表图”模型的图形。我发现the only model包含分布式边缘列表图概念的Distributed Adjacency List是"Graph Concepts"。但是在该模型的{{3}}部分中明确说明了
“[...]分布式邻接列表不会对顶点列表图建模或边缘列表图概念[...]
(由我强调)
此时我很困惑。我应该将数据结构传递给一个不是由框架提供的boost算法的接口?我误解了什么吗?
注意:我在推动世界中相当新鲜。
答案 0 :(得分:1)
解决方案似乎是" VertexListAdaptor":http://www.boost.org/doc/libs/1_47_0/libs/graph_parallel/doc/html/vertex_list_adaptor.html
答案 1 :(得分:1)
Boost图提供了围绕概念的通用算法,并且历史上包含很少的图概念模型。人们通常会将他们的图表放在他们可以适应的现有数据结构中。
从这个角度来看
此时我很困惑。我应该将数据结构传递给一个不是由框架提供的boost算法的接口?
甚至都不那么奇怪。
DistributedAdjacencyList的概念仅在您需要DistributedVertexListGraph时提供VertexListGraph。
主要区别在DVLG下突出显示:
分布式顶点列表图是一种图,其顶点分布在多个进程或地址空间中。
vertices
和num_vertices
函数保留与顶点列表图概念中相同的签名,但仅返回顶点的局部集(和本地集的大小)。
换句话说:DVLG实际上只是一个VLG,只是分发。
你想要做的是" undistribute" DVLG使用VertexListAdaptor:
顶点列表图形适配器适应顶点列表图中的任何分布式顶点列表图模型。在前一种类型的图形中,顶点集分布在整个进程组中,因此没有进程可以访问所有顶点。但是,在后一种类型的图中,每个进程都可以访问图中的每个顶点。 这是某些分布式算法所必需的,例如最小生成树算法的实现。