如何从给定的图创建两个子图
How to create two subgraphs from a given graph
假设给定的有向图 G
具有 N
个顶点和 M
个边。
如何从图 G
的现有 M
连接创建两个子图 S_1
和 S_2
。这些各自的子图各有一半的现有边。此外,它是由随机性决定的,一条边是属于 S_1
还是 S_2
.
示例:
G <- erdos.renyi.game(5,p=0.5,directed = TRUE)
E(G)
> + 12/12 edges:
> [1] 1->5 2->1 4->1 5->1 1->2 3->2 5->2 1->3 3->5 5->3 2->4 3->4
应在 12
个现有边中随机选择 M/2=6
个边,它们代表 S_1
中的边。其余 6
条边提供的边是 S_2
.
可能我误会你了:
library(igraph)
set.seed(1) # for reproducible example
G <- erdos.renyi.game(5,p=0.5,directed = TRUE)
E(G)
# Edge sequence:
#
# [1] 1 -> 5
# [2] 3 -> 1
# [3] 3 -> 2
# [4] 4 -> 2
# [5] 1 -> 3
# [6] 2 -> 3
# [7] 3 -> 5
# [8] 2 -> 4
# [9] 5 -> 4
eids <- sample(1:ecount(G), ecount(G)/2)
S1 <- subgraph.edges(G, eids)
S2 <- subgraph.edges(G, (1:ecount(G))[-eids])
E(S1)
# Edge sequence:
#
# [1] 1 -> 5
# [2] 3 -> 2
# [3] 4 -> 2
# [4] 5 -> 4
E(S2)
# Edge sequence:
#
# [1] 3 -> 1
# [2] 1 -> 3
# [3] 2 -> 3
# [4] 3 -> 5
# [5] 2 -> 4
假设给定的有向图 G
具有 N
个顶点和 M
个边。
如何从图 G
的现有 M
连接创建两个子图 S_1
和 S_2
。这些各自的子图各有一半的现有边。此外,它是由随机性决定的,一条边是属于 S_1
还是 S_2
.
示例:
G <- erdos.renyi.game(5,p=0.5,directed = TRUE)
E(G)
> + 12/12 edges:
> [1] 1->5 2->1 4->1 5->1 1->2 3->2 5->2 1->3 3->5 5->3 2->4 3->4
应在 12
个现有边中随机选择 M/2=6
个边,它们代表 S_1
中的边。其余 6
条边提供的边是 S_2
.
可能我误会你了:
library(igraph)
set.seed(1) # for reproducible example
G <- erdos.renyi.game(5,p=0.5,directed = TRUE)
E(G)
# Edge sequence:
#
# [1] 1 -> 5
# [2] 3 -> 1
# [3] 3 -> 2
# [4] 4 -> 2
# [5] 1 -> 3
# [6] 2 -> 3
# [7] 3 -> 5
# [8] 2 -> 4
# [9] 5 -> 4
eids <- sample(1:ecount(G), ecount(G)/2)
S1 <- subgraph.edges(G, eids)
S2 <- subgraph.edges(G, (1:ecount(G))[-eids])
E(S1)
# Edge sequence:
#
# [1] 1 -> 5
# [2] 3 -> 2
# [3] 4 -> 2
# [4] 5 -> 4
E(S2)
# Edge sequence:
#
# [1] 3 -> 1
# [2] 1 -> 3
# [3] 2 -> 3
# [4] 3 -> 5
# [5] 2 -> 4