C中的随机图

时间:2012-11-29 22:56:54

标签: c random graph probability

我有一个关于随机图的作业。我无法理解这个问题。任何人都可以向我澄清我应该做什么吗?

N为正整数,p为0到1之间的数字。(N, p)随机图是由以下过程生成的图:

绘制N个顶点,分别用1, 2, . . . , N表示;每对(u, v) 具有概率p的不同顶点将两个顶点与边连接。如果任意两个顶点之间存在路径,则称图形连接。

在本实验中,您将编写代码来生成大型随机图并研究这些图的连通性。

我们会将N修改为500,000,但让p在{0.05, 0.10, 0.15, ..., 0.95}中有所不同。对于p的每个值,您需要创建100个(N, p)随机图。您需要开发一个方法(当然,在程序中实现它)以确定图形是否已连接。然后,对于p的每个值,您需要计算连接的随机图的数量M,并调查M(反映随机图连接的概率)与{{p之间的关系1}}。

1 个答案:

答案 0 :(得分:0)

随机图是随机创建的图:

伪代码

for i := 1 to N
   for j := i+1 to N
       if bernoulli_distributed_with_param_p is true
           add undirected edge {i,j} to graph

参数p只是两个给定顶点连接的概率。 bernoulli_distributed_with_param_p实际上很容易在C中实现:

// Returns 0 with probability (1-p)
int bernoulli_distributed(double p){
    return (p > ((double)rand())/RAND_MAX);
}

不要忘记您需要使用srand初始化随机生成器。