这是Interviewstreet难题:
我们有一个包含N个城市的国家/地区。每天我们选择2个城市,这样他们之间就没有道路,并且在他们之间建立了一条道路。我们以相同的概率选择每对不相邻的城市。设X是我们获得连接国家之前的天数。 X的预期价值是多少?输出答案的整数部分。
他们真正要问的是随机图G(n,m)连接需要多少个边m(平均值)。
在编写了一个实际执行实验的程序之后,我想出了通过9/10测试的“解决方案”
$f = fopen('php://stdin', 'r');
$n = intval(fgets($f));
echo round(1.25 * $n * log($n, 10));
那么可以用一个公式解决吗?找到随机图连通性可能性的正确方法是什么?
答案 0 :(得分:14)
你应该查看1960年题为"On the evolution of random graphs"的鄂尔多斯和仁义的经典论文。它包含组件数量,最大组件大小等的完整概率界限。
这里有一些数学设置可以帮助你入门。
让G(n,m)
成为n
个带m
个边的顶点上的简单随机图。在X_k
个已连接的组件之前,k
为k-1
连接组件时添加的边数。例如,最初有n
个连接组件,因此添加第一个边缘会产生n-1
个连接组件,因此X_n = 1
。类似地,第二个边缘也删除了一个组件(尽管这种方式有两种),所以X_n-1 = 1
也是如此。定义
X = X_n + X_n-1 + ... + X_2
目标是计算E(X)
,X
的预期值。通过可加性,我们有
E(X) = E(X_n) + E(X_n-1) + ... + E(X_2)
要显示在有k
个组件的情况下添加边的概率减少组件数的概率并不太难以(k-1)/(n-1)
的下限。由于X_k
是由此数量给出的成功概率的随机变量,因此下限给出了X_k
的期望的上限:
E(X_k) <= (n-1)/(k-1)
结合这个,我们得到E(X)
n log n
的渐近上界。
通过鄂尔多斯 - 仁义报的更多工作和一些提示,你可以推断出一个确切的公式。
答案 1 :(得分:1)
OP是一个很好的解决方案,对公式略有修改,它总是会通过。
$f = fopen('php://stdin', 'r');
$n = intval(fgets($f));
echo round(1.249 * $n * log($n, 10));// constant factor is changed