通过知道顶点(名称)和它们之间的连接来创建图形

时间:2014-04-11 05:38:14

标签: c++ boost boost-graph

我有一个顶点列表作为一个大数组:

vert[N]
        100, 1350, 200, 400, 12000, ....

这意味着标签保存在以下数组中:v [1] = 100,v [2] = 1350,v [3] = 200,v [4] = 400,v [5] = 12000 ,....

我也知道连接关系

100 12000
1350 200
400 15000
.
.
.

所以,edge也在另一个数组n [1] = 12000,n [2] = 200,n [3] = 15000,....所以它意味着100连接到12000。 如何使用这些输入在boost中创建图形。

1 个答案:

答案 0 :(得分:0)

我们假设标签是标准字符串。

您需要做的第一件事就是将标签存储在一个集合中,以确保没有重复项,您可以快速找到特定标签的索引。

std::set<std::string> set_vertex_labels;
for( int i = 0; i < size_of_vert; i++ ) {
   set_vertex_labels.insert( vert[i] );
}

现在假设您可以迭代连接数据,获取边缘的两个标签

std::string label1, label2;
magic_function_to_get_next_two_connected_labels( label1, label2 );

找到第一个连接顶点的索引

std::set<std::string>::iterator it = set_vertex_labels.find( label1 );
if( it == set_vertex_labels.end() ) {
    // oops!
    exit(1);
}
int index_vertex1 = std::distance( set_vertex_labels.begin(), it );

对第二个顶点执行相同的操作。

最后,您已准备好将优势插入图表

add_edge( index_vertex1, index_vertex2, myGraph );