【发布时间】:2016-12-02 20:12:16
【问题描述】:
我正在尝试通过使用成本邻接矩阵来测试 Prim 和 Kruskal 算法的实现。我正在根据图中的顶点数量和图中的边数量生成这些矩阵。它不必是连通图。
这是我目前所拥有的:
final static int infinity = 2000000000;
public static int[][] genAdjMat(int V, int E) {
int[][] a = new int[V][V];
int e = E;
for(int i = 0; i < V; i++) {
for(int j = i; j < V; j++) {
if(i == j) {
a[i][j] = 0;
}
else {
if(Math.random() < 0.5 && e >= 0) {
int temp = (int)Math.ceil(Math.random()*e);
a[i][j] = temp;
a[j][i] = temp;
e--;
}
else {
a[i][j] = infinity;
a[j][i] = infinity;
}
}
}
}
return a;
}
现在,它生成一个对称数组,但它没有使用我指定的所有边。我无法弄清楚如何用完所有边缘,并且仍然将它们随机放置在整个矩阵中,同时保持对称性。
【问题讨论】:
-
反过来做。初始化一个空矩阵并添加
E随机边。 -
哇,我觉得自己很愚蠢。这很简单,谢谢你给我另一种方法!
标签: java algorithm matrix adjacency-matrix