Strassen 알고리즘에서 두 개의 행렬 와 B 의 곱을 계산하기 위해 행렬 A 와 B 는 2 × 2 블록 행렬 로 나뉘며 알고리즘은 순진한 8 블록 행렬과 반대로 7 블록 행렬-행렬 곱을 재귀 적으로 계산합니다. 즉 매트릭스 제품, 우리가 원하는 경우 C = B는 여기서
= [ 1 , 1 1 , 2 2 , 1 2 , 2ㅏ비ㅏ비2 × 278C = A B
우리는
C 1 , 1 = A 1 , 1 B 1 , 1 + A 1
A = [ A1 , 1ㅏ2 , 1ㅏ1 , 2ㅏ2 , 2] , B = [ B1 , 1비2 , 1비1 , 2비2 , 2] , C = [ C1 , 1씨2 , 1씨1 , 2씨2 , 2]
8곱하기
가 필요합니다. 대신 Strassen에서
M 1 :=( A 1 , 1 + A 2 , 2 )( B 1 , 1 + B 2 , 2 )를 계산합니다씨1 ,1= A1 , 1비1 ,1+A1 , 2비2 , 1씨1 ,2= A1 , 1비1 ,2+A1 , 2비2 , 2씨2 ,1= A2 , 1비1 ,1+A2 , 2비2 , 1씨2 ,2= A2 , 1비1 ,2+A2 , 2비2 , 2
8
및
M k 를
C 1 로
사용하여
C i , j를 구함 , 1 = M 1 + M 4 − M 5 + M 7미디엄1: = ( A1 , 1+ A2 , 2) ( B1 , 1+ B2 , 2)미디엄2: = ( A2 , 1+ A2 , 2) B1 , 1미디엄삼: = A1 , 1( B1 , 2− B2 , 2)미디엄4: = A2 , 2( B2 , 1− B1 , 1)미디엄5: = ( A1 , 1+ A1 , 2) B2 , 2미디엄6: = ( A2 , 1− A1 , 1) ( B1 , 1+ B1 , 2)미디엄7: = ( A1 , 2− A2 , 2) ( B2 , 1+ B2 , 2)
씨I , J미디엄케이
그러나, 행렬
M k 의 선택은나에게 임의적 인 것으로 보인다. 왜 우리가
A 와
B 의 하위 행렬의 특정 제품을 선택하는지에 대한 더 큰 그림이있습니까? 또한, 나는 기대
M이 K 의 참여
I , J s와 '
B 난을 , j는 '여기 경우 될 것 같지 않습니다 대칭 패션,에이야. 예를 들어
M 2 :=씨1 , 1= M1+ M4− M5+ M7씨1 , 2= M삼+ M5씨2 , 1= M2+ M4씨2 , 2= M1− M2+ M삼+ M6
미디엄케이ㅏ비미디엄케이ㅏI , J비I , J . 나는 그것의 상대방
A 1 , 1 ( B 1 , 2 + B 2 , 2 ) 도 계산될 것으로 기대합니다. 그것은 다른로부터 얻어 질 수 있기 때문에, 안
M의 K 의.
미디엄2: = ( A2 , 1+ A2 , 2) B1 , 1ㅏ1 , 1( B1 , 2+ B2 , 2)미디엄케이
누군가가 이것에 약간의 빛을 던질 수 있다면 감사하겠습니다.