gpt4 book ai didi

c++ - 如何使用 booSTLib 计算邻接表的介数?

转载 作者:行者123 更新时间:2023-11-28 08:16:11 25 4
gpt4 key购买 nike

我正在尝试编写一个简单的程序来使用 booSTLib 中的 brandes_betweenness_centrality 来计算 betweeness。我在获取输出 (CentralityMap) 时遇到了困难。我一直在阅读文档,但我不知道如何将它们放在一起。

这是我的简单代码:

#include <iostream> // std::cout
#include <utility> // std::pair
#include <boost/graph/graph_traits.hpp>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/betweenness_centrality.hpp>

using namespace boost;

int main()
{
int nVertices = 100;
srand ( time(NULL) );

typedef std::pair<int, int> Edge;
std::vector<Edge> edges;
for(int i=0; i<nVertices; i++){
std::cout << i << " : ";
for(int j=0; j<nVertices; j++){
if(rand() % 100 < 9){ /// chances of making a connection is 9 out of 100. may not be accurate
std::cout << j << " ";
edges.push_back(std::make_pair(i,j));
}
}
std::cout << std::endl;
}

typedef adjacency_list<vecS, vecS, bidirectionalS,
property<vertex_color_t, default_color_type>
> Graph;
Graph g(edges.begin(), edges.end(), edges.size());

brandes_betweenness_centrality(g,?????? );

return 0;
}

根据我的理解,我需要定义写入结果的中心图。它与读/写属性映射有关,但我不知道如何定义一个。

最终我需要输出介数。

最佳答案

填写缺失部分的最简单方法是:

boost::shared_array_property_map<double, boost::property_map<Graph, vertex_index_t>::const_type>
centrality_map(num_vertices(g), get(boost::vertex_index, g));

然后将 centrality_map 作为中心映射传递给 brandes_betweenness_centrality

关于c++ - 如何使用 booSTLib 计算邻接表的介数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7706391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com