[英]Random Graphs in C
我有关于随机图的作业。 我不明白这个问题。 谁能告诉我我该怎么办?
令N
为正整数, p
为0到1之间的数字。 (N, p)
随机图是通过以下过程生成的图:
绘制N
个顶点,分别用1, 2, . . . , N
1, 2, . . . , N
1, 2, . . . , 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
。
随机图是随机创建的图:
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
初始化随机数生成器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.