Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm R中无向图的快速连通成分识别_Algorithm_R_Graph Theory - Fatal编程技术网

Algorithm R中无向图的快速连通成分识别

Algorithm R中无向图的快速连通成分识别,algorithm,r,graph-theory,Algorithm,R,Graph Theory,给定一个无向图中的节点x,已知该节点x是连通分量的一部分,我试图找到属于x分量的所有节点 我当前的实现识别了无向图中的所有组件,因此不适合大型图。我目前使用ggm库中的connectedComp来实现这一点,但我更愿意从RBGL运行BFS,从节点x开始,在完全探索其组件后终止。有什么建议吗?此外,如能从R调用关于并行图算法实现的任何信息,将不胜感激 library("ggm") x <- 2 > graph 1 2 3 4 5 6 7 8 9 10 1 0 0 0 0 0

给定一个无向图中的节点x,已知该节点x是连通分量的一部分,我试图找到属于x分量的所有节点

我当前的实现识别了无向图中的所有组件,因此不适合大型图。我目前使用ggm库中的connectedComp来实现这一点,但我更愿意从RBGL运行BFS,从节点x开始,在完全探索其组件后终止。有什么建议吗?此外,如能从R调用关于并行图算法实现的任何信息,将不胜感激

library("ggm")
x <- 2

> graph
   1 2 3 4 5 6 7 8 9 10
1  0 0 0 0 0 0 0 0 0  0
2  0 0 1 0 0 1 0 0 0  0
3  0 1 0 0 0 1 1 1 0  0
4  0 0 0 0 0 0 0 0 0  0
5  0 0 0 0 0 0 0 0 0  0
6  0 1 1 0 0 0 0 0 0  0
7  0 0 1 0 0 0 0 0 0  0
8  0 0 1 0 0 0 0 0 0  0
9  0 0 0 0 0 0 0 0 0  0
10 0 0 0 0 0 0 0 0 0  0

graph_object <- as(graph, "graphNEL")

# All connected components of graph using connectedComp function:
comp_list <- connectedComp(graph_object)
> comp_list
$`1`
[1] "1"

$`2`
[1] "2" "3" "6" "7" "8"

$`3`
[1] "4"

$`4`
[1] "5"

$`5`
[1] "9"

$`6`
[1] "10"

# Extract adjacency matrix of component containing x:

comp_x <- seq_along(comp_list)[sapply(comp_list, FUN=function(list) x %in% list)]
> comp_x
[1] 2

comp_x_list <- comp_list[[comp_x]]
> comp_x_list
[1] "2" "3" "6" "7" "8"

comp_x <- graph[comp_x_list, comp_x_list]
> comp_x
  2 3 6 7 8
2 0 1 1 0 0
3 1 0 1 1 1
6 1 1 0 0 0
7 0 1 0 0 0
8 0 1 0 0 0
库(“ggm”)
x图
1 2 3 4 5 6 7 8 9 10
1  0 0 0 0 0 0 0 0 0  0
2  0 0 1 0 0 1 0 0 0  0
3  0 1 0 0 0 1 1 1 0  0
4  0 0 0 0 0 0 0 0 0  0
5  0 0 0 0 0 0 0 0 0  0
6  0 1 1 0 0 0 0 0 0  0
7  0 0 1 0 0 0 0 0 0  0
8  0 0 1 0 0 0 0 0 0  0
9  0 0 0 0 0 0 0 0 0  0
10 0 0 0 0 0 0 0 0 0  0

graph\u object在我看来,使用预处理图形将给您带来最好的结果。
如果将图形存储为边列表而不是邻接矩阵,则速度会更快


如果您需要并行解决方案,那么您应该阅读有关的内容,我认为预处理图形将为您提供最佳结果。
如果将图形存储为边列表而不是邻接矩阵,则速度会更快


如果你需要并行解决方案,那么你应该在节点上阅读关于/p>Run-BFS,它不应该那么难。确实,但是问题是我想从Boost Sunce快速实现它调用C++。我正在寻找这个问题的大规模并行实现,它的样式是:节点上的www. aai.org/cay/aai/…/aaAI05-219.PDFRUN BFS,它不应该那么困难。是的,但是问题是,我希望从Boost SucEe调用C++实现快速的实现。我正在寻找这个问题的大规模并行实现:www.aaai.org/Papers/aaai/../AAAI05-219.pdf