*离散数学二元关系的闭包运算
如:自反性,对称性,传递性以及Wrashall算法,下面将用Java实现
一.处理二元关系的类(ArraysSetOperation):
public class ArraysSetOperation {
private int[][] array;
private int[][] array2 = new int[7][7];
public ArraysSetOperation(int[][] array) {
this.array = array;
}
/**
* initialize the value of the array.
* @param x is the line number of array, y is the columns number of array.
*/
public void setArrays(int x1, int y1) {
array[x1][y1] = 1;
array2[x1][y1] = 1;
}
public void setArrays(int x1, int y1, int x2, int y2) {
array[x1][y1] = 1;
array[x2][y2] = 1;
array2[x1][y1] = 1;
array2[x2][y2] = 1;
}
public void setArrays(int x1, int y1, int x2, int y2, int x3, int y3) {
array[x1][y1] = 1;
array[x2][y2] = 1;
array[x3][y3] = 1;
array2[x1][y1] = 1;
array2[x2][y2] = 1;
array2[x3][y3] = 1;
}
public void setArrays(int[] x, int[] y) {
for(int i=0; i<x.length; i++){
array[x[i]][y[i]] = 1;
array2[x[i]][y[i]] = 1;
}
}
/**
* 实现Wrashall算法求二元关系传递闭包的关系
*/
public void Wrashall() {
for(int j=0; j<array.length; j++) {
for(int i=0; i<array.length; i++) {
if(array2[i][j] == 1) {
for(int k=0; k<array[j].length; k++){
array2[i][k] = array2[i][k] + array2[j][k];
if(array2[i][k]>1)
array2[i][k] = 1;
}
}
}
}
}
/**
* make the array to