2013-08-02 3 views
-1

부스트 그래프 라이브러리, C++에서 dense_boruvka_minimum_spanning_tree 함수를 사용하고 싶습니다. 내가 원하는 것은 무작위 그래프를 생성 한 다음 그 함수에 Boruvka의 알고리즘을 병렬로 실행하는 것입니다. 아무도 함수가 사용되는 방법에 관해서는 몇 줄의 코드로 나를 도와 줄 수 있습니까?부스트 그래프 라이브러리를 도와주세요

+0

이 질문은 조사의 표시가 없습니다. 워드 프로세서, 구글, 코드를 읽어보십시오. 그래도 붙어 있다면 코드를 게시하고 구체적인 도움을 요청하십시오. – ravenspoint

답변

2

this이 도움이 되나요?

typedef adjacency_list<listS, 
        distributedS<mpi_process_group, vecS>, 
        undirectedS, 
        no_property, 
        property<edge_weight_t, int> > Graph; 

typedef graph_traits<Graph>::vertex_descriptor vertex_descriptor; 
typedef graph_traits<Graph>::vertex_iterator vertex_iterator; 
typedef graph_traits<Graph>::edge_descriptor edge_descriptor; 

typedef std::pair<int, int> E; 

const int num_nodes = 5; 
E edge_array[] = { E(0, 2), E(1, 3), E(1, 4), E(2, 1), E(2, 3), 
    E(3, 4), E(4, 0), E(4, 1) 
}; 
int weights[] = { 1, 1, 2, 7, 3, 1, 1, 1 }; 
std::size_t num_edges = sizeof(edge_array)/sizeof(E); 

Graph g(edge_array, edge_array + num_edges, weights, num_nodes); 

typedef property_map<Graph, edge_weight_t>::type WeightMap; 
WeightMap weight_map = get(edge_weight, g); 

std::vector<edge_descriptor> mst_edges; 
dense_boruvka_minimum_spanning_tree(make_vertex_list_adaptor(g), 
            weight_map, 
            std::back_inserter(mst_edges));