Advertisement
Guest User

Untitled

a guest
Dec 9th, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.68 KB | None | 0 0
  1.  
  2. public class Markov {
  3.     // Verificando a regra do Skeleton (desconsiderando o direcionamento da rede)
  4.     private static int[][] skeletonRule(int[][] matrix, int n) {
  5.         int[][] matrixCopy = matrix;
  6.        
  7.         for (int i = 0; i < n; i++) {
  8.             for (int j = 0; j < n; j++) {
  9.                 if (matrix[i][j] == 1) {
  10.                     matrixCopy[j][i] = 1;
  11.                 }
  12.             }
  13.         }
  14.        
  15.         return matrixCopy;
  16.     }
  17.    
  18.     // Verificando se duas matrizes são as mesmas (iguais)
  19.     private static boolean isSameMatrix(int[][] A, int[][] B, int n) {     
  20.         for (int i = 0; i < n; i++) {
  21.             for (int j = 0; j < n; j++) {
  22.                 if (A[i][j] != B[i][j]) {
  23.                     return false;
  24.                 }
  25.             }
  26.         }
  27.        
  28.         return true;
  29.     }
  30.    
  31.     // Verificando a regra Immorality
  32.     private static boolean isImmoralityRuleValid(int[][] A, int[][] B, int n) {
  33.         boolean immoralityRule = true;
  34.        
  35.         // Verrificando a "IDA"
  36.         for (int i = 0; i < n; i++) {
  37.             for (int j = 0; j < n; j++) {
  38.                 for (int k = 0; k < n; k++) {
  39.                     if (i != j) {
  40.                         boolean hasImmoralityInMatrixA = A[i][k] == 1 && A[j][k] == 1 && A[i][j] == 0;
  41.                         if (hasImmoralityInMatrixA) {
  42.                             boolean hasImmoralityInMatrixB = B[i][k] == 1 && B[j][k] == 1 && B[i][j] == 0;
  43.                             if (!hasImmoralityInMatrixB) {
  44.                                 immoralityRule = false;
  45.                             }
  46.                         }
  47.                     }
  48.                 }
  49.             }
  50.         }
  51.        
  52.         // Verificando a "VOLTA"
  53.         for (int i = 0; i < n; i++) {
  54.             for (int j = 0; j < n; j++) {
  55.                 for (int k = 0; k < n; k++) {
  56.                     if (i != j) {
  57.                         boolean hasImmoralityInMatrixB = B[i][k] == 1 && B[j][k] == 1 && B[i][j] == 0;
  58.                         if (hasImmoralityInMatrixB) {
  59.                             boolean hasImmoralityInMatrixA = A[i][k] == 1 && A[j][k] == 1 && A[i][j] == 0;
  60.                             if (!hasImmoralityInMatrixA) {
  61.                                 immoralityRule = false;
  62.                             }
  63.                         }                      
  64.                     }
  65.                 }
  66.             }
  67.         }
  68.        
  69.         return immoralityRule;
  70.     }
  71.    
  72.     // Preenchendo os valores da Matriz A e B com os valores da questão 4
  73.     private static void fillMatrixes(int[][] A, int[][] B) {
  74.         A[0][0] = 0; A[0][1] = 0; A[0][2] = 1; A[0][3] = 1; A[0][4] = 0; A[0][5] = 1; A[0][6] = 0; A[0][7] = 0; A[0][8] = 0;
  75.         A[1][0] = 0; A[1][1] = 0; A[1][2] = 1; A[1][3] = 0; A[1][4] = 1; A[1][5] = 0; A[1][6] = 0; A[1][7] = 0; A[1][8] = 0;
  76.         A[2][0] = 0; A[2][1] = 0; A[2][2] = 0; A[2][3] = 0; A[2][4] = 0; A[2][5] = 0; A[2][6] = 1; A[2][7] = 0; A[2][8] = 0;
  77.         A[3][0] = 0; A[3][1] = 0; A[3][2] = 0; A[3][3] = 0; A[3][4] = 0; A[3][5] = 0; A[3][6] = 0; A[3][7] = 1; A[3][8] = 1;
  78.         A[4][0] = 0; A[4][1] = 0; A[4][2] = 1; A[4][3] = 0; A[4][4] = 0; A[4][5] = 0; A[4][6] = 1; A[4][7] = 0; A[4][8] = 0;
  79.         A[5][0] = 0; A[5][1] = 0; A[5][2] = 0; A[5][3] = 1; A[5][4] = 0; A[5][5] = 0; A[5][6] = 0; A[5][7] = 1; A[5][8] = 0;
  80.         A[6][0] = 0; A[6][1] = 0; A[6][2] = 0; A[6][3] = 0; A[6][4] = 0; A[6][5] = 0; A[6][6] = 0; A[6][7] = 0; A[6][8] = 1;
  81.         A[7][0] = 0; A[7][1] = 0; A[7][2] = 0; A[7][3] = 0; A[7][4] = 0; A[7][5] = 0; A[7][6] = 0; A[7][7] = 0; A[7][8] = 0;
  82.         A[8][0] = 0; A[8][1] = 0; A[8][2] = 0; A[8][3] = 0; A[8][4] = 0; A[8][5] = 0; A[8][6] = 0; A[8][7] = 0; A[8][8] = 0;
  83.        
  84.         B[0][0] = 0; B[0][1] = 0; B[0][2] = 1; B[0][3] = 1; B[0][4] = 0; B[0][5] = 0; B[0][6] = 0; B[0][7] = 0; B[0][8] = 0;
  85.         B[1][0] = 0; B[1][1] = 0; B[1][2] = 1; B[1][3] = 0; B[1][4] = 0; B[1][5] = 0; B[1][6] = 0; B[1][7] = 0; B[1][8] = 0;
  86.         B[2][0] = 0; B[2][1] = 0; B[2][2] = 0; B[2][3] = 0; B[2][4] = 0; B[2][5] = 0; B[2][6] = 1; B[2][7] = 0; B[2][8] = 0;
  87.         B[3][0] = 0; B[3][1] = 0; B[3][2] = 0; B[3][3] = 0; B[3][4] = 0; B[3][5] = 0; B[3][6] = 0; B[3][7] = 1; B[3][8] = 1;
  88.         B[4][0] = 0; B[4][1] = 1; B[4][2] = 1; B[4][3] = 0; B[4][4] = 0; B[4][5] = 0; B[4][6] = 1; B[4][7] = 0; B[4][8] = 0;
  89.         B[5][0] = 1; B[5][1] = 0; B[5][2] = 0; B[5][3] = 1; B[5][4] = 0; B[5][5] = 0; B[5][6] = 0; B[5][7] = 1; B[5][8] = 0;
  90.         B[6][0] = 0; B[6][1] = 0; B[6][2] = 0; B[6][3] = 0; B[6][4] = 0; B[6][5] = 0; B[6][6] = 0; B[6][7] = 0; B[6][8] = 1;
  91.         B[7][0] = 0; B[7][1] = 0; B[7][2] = 0; B[7][3] = 0; B[7][4] = 0; B[7][5] = 0; B[7][6] = 0; B[7][7] = 0; B[7][8] = 0;
  92.         B[8][0] = 0; B[8][1] = 0; B[8][2] = 0; B[8][3] = 0; B[8][4] = 0; B[8][5] = 0; B[8][6] = 0; B[8][7] = 0; B[8][8] = 0;
  93.     }
  94.    
  95.     private static boolean verifyMarkov(int[][]A, int [][] B, int n) {
  96.         boolean isMarkovEquivalent;
  97.    
  98.         skeletonRule(A, n);
  99.         skeletonRule(B, n);
  100.                
  101.         if (isSameMatrix(A, B, n)) {
  102.             if (isImmoralityRuleValid(A, B, n)) {
  103.                 isMarkovEquivalent = true;
  104.             } else {
  105.                 isMarkovEquivalent = false;
  106.             }          
  107.         } else {
  108.             isMarkovEquivalent = false;
  109.         }
  110.        
  111.         return isMarkovEquivalent;
  112.     }
  113.    
  114.     public static void main(String[] args) {
  115.         int n = 9;
  116.  
  117.         int[][] A = new int[n][n];
  118.         int[][] B = new int[n][n];
  119.        
  120.         fillMatrixes(A, B);
  121.        
  122.         System.out.println("The matrixes are equivalent by Markov's rule? " + verifyMarkov(A, B, n));      
  123.     }
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement