【发布时间】:2023-03-12 10:25:01
【问题描述】:
我想为一个图计算完整的生成树集。我正在使用的图表很小(通常少于 10 个节点)。
我看到了用igraph计算最小生成树的功能:
library(igraph)
g <- sample_gnp(100, 3/100)
g_mst <- mst(g)
我看到previous StackOverflow post 描述了如何使用breadth-first search 计算生成树。下面的代码改编自接受的答案:
r <- graph.bfs(g, root=1, neimode='all', order = TRUE, father = TRUE)
h <- graph(rbind(r$order, r$father[r$order, na_ok = TRUE])[,-1], directed = FALSE)
但是,我不知道如何调整它来计算多个生成树。如何调整这段代码来计算所有生成树?我在想其中的一部分是遍历每个节点以用作每棵树的“根”,但我不认为这会带我一路走到那里(因为仍然可能有多个关联的生成树具有给定的根节点)。
编辑
最终目标是计算图的失真,其定义如下(link, see page 5):
考虑图G上的任意生成树T,计算平均距离t = E[HT] 位于 T 之间的任意两个节点之间,它们共享 G 中的链接。失真衡量 T 如何扭曲 G 中的链接,即它衡量从 G 中链接的一侧需要多少额外的跃点到另一个,如果我们被限制使用 T。失真被定义为 [13] 为所有可能的 Ts 中最小的此类平均值。直观上,失真衡量的是图形的树状程度。
[13] R. G. H. Tagmunarunkit 和 S. Jamin,“网络拓扑生成器:基于度数与结构性”,SIGMCOMM,2002 年。
【问题讨论】:
标签: r distance igraph graph-theory