二元搜索一致随机

时间:2013-04-29 15:30:33

标签: java algorithm graph binary-tree

我想根据多重图(加权图)的重量选择均匀边缘的随机数。 我想这就像在Kargers algo中描述的那样。

算法分为两部分:

这是一种随机选择方法。

From edges e1...em with weights w1...wm construct cumulative weights 
Wk=sum(wi,from=i=1,to=k).
Then choose an integer r uniformly at random from 0...Wm and use binary search to
identify the edge ei such that Wi-1 <= r < Wi.

然后我们可以使用此方法找到随机边缘。

Goal is to choose an edge (u,v) with probability proportional to W(u,v).
First choose endpoint u with probability proportional to D(u) and then once u is
fixed choose a second endpoint v with probability proportional to W(u,v).

我已将图形实现为相邻矩阵。 这看起来像这样。

       v1 v2 v3 v4
    v1 0  1  0  2
    v2 1  0  3  0
    v3 0  3  0  0
    v4 2  0  0  0

在我的代码中,矩阵是一个     int [] [] Matrix;

我有一个数组,其中包含每个顶点的行的累积和。

但现在我不知道如何在我的代码中正确实现这一点。

有人可以帮我吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

继承人的方法:

public static int sumOfRow(int[][] array, int rowIndex) {
    int sum = 0;
    for(int i : array[rowIndex]) {
        sum += i;
    }
    return sum;
}

如果您不理解,请告诉我,我会添加一些评论。