我理解erdos ranyi随机图模型背后的逻辑。我使用R studio生成这个随机图。该模型有两个子部分,一个是G(n,p),其中,n =节点总数,p =任意两个节点共享边缘的概率。我们必须将概率作为输入传递。假设我接受硬币翻转的随机实验,那么如果有头,我将连接两个节点,如果有尾部,我将不会连接两个概率为0.5的节点。当假设我将提供概率p = 0.3并且节点数是5时,我没有得到那个,那么节点将如何基于0.3概率连接。我的脚本如下。
library(igraph)
g10 <- erdos.renyi.game(5,0.3)
答案 0 :(得分:2)
如果您有5个节点,那么在无向图中您有5 * 4/2 = 10个可能的边。如果每条边存在概率为0.3的情况,则这些图的多个实例上的边数分布为二项式,概率为0.3,大小为10.
让我们进行实验。生成1000个图表并将节点数列表:
> g3_edges = table(replicate(1000,length(E(erdos.renyi.game(5,.3)))))
> g3_edges
0 1 2 3 4 5 6 7 8
34 132 230 266 194 100 31 12 1
由p = 0.3得到的0到8个边缘的理论分布由dbinom
给出,我将乘以我的1000个模拟计数并取整数与我的模拟表进行比较:
> p3_edges = as.integer(dbinom(0:8, size=10, p=0.3)*1000)
> p3_edges
[1] 28 121 233 266 200 102 36 9 1
看起来非常接近,可能在随机抽样变体中。此外,我们没有生成任何具有9或10个边的图,并且理论分布在8个边缘已经下降到1,所以这也不奇怪。
> cbind(g3_edges, p3_edges)
g3_edges p3_edges
0 34 28
1 132 121
2 230 233
3 266 266
4 194 200
5 100 102
6 31 36
7 12 9
8 1 1
如果需要,请重复p = 0.5。在这种情况下,我得到了最多9条边的图形:
> g5_edges = table(replicate(1000,length(E(erdos.renyi.game(5,.5)))))
> p5_edges = as.integer(dbinom(0:9, size=10, p=0.5)*1000)
> cbind(g5_edges, p5_edges)
g5_edges p5_edges
0 2 0
1 14 9
2 53 43
3 102 117
4 216 205
5 266 246
6 199 205
7 91 117
8 39 43
9 18 9
那你的问题在哪里?