我正在使用Boost Graph Library来处理无向图,并声明了我的图
typedef property<vertex_index_t, int, property<vertex_name_t, string> > VertexProperty;
typedef adjacency_list<vecS, setS, undirectedS, VertexProperty > UndirectedGraph;
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,OutEdgeList的类型为std :: set,我之所以选择它,是因为文档说这种类型会强制缺少并行边.
现在,我的程序读取一个文本文件,指示节点之间的边缘,如果以前没有看到则创建节点,并在它们之间添加边缘.
我最近运行了大量数据的代码,发现了奇怪的结果.几个小时后,我发现一些用户的度数比图中顶点的数量多,所以我尝试了一个简单的文本文件代码,该文件只描述了同一对节点之间的两条边,但是反向源,目标,这样boost将执行以下操作:
add_edge(A,B)
add_edge(B,A)
Run Code Online (Sandbox Code Playgroud)
并注意到Boost最终增加了两个边缘.out_degree为它们返回2.
现在,问题是:我做错了吗?对于具有setS作为OutEdgeList类型的无向图,add_edge(a,b)是否应该与add_edge(b,a)相同?
谢谢.;)
| 归档时间: |
|
| 查看次数: |
1658 次 |
| 最近记录: |