2014-12-02 100 views
2

我想使用boost的並行MST算法dense_boruvka_minimum_spanning_treeBGL需要一個它自己不提供的模型?

該算法的界面的一個所需的參數是一個曲線圖「必須是頂點一覽表格拉夫的模型分佈式邊列表格拉夫」。我發現the only model的增強功能包含分佈式邊緣列表圖的概念是Distributed Adjacency List。然而,在該模型的部分"Graph Concepts"則明確表示,

「[...]分佈式鄰接表頂點列表圖或邊列表圖概念並不建模[...]

(由我強調)

在這一點上我很困惑,我應該到數據結構傳遞到沒有框架提供一個升壓算法的接口?我誤解的東西嗎?

注:我在增強的世界裏很新。

回答

1

加速圖形提供各地概念泛型算法,並在歷史上包括了圖概念非常少的機型。人們通常會在他們可以適應的某些現有數據結構中擁有他們的圖表。

有鑑於此

在這一點上我很困惑。我應該將數據結構傳遞給框架未提供的boost算法的接口?

甚至沒有這麼奇怪。


DistributedAdjacencyList的概念,當你需要VertexListGraph只提供DistributedVertexListGraph

的關鍵區別是DVLG下突出顯示:

分佈式頂點一覽表格拉夫是其頂點在多個進程或地址空間分佈的曲線圖。 verticesnum_vertices函數保留與頂點列表圖概念相同的特徵,但只返回本地集(和本地集的大小)的頂點。

換句話說:DVLG實際上只是一個VLG,只是分佈式的。

什麼,你會想要做的是「undistribute」的DVLG使用VertexListAdaptor

頂點列表圖形適配器適應分佈式的頂點一覽表圖的任何模型頂點列表圖。在前一種圖形中,頂點集合分佈在整個進程組中,所以沒有進程可以訪問所有頂點。然而,在後一種類型的圖中,每個進程都可以訪問圖中的每個頂點。 這是一些分佈式算法所需要的,例如最小生成樹算法的實現。