Tengo problemas para dividir y conquistar la multiplicación de matrices. Por lo que entiendo, dividir las matrices de tamaño nxn en cuadrantes (cada cuadrante es n/2) y luego lo hace:Dividir y vencer la multiplicación de matrices
C11 = A11⋅ B11 + A12 ⋅ B21
C12 = A11⋅ B12 + A12 ⋅ B22
C21 = A21 ⋅ B11 + A22 ⋅ B21
C22 = A21 ⋅ B12 + A22 ⋅ B22
Mi salida para dividir y conquistar es realmente grande y estoy teniendo problemas para averiguar resolver el problema ya que no soy muy bueno con la recursividad.
ejemplo de salida:
original Matrix A:
4 0 4 3
5 4 0 4
4 0 4 0
4 1 1 1
A x A
clásica:
44 3 35 15
56 20 24 35
32 0 32 12
29 5 21 17
divide y vencerás:
992 24 632 408
1600 272 720 1232
512 0 512 384
460 17 405 497
¿Podría alguien decirme qué estoy haciendo mal para dividir y conquistar? Todas mis matrices son int[][]
y el método clásico es la multiplicación de matriz de bucle 3 tradicional
qué es lo que quiere hacer la multiplicación de matrices de esta manera? Si está interesado en el rendimiento en bruto, hay bibliotecas numéricas disponibles que estoy seguro serían más rápidas de lo que podría escribir por su cuenta en un tiempo razonable. Si estás interesado en aprender sobre computación numérica, comenzaría con el mosaico de bucles (Wikipedia tiene un artículo) en lugar de una solución recursiva. – Samsdram
es para la tarea. – Raptrex