Guest User

ActionScript

a guest
Jan 16th, 2012
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import java.util.Random;
  2. import java.util.Scanner;
  3.  
  4. public class Methodes{  
  5. static long  TempsS, TempsC;
  6.     /////////////////// Methode Addition ///////////////////////////////
  7.     public static int[][] Add(int[][]A,int [][]B){  
  8.         int[][]C = new int[A.length][B.length];  
  9.         for(int i = 0; i <A.length;i++){  
  10.             for(int j = 0; j<  B.length;j++){  
  11.                 C[i][j] = A[i][j] + B[i][j];  
  12.                 }  
  13.             }  
  14.             return C;  
  15.         }      
  16.     /////////////////// Methode Soustraction ////////////////////////    
  17.         public static int[][] Sub(int[][]A,int [][]B){  
  18.             int[][]C = new int[A.length][B.length];  
  19.             for(int i = 0; i <A.length;i++){  
  20.                 for(int j = 0; j < B.length;j++){  
  21.                     C[i][j] = A[i][j] - B[i][j];  
  22.                     }  
  23.                 }    
  24.                 return C;  
  25.         }          
  26.     /////////////////// Methode Muliplication Classic //////////////////////        
  27.             public static int[][] Mul(int[][]A,int [][]B){  
  28.                 int[][]C = new int[A.length][A.length];  
  29.                 for(int i = 0; i < C.length; i++){  
  30.                     for(int j = 0; j  <C.length;j++){  
  31.                         for(int k = 0; k<  C.length; k++){  
  32.                             C[i][j] += A[i][k] * B[k][j];  
  33.                             }  
  34.                         }  
  35.                     }      
  36.                 return C;  
  37.         }
  38.     //////////////////// Methode Muliplication Strassen ////////////        
  39.         public static int[][] StrassenMul(int[][]A, int[][]B){  
  40.             int N = A.length/2;  
  41.    
  42.            
  43.             if(A.length == 1)
  44.             {
  45.                 int[][] C = new int[1][1];
  46.                 C[0][0] = A[0][0] * B[0][0];
  47.                 return C;
  48.             }
  49.        
  50.    
  51.            
  52.             int[][]A11 = new int[N][N];  
  53.             int[][]A12 = new int[N][N];  
  54.             int[][]A21 = new int[N][N];  
  55.             int[][]A22 = new int[N][N];  
  56.             int[][]B11 = new int[N][N];  
  57.             int[][]B12 = new int[N][N];  
  58.             int[][]B21 = new int[N][N];  
  59.             int[][]B22 = new int[N][N];  
  60.            
  61.            
  62.            
  63.             for(int i = 0; i < N; i++){  
  64.                 for(int j = 0; j<  N; j++){  
  65.                     A11[i][j] = A[i][j];  
  66.                     B11[i][j] = B[i][j];  
  67.                     A12[i][j] = A[i][N+j];  
  68.                     B12[i][j] = B[i][N+j];  
  69.                     A21[i][j] = A[N+i][j];  
  70.                     B21[i][j] = B[N+i][j];  
  71.                     A22[i][j] = A[N+i][N+j];  
  72.                     B22[i][j] = B[N+i][N+j];  
  73.                     }  
  74.                 }  
  75.            
  76.            
  77.            
  78.             int[][]M1 = Mul((Add(A11,A22)),(Add(B11,B22)));  
  79.             int[][]M2 = Mul((Add(A21,A22)),(B11));  
  80.             int[][]M3 = Mul((A11),(Sub(B12,B22)));  
  81.             int[][]M4 = Mul((A22),(Sub(B21,B11)));  
  82.             int[][]M5 = Mul((Add(A11,A12)),(B22));  
  83.             int[][]M6 = Mul((Sub(A21,A11)),(Add(B11,B12)));  
  84.             int[][]M7 = Mul((Sub(A12,A22)),(Add(B21,B22)));  
  85.             int[][]C11 = Add((Add(M1,Sub(M4,M5))),M7);  
  86.             int[][]C12 = Add(M3,M5);  
  87.             int[][]C21 = Add(M2,M4);  
  88.             int[][]C22 = Add((Add(Sub(M1,M2),M3)),M6);  
  89.            
  90.    
  91.             int[][]C = new int[A.length][A.length];  
  92.                        
  93.             for(int i = 0; i<N; i++){  
  94.                 for(int j= 0; j<N;j++){  
  95.                     C[i][j] = C11[i][j];  
  96.                     C[i][N+j] = C12[i][j];  
  97.                     C[N+i][j] = C21[i][j];  
  98.                     C[N+i][N+j] = C22[i][j];  
  99.                     }  
  100.                 }  
  101.             return C;
  102.             }  
  103.         //////////////////// Methode Affichage //////////////////////////            
  104.         public static void Affi(int[][]array){  
  105.             for(int i = 0; i < array.length; i++){  
  106.                 for(int j= 0; j < array.length; j++){  
  107.                     System.out.print(array[i][j] + " ");  
  108.                     }  
  109.                     System.out.println();  
  110.                 }}    
  111.  
  112.        
  113.         ///////////// MAIN ///////////////
  114.  
  115.            
  116.  
  117.             public static void main(String[]args){  
  118.                
  119.                 System.out.println("Entrez la taille de matrices");
  120.                 Scanner sc =new Scanner(System.in);
  121.                 int n=sc.nextInt();
  122.                 int [][]mat1 = new int [n][n];  
  123.                 int [][]mat2 = new int [n][n];  
  124.  
  125.                 final Random random=new Random();
  126.      
  127.                 for(int i = 0; i < n; i++){  
  128.                     for(int j = 0; j<  n; j++){  
  129.          
  130.                         mat1[i][j] = random.nextInt(5);
  131.                         mat2[i][j] = random.nextInt(5);
  132.      
  133.                     }
  134.                 }
  135.  
  136.      
  137.                 System.out.println("Entez le nombre de repetitions");
  138.         int k=sc.nextInt();
  139.         int l=k;
  140.                
  141.                 while (k>0){
  142.                     System.out.println("Itteration Strassen "+k);  
  143.                     final long A1 = System.currentTimeMillis();      
  144.                     StrassenMul(mat1,mat2);
  145.                     final long A2 = System.currentTimeMillis();
  146.                     k=k-1;
  147.                     TempsS=A2-A1;
  148.                 }
  149.                
  150.                 System.out.println("Strassen: " + (TempsS/l) + "ms");        
  151.                    
  152.                 k=l;
  153.                    
  154.                 while (k>0){
  155.                     System.out.println("Itteration Classique "+k);                     
  156.                     final long A3 = System.currentTimeMillis();      
  157.                     Mul(mat1,mat2);
  158.                     final long A4 = System.currentTimeMillis();
  159.                     k=k-1;
  160.                     TempsC=A4-A3;
  161.                 }
  162.                     System.out.println("Classique: " + (TempsC/l) + "ms");    
  163.                    
  164.                    
  165.                 }  
  166.  
  167.        ////////////////////--------------------------------/////////////////
Advertisement
Add Comment
Please, Sign In to add comment