private double[][] calResponsibility(double[][] smatrix, double[][] amatrix) {
        double[][] rmatrix = new double[dNum][dNum];
        for (int i = 0; i < dNum; i++) {
            for (int k = 0; k < dNum; k++) {
                //计算 max{A(i,j)+S(i,j)}
                double maxAS = -Double.MAX_VALUE;
                double temp;
                for (int j = 0; j < dNum; j++) {
                    if (j != k) {
                        temp = amatrix[i][j] + smatrix[i][j];
                        if (temp > maxAS) {
                            maxAS = temp;
                        }
                    }
                }
                //计算R(i,k)
                if (i != k) {
                    rmatrix[i][k] = smatrix[i][k] - maxAS;
                } else {
                    rmatrix[i][k] = pk - maxAS;
                }
                //TODO  阻尼处理的位置是否适应了第一次迭代时，A矩阵全零的情况？
                //TODO 进行收敛阻尼处理
//                rmatrix[i][k] = (1 - lam) * rmatrix[i][k] + lam * Rmatrix[i][k];
            }
        }
        return rmatrix;
    }