我有一个关于随机图的作业。我无法理解这个问题。任何人都可以向我澄清我应该做什么吗?
让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}}。
答案 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
初始化随机生成器。