Ho difficoltà a ottenere dividere e conquistare la moltiplicazione della matrice per funzionare. Da quello che ho capito, si dividono le matrici di dimensioni nxn in quadranti (ciascun quadrante è n/2) e poi si fa:Divide e Conquista moltiplicazione matrice
C11 = A11⋅ B11 + A12 ⋅ B21
C12 = A11⋅ B12 + A12 ⋅ B22
C21 = A21 ⋅ B11 + A22 ⋅ B21
C22 = A21 ⋅ B12 + A22 ⋅ B22
mia uscita per il divide et impera è davvero grande e sto avendo difficoltà a capire fuori il problema perché non sono molto bravo con la ricorsione.
output di esempio:
originale matrice A:
4 0 4 3
5 4 0 4
4 0 4 0
4 1 1 1
A X A
classica:
44 3 35 15
56 20 24 35
32 0 32 12
29 5 21 17
divide et impera:
992 24 632 408
1600 272 720 1232
512 0 512 384
460 17 405 497
Qualcuno potrebbe dirmi che cosa sto facendo male per dividere e conquistare? Tutte le mie matrici sono int[][]
e il metodo classico è il tradizionale 3 per la moltiplicazione della matrice di loop
Perché è che si vuole fare la moltiplicazione di matrici in questo modo? Se sei interessato alle prestazioni non elaborate, sono disponibili librerie numeriche che sono sicuro che sarebbero più veloci di quelle che potresti scrivere da solo in un ragionevole lasso di tempo. Se sei interessato a conoscere il calcolo numerico, inizierei con la piastrellatura del ciclo (wikipedia ha un articolo) invece di una soluzione ricorsiva. – Samsdram
è per i compiti. – Raptrex