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.
PHP
<?php // PHP program to multiply two // square matrices. // This function multiplies mat1[][] and // mat2[][], and stores the result in res[][] function multiply(&$mat1, &$mat2, &$res) { $N = 4; 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 $mat1 = array(array(1, 1, 1, 1), array(2, 2, 2, 2), array(3, 3, 3, 3), array(4, 4, 4, 4)); $mat2 = array(array(1, 1, 1, 1), array(2, 2, 2, 2), array(3, 3, 3, 3), array(4, 4, 4, 4)); multiply($mat1, $mat2, $res); $N = 4; echo ("Result matrix is "); for ($i = 0; $i < $N; $i++) { for ($j = 0; $j < $N; $j++) { echo ($res[$i][$j]); echo(" "); } echo (" "); } // This code is contributed // by Shivi_Aggarwal ?>
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?
PHP
<?php // PHP program to multiply two // rectangular matrices // Multiplies two matrices mat1[][] // and mat2[][] and prints result. // (m1) x (m2) and (n1) x (n2) are // dimensions of given matrices. function multiply($m1, $m2, $mat1, $n1, $n2, $mat2) { for ($i = 0; $i < $m1; $i++) { for ($j = 0; $j < $n2; $j++) { $res[$i][$j] = 0; for ($x = 0; $x < $m2; $x++) { $res[$i][$j] += $mat1[$i][$x] * $mat2[$x][$j]; } } } for ($i = 0; $i < $m1; $i++) { for ($j = 0; $j < $n2; $j++) { echo $res[$i][$j] . " "; } echo " "; } } // Driver code $mat1 = array( array( 2, 4 ), array( 3, 4 )); $mat2 = array( array( 1, 2 ), array( 1, 3 )); $m1 = 2; $m2 = 2; $n1 = 2; $n2 = 2; //Function call multiply($m1, $m2, $mat1, $n1, $n2, $mat2); // This code is contributed by rathbhupendra ?>
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