Igraph 特征向量中心性运行时错误 c++
Igraph eigenvector centrality Run-Time error c++
我正在用c ++编写程序,需要生成图形并计算一些度量。我正在使用Visual Studio 2013和Igraph C库。此时,我可以根据自定义信息创建图形并计算一些指标,例如介于和接近中心性之间,但是当我尝试计算特征向量中心性时,程序崩溃并向我显示以下消息:
"运行时检查失败 #3 - 变量'tgetv0'在未初始化的情况下被使用。"
tgetv0 变量在 Igraph 源代码的 dgetv.c 内部使用。这是我的代码:
void GraphObject::calcEigen()
{
igraph_arpack_options_t options;
igraph_real_t value;
igraph_vector_t weights;
igraph_vector_init(&weights, igraph_ecount(&cGraph)); //cGraph is already created.
igraph_vector_init(&eigenRes, igraph_vcount(&cGraph)); //All ..Res igraph_vector_t are declarated in header
igraph_vector_init(&betweennesRes, 0);
igraph_vector_init(&closenessRes, 0);
igraph_arpack_options_init(&options);
igraph_betweenness(&cGraph, &betweennesRes, igraph_vss_all(), 0, 0, 1);
igraph_closeness(&cGraph, &closenessRes, igraph_vss_all(), IGRAPH_ALL, 0, 1);
igraph_eigenvector_centrality(&cGraph, &eigenRes, &value, 0, 1, &weights, &options);
}
接近度和中间性被正确地计算为"couted",但在特征向量函数上崩溃。
在对文档、互联网和调试器进行了大量研究之后,我无法弄清楚哪个是问题所在,尤其是当我尝试文档 http://igraph.org/c/doc/igraph-Structural.html#igraph_eigenvector_centrality(复制/粘贴)中的示例代码并制作相同的代码时。这是一个库还是示例问题,我错过了什么?
当我初始化权重向量然后调用 igraph_null(&weights) 时,它可以工作,但所有特征值的结果都是 1,这是不正确的结果。我做错了什么?
让我们假设Visual Studio是正确的,我们确实有一个名为tgetv0
的变量,它正在使用未初始化。我浏览了igraph的源代码,看起来有两个地方确实可能是这种情况。其中一个在src/lapack/dnaupd.c
,另一个在src/lapack/dsaupd.c
.这两个文件都是使用f2c
从Fortran转换而来的,因此很难判断该问题是否存在于原始Fortran代码中,或者是否是在转换过程中引入的。无论哪种方式,您都可以通过查找在 src/lapack/dnaupd.c
和 src/lapack/dsaupd.c
中声明 tgetv0
并将其初始化为值 0 来轻松解决此问题。在我的版本中,要更改的行是 src/lapack/dnaupd.c
中的第 486 行和src/lapack/dsaupd.c
中的第 482 行。
请添加注释以确认该解决方案是否适合您 - 如果有效,我将向 igraph 源代码树提交补丁。
- 删除指向指针的指针是运行时错误吗
- c++中的指针和运行时错误
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- 在同一模拟中使用静脉和静脉_ inet内容时出现运行时错误
- 对单向链表进行排序时出现运行时错误
- 为什么此代码存在运行时错误?
- 你能解释一下什么运行时错误是如何解决它的吗?
- 为什么会出现 gettnig 运行时错误:加载类型为"_Bit_type"(stl_bvector.h) 的空指针?
- 为什么程序在 c++ 中迭代 emtpy 向量时会抛出运行时错误
- 运行时错误:引用绑定到类型为"int"的空指针
- 为什么当 vector 为空时会显示运行时错误?
- C++运行时错误与快速排序算法抛出堆栈转储错误
- 运行时错误:矢量下标超出范围:正在检查空集
- 分配给gslice_array会导致运行时错误
- cout 新创建的对象引发运行时错误
- C++在使用std::multimap时出现运行时错误的几率很小
- 运行时错误:引用绑定到类型"int"的未对齐地址0xbebebebebebebec6,这需要 4 个字节对齐 (stl_vector.h)
- 试图找出为什么我会收到运行时错误?
- 迭代二维矢量时发生运行时错误
- 调用 java 的回调() 时应用程序崩溃.由于 detatchThread 而获得运行时错误