我正在尝试实现从图g中检索相邻边集的代码。 igraph_es_incident和igraph_es_adj方法似乎是合适的,但它们在文档中链接到的示例似乎不起作用。
第一个问题是示例代码不使用有问题的方法(_incident)而是使用_adj方法。第二个问题是示例方法与实现和文档不同。
示例代码(4个输入):
igraph_es_adj(&g, &it, i, IGRAPH_OUT);
文档和实际实施(3个输入):
int igraph_es_adj(igraph_es_t*, igraph_integer_t, igraph_neimode_t)
所以,我的问题是我如何正确使用_incident或_adj方法来获取图形g?
谢谢
PS。有关_incident的文档:http://igraph.org/c/doc/igraph-docs.pdf第211页。示例代码:https://github.com/igraph/igraph/blob/master/examples/simple/igraph_es_adj.c第71行。
答案 0 :(得分:0)
我在http://igraph.org/c/doc/igraph-docs.pdf的第208页找到了答案。这里他们展示了如何使用索引器进行视频。
答案 1 :(得分:0)
此代码已成功检索vid的邻居(j是您可能寻找的边缘ID):
igraph_integer_t vid = 0; // vertex vid in question
igraph_es_t es; // edge selector
igraph_eit_t it; // iterator
igraph_integer_t size; // to check the degree
igraph_es_incident(&es, vid, IGRAPH_ALL); // select edges from and to vid
igraph_es_size(&g, &es, &size); // how many edges?
printf("%d neighbors of %d \n",size,vid);
igraph_eit_create(&g, es, &it); // create iterator
IGRAPH_EIT_RESET(it); // and iterate
while(!IGRAPH_EIT_END(it)){
igraph_integer_t j = IGRAPH_EIT_GET(it);
IGRAPH_EIT_NEXT(it);
printf("%d is neighbor of %d \n",IGRAPH_OTHER(&g,j,vid),vid);
}