【发布时间】:2012-09-22 10:42:34
【问题描述】:
我使用 Boost 图形库生成了一个随机无向图。
我随机添加顶点和边的数量如下:
RNGType rng( time(0) );
boost::uniform_int<> one_to_four( 1, (N-1) );
boost::variate_generator< RNGType, boost::uniform_int<> >gen(rng, one_to_four);
for(int i =0; i<(N-1); i++)
{
int k = 0;
while(k<4)
//while(k<(N/2))
{
int n = gen();
// Adding edges onto graph
if(!boost::edge(i, n, g).second && !boost::edge(n, i, g).second)
{
if(i !=n )
{
add_edge(i, n, g);
k++;
}
}
}
}
正如所见,我使用while(k<4) 将边数限制为 4,但它仅适用于传入边。我想将传入和传出边都限制为 4。例如,如果我输入顶点数为 10,我得到:
graph G{
0;
1;
2;
3;
4;
5;
6;
7;
8;
9;
0--1 ;
0--2 ;
0--2 ;
0--2 ;
1--3 ;
2--1 ;
2--4 ;
3--2 ;
3--2 ;
3--4 ;
3--0 ;
4--1 ;
4--9 ;
4--8 ;
5--
and so on..
}
可以看出已经有 4 个从 0 的出边,并且有一个来自 (3,0) 的入边,因此离开和进入顶点 0 的边数变为 5,我想将其限制为4 个或更少,但不超过 4 个。
任何帮助将不胜感激。
非常感谢。
干杯!!
【问题讨论】:
标签: c++ boost graph boost-graph