【问题标题】:what does "not strongly connected graph" means in centiserve centroid computation?“非强连通图”在 centiserve 质心计算中是什么意思?
【发布时间】:2021-02-15 07:12:20
【问题描述】:

在问题中,我有四个不同的网络,我从 4 个不同的 csv 文件加载它们。当我使用 centiserve 库计算 centroid 时,每个都失败了。另一方面,如果我生成一个随机 ER 网络,质心计算就会起作用。

我查看了质心函数,最终我发现它使用 igraph 来检查网络是否连接这个函数is.connected(g, mode="strong")

According to wikipedia 如果所有节点都可以从网络中的随机节点到达,则图是强连接的。为此,我使用 igraph 的 decompose() 函数计算了我的网络的组件,并且所有网络都有一个连接组件:length(decompose(net)) 始终等于 1。但是,centroid(net) 始终返回错误。

最终,问题是:这个函数在验证图形是否合适时到底在寻找什么?为什么我的网络只有一个连接组件,但 igraph 的is.connected() 函数返回 False?

一些代码:

#load file
finalNet <- read.csv("net.csv", sep=",", header=T)
#get network
net <- graph_from_data_frame(finalNet[, c(1, 2)])
#decompose says that there is a single connected component
length(decompose(net))
#while centroid does not work!
centroid(net)

网络可用here

【问题讨论】:

  • 你能提供一个最小的可重现的例子吗?
  • @Christoph 正在处理它。
  • @Christoph,给你。不工作的代码现在与网络一起可用。
  • 注意decompose 默认使用弱组件。 is.connected 正在检查强组件。
  • @Szabolcs 实际上我还没有尝试过。而且,是的,我现在可以说区别很明显。在问这个问题之前它不是!

标签: r igraph network-analysis


【解决方案1】:

好的,我找到了答案。问题是函数graph_from_data_frame创建了一个有向网络,如果没有另外指定。

因此,使我的示例工作的解决方案是按未指示的方式加载网络:

net <- graph_from_data_frame(finalNet[, c(1, 2)], directed=F)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-19
    • 2013-11-18
    • 2013-05-07
    • 2012-08-11
    • 1970-01-01
    • 2011-08-12
    • 2017-06-11
    相关资源
    最近更新 更多