C++ Can';在igraph上生成igraph_度_序列_对策
我想使用igraph_degree_sequence_game igraph图形生成器生成一个网络。igraph C库上的示例在我的计算机上运行良好,但是如果我更改为其他一些简单的度分布(请参见下面的代码),我会得到以下错误:C++ Can';在igraph上生成igraph_度_序列_对策,c++,c,igraph,C++,C,Igraph,我想使用igraph_degree_sequence_game igraph图形生成器生成一个网络。igraph C库上的示例在我的计算机上运行良好,但是如果我更改为其他一些简单的度分布(请参见下面的代码),我会得到以下错误: Error at games.c:830 :degree sequence game (simple), Out of memory. 我想这会给我一个有4个节点的无向网络,每个节点有3个邻居。我不知道我哪里做错了。谢谢你的帮助和回应 #include <igra
Error at games.c:830 :degree sequence game (simple), Out of memory.
我想这会给我一个有4个节点的无向网络,每个节点有3个邻居。我不知道我哪里做错了。谢谢你的帮助和回应
#include <igraph.h>
int main() {
igraph_t g;
igraph_vector_t outdeg, indeg, vec;
igraph_bool_t is_simple;
igraph_vector_init_real(&outdeg, 4,3,3,3,3);
igraph_vector_init(&vec, 0);
/* checking the simple method, undirected graphs */
igraph_degree_sequence_game(&g, &outdeg, 0, IGRAPH_DEGSEQ_SIMPLE);
if (igraph_is_directed(&g) || igraph_vcount(&g) != 4)
return 1;
if (igraph_degree(&g, &vec, igraph_vss_all(), IGRAPH_OUT, 1))
return 2;
igraph_vector_print(&vec);
igraph_destroy(&g);
igraph_vector_destroy(&vec);
igraph_vector_destroy(&outdeg);
igraph_vector_destroy(&indeg);
return 0;
}
#包括
int main(){
igraph_t g;
igraph_vector_t outdeg,indeg,vec;
图是简单的;
igraph_vector_init_real(&outdeg,4,3,3,3);
igraph_vector_init(&vec,0);
/*检查简单方法,无向图*/
igraph_degree_sequence_game(&g,&outdeg,0,igraph_DEGSEQ_SIMPLE);
如果(igraph_是有向(&g)| igraph_vcount(&g)!=4)
返回1;
if(igraph_degree(&g,&vec,igraph_vss_all(),igraph_OUT,1))
返回2;
igraph_vector_print(&vec);
IGU破坏(&g);
igraph_vector_destroy(&vec);
igraph_vector_destroy(&outdeg);
igraph_vector_destroy(&indeg);
返回0;
}
我想应该更新示例,因为igraph\u vector\u init\u real
不是公共API的一部分。无论如何,问题是(顾名思义),这个函数需要实(即双)字面值。也就是说,正确的使用方法是
igraph_vector_init_real(&outdeg, 4, 3.0, 3.0, 3.0, 3.0);
顺便说一句,代码中的另一个错误是调用
indeg
上的igraph\u vector\u destroy
,该错误从未初始化。这可能会也可能不会生成运行时错误。非常感谢!这真的解决了我的问题!