Dadas dos arrays, la tarea de multiplicarlas. Las arrays pueden ser cuadradas o rectangulares.
Ejemplos:
Input : mat1[][] = {{1, 2}, {3, 4}} mat2[][] = {{1, 1}, {1, 1}} Output : {{3, 3}, {7, 7}} Input : mat1[][] = {{2, 4}, {3, 4}} mat2[][] = {{1, 2}, {1, 3}} Output : {{6, 16}, {7, 18}}
Multiplicación de Arrays Cuadradas:
El siguiente programa multiplica dos arrays cuadradas de tamaño 4*4, podemos cambiar N por diferentes dimensiones.
Java
// Java program to multiply two square // matrices. import java.io.*; class GFG { static int N = 4; // This function multiplies mat1[][] // and mat2[][], and stores the result // in res[][] static void multiply(int mat1[][], int mat2[][], int res[][]) { int i, j, k; for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { res[i][j] = 0; for (k = 0; k < N; k++) res[i][j] += mat1[i][k] * mat2[k][j]; } } } // Driver code public static void main(String[] args) { int mat1[][] = { { 1, 1, 1, 1 }, { 2, 2, 2, 2 }, { 3, 3, 3, 3 }, { 4, 4, 4, 4 } }; int mat2[][] = { { 1, 1, 1, 1 }, { 2, 2, 2, 2 }, { 3, 3, 3, 3 }, { 4, 4, 4, 4 } }; // To store result int res[][] = new int[N][N]; int i, j; multiply(mat1, mat2, res); System.out.println("Result matrix" + " is "); for (i = 0; i < N; i++) { for (j = 0; j < N; j++) System.out.print(res[i][j] + " "); System.out.println(); } } } // This code is contributed by anuj_67.
Result matrix is 10 10 10 10 20 20 20 20 30 30 30 30 40 40 40 40
Complejidad temporal: O(n 3 ). Se puede optimizar utilizando la multiplicación de arrays de Strassen
Espacio Auxiliar: O(n 2 )
Multiplicación de Arrays Rectangulares:
Usamos punteros en C para multiplicar a arrays. Consulte la siguiente publicación como requisito previo del código.
¿Cómo pasar una array 2D como parámetro en C?
Java
// Java program to multiply two matrices. public class GFG { /** * to find out matrix multiplication * * @param matrix1 First matrix * @param rows1 Number of rows in matrix 1 * @param cols1 Number of columns in matrix 1 * @param matrix2 Second matrix * @param rows2 Number of rows in matrix 2 * @param cols2 Number of columns in matrix 2 * @return the result matrix (matrix 1 and matrix 2 * multiplication) */ public static int[][] matrixMultiplication( int[][] matrix1, int rows1, int cols1, int[][] matrix2, int rows2, int cols2) throws Exception { // Required condition for matrix multiplication if (cols1 != rows2) { throw new Exception("Invalid matrix given."); } // create a result matrix int resultMatrix[][] = new int[rows1][cols2]; // Core logic for 2 matrices multiplication for (int i = 0; i < resultMatrix.length; i++) { for (int j = 0; j < resultMatrix[i].length; j++) { for (int k = 0; k < cols1; k++) { resultMatrix[i][j] += matrix1[i][k] * matrix2[k][j]; } } } return resultMatrix; } // Driver code public static void main(String[] args) throws Exception { // Initial matrix 1 and matrix 2 int matrix1[][] = { { 2, 4 }, { 3, 4 } }; int matrix2[][] = { { 1, 2 }, { 1, 3 } }; // Function call to get a matrix multiplication int resultMatrix[][] = matrixMultiplication( matrix1, 2, 2, matrix2, 2, 2); // Display result matrix System.out.println("Result Matrix is:"); for (int i = 0; i < resultMatrix.length; i++) { for (int j = 0; j < resultMatrix[i].length; j++) { System.out.print(resultMatrix[i][j] + " "); } System.out.println(); } } // This code is contributed by darshatandel1998 (Darshan // Tandel) }
6 16 7 18
Complejidad temporal: O(n 3 ). Se puede optimizar utilizando la multiplicación de arrays de Strassen
Espacio Auxiliar: O(m1 * n2)
Consulte el artículo completo sobre Programa para multiplicar dos arrays para obtener más detalles.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA