【发布时间】:2019-05-23 01:53:11
【问题描述】:
给定一个描述连通图的边及其权重的矩阵(见下文),我想根据边权重的阈值 x 提取子图。在文献中,我读到可以搜索 最大 x,从而使诱导子图是连通的。
由于假设初始图是连通的,因此必须有一个临界阈值x-critical,对于任何x <= x-critical,提取的子图都是连通的。
我想知道如何在 R 中实现它。例如,我的矩阵 (weights.matrix) 看起来像
| FROM | TO | WEIGHT |
| A | B | 0.0042 |
| A | V | 0.23 |
| G | W | 0.82 |
| ... | ...| ... |
我正在创建整个图表,使用 igraph 包,例如:
g <- igraph::graph_from_data_frame(weights.matrix, directed = TRUE)
有没有办法重复检查 - 通过在权重中应用不同的阈值从 min() 到 max() - 如果发生的图表是连接的?我在谷歌中搜索了 igraph 中的此类功能,但找不到任何有用的东西。
这里有一些用于构建此类图表的代码。
library(igraph)
mat <- expand.grid(LETTERS[1:10], LETTERS[1:10])
mat$Weight <- runif(nrow(mat), 0.01, max = 1)
mat <- mat[mat$Var1!=mat$Var2, ]
g <- graph_from_data_frame(mat)
另外here is a paper 在 pdf 的第 15 页,第 5 节第四节中提到了该技术。您可以将边缘相关性视为此处讨论的边缘权重。
【问题讨论】:
-
寻求帮助时,您应该包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出。
-
我编辑了我最初的帖子并添加了一些代码示例。