【发布时间】:2017-12-31 05:48:18
【问题描述】:
我的编程经验很少,所以为了练习,我想通过用二维数组编码邻接矩阵来在 java 中“构建”一个图形。具体来说,我想构建在https://www.cut-the-knot.org/arithmetic/combinatorics/Ramsey44.shtml 找到的红色图,但是我编码的内容使矩阵中的边数少于应有的边数。这是我目前所拥有的:
public static int[][] createGraph(){
int[][] graph = new int[17][];
for(int i=0; i<17; i++){
graph[i] = new int[i+1];
}
for(int i = 0; i<17; i++){
for(int j = 0; j<=i; j++){
if(i-j == 1 || i-j == 2 || i-j == 4 || i-j == 8){
graph[i][j] = 1;
}
}
}
return graph;
图中有 68 条边,所以邻接矩阵的下三角形应该有 68 个 1,这是我正在尝试构建的,但是当我手动计算它们时,当我打印它时,我发现其中 59 个。我不知道为什么缺少边缘。我猜根据列号和行号之间的差异分配边缘与网站中的“顶点之间的差异”不同。我应该怎么做?
我的下一个练习是计算图中三角形的数量。我对如何做到这一点有一个想法,但我能得到一个提示吗?
【问题讨论】:
-
您将构造限制为矩阵的一个三角形,但您可能不会将连接节点的索引对的构造限制为矩阵的另一半。 - 查看打印输出:不会有带有
|i-j|>8的索引对,这是错误的。
标签: java graph-theory adjacency-matrix