【发布时间】:2018-11-07 22:25:47
【问题描述】:
这是我检查矩阵是否反对称的代码。 (集合 A 上的关系 R 称为反对称当且仅当对于 A 中的任何 a 和 b,只要 R 中的 (a,b) 和 R 中的 (b,a) ,a = b 必须成立。)
// AntiSymmetric
public static boolean checkAntisymmetric(Graph graph, int vertices){
boolean antisymmetric = false;
for(int i = 1; i <= vertices; i++) {
for(int j = 1; j <= vertices; j++){
if((graph.getEdge(i, j) == graph.getEdge(j, i)) && (i == j)){
antisymmetric = true;
break;
}
}
}
if(antisymmetric){
return true;
}
else {
return false;
}
}
而我的 getEdge 函数是:
public int getEdge(int to, int from){
try{
return adjencencyMatrix[to][from];
} catch(ArrayIndexOutOfBoundsException index){
System.out.println("Vertices does not exist");
}
return -1;
}
例如,如果我给出由对表示的边: (2,3) (3,5) (3,2) (5,1) (4,4) 由于 (4,4),它应该返回 false。 另外我以此为参考:
我能够创建一个函数来检查矩阵是否确实对称。唯一不同的是我的反对称函数在 if 语句中具有条件 (i == j)。有人能明白为什么它总是返回真实吗?谢谢。 这里显示了一个我用来测试函数的示例矩阵:
0 0 0 0 0
0 0 1 0 0
0 1 0 0 1
0 0 0 0 0
1 0 0 0 0
对于对:(2,3) (3,5) (3,2) (5,1)
【问题讨论】:
-
删除了我的答案,因为“反对称”不是“对称”的对立面:-)(很久以前......)
-
感谢您的反馈!
标签: java matrix multidimensional-array