Умножение матрицы разделения и владения

У меня проблемы с тем, чтобы заставить работать умножение матриц «разделяй и властвуй». Насколько я понимаю, вы разбиваете матрицы размера nxn на квадранты (каждый квадрант равен n / 2), а затем делаете:

C11 = A11⋅ B11 + A12 ⋅ B21   
C12 = A11⋅ B12 + A12 ⋅ B22  
C21 = A21 ⋅ B11 + A22 ⋅ B21  
C22 = A21 ⋅ B12 + A22 ⋅ B22  

Мой результат для «разделяй и властвуй» действительно велик, и у меня возникли проблемы с выяснением проблемы, так как я не очень хорош с рекурсией.

пример вывода:

Исходная матрица A:

4 0 4 3   
5 4 0 4   
4 0 4 0  
4 1 1 1 

A x A

Классический:

44 3 35 15  
56 20 24 35  
32 0 32 12  
29 5 21 17  

Разделяй и властвуй:

992 24 632 408  
1600 272 720 1232   
512 0 512 384  
460 17 405 497  

Может ли кто-нибудь сказать мне, что я делаю неправильно для «разделяй и властвуй»? Все мои матрицы - int [] [] , а классический метод - это традиционное умножение матриц на 3 для цикла

8
задан Bill the Lizard 21 September 2012 в 17:10
поделиться