방금 숙제를 위해이 작업을 수행 한 작업이 있었고, 나는 깔끔한 주현절이 있다고 생각했습니다. Strassen의 알고리즘은 "더 깊은"사전 합산 구성 요소와 교환하기 위해 적은 작업을 사용하기 위해 사전 합산 구성 요소의 "폭"을 희생합니다. 여전히 최종 답변을 추출하는 데 사용할 수 있습니다. (이것이 가장 좋은 방법은 아니지만 설명하기가 어렵습니다).
나는 " 연산 대 컴포넌트 " 의 균형을 설명하기 위해 두 개의 복소수를 곱하는 예를 사용할 것입니다 .
우리는 4 곱셈을 사용하여 4 개의 제품 구성 요소를 얻습니다 .
우리가 원하는 2 개의 최종 구성 요소 : 복소수의 실수 부와 허수 부는 실제로 선형 방정식입니다. 그래서 우리는 여기에서 덧셈 과 곱셈의 두 가지 연산을 다루고 있습니다.
실제로 구성 요소 를 단순히 더하거나 빼면 4 개의 제품 구성 요소 가 2 개의 최종 구성 요소 를 나타낼 수 있습니다 .
그러나 마지막 2 개의 구성 요소는 제품의 합계 로 표시 될 수 있습니다 . 내가 생각해 낸 것은 다음과 같습니다.
보시다시피, 실제로 두 가지 제품 구성 요소 만 필요합니다 .
하지만 기다려! 각 대문자는 제품 자체입니다! 그러나 우리는 (a + b) (c + d)에서 (A + B + C + D)를 생성 할 수 있다는 것을 알고 있습니다.
결국 우리 알고리즘은 더 적지 만 "더 나은"구성 요소를 사용하도록 최적화되어 더 많은 합산 연산을 위해 곱셈의 양을 교환합니다.
이것을 가능하게하는 것의 일부는 분배 특성이며, A (B + C)는 (AB + AC)와 같습니다. 첫 번째는 1 더하기와 1 곱하기 연산을 사용하여 계산할 수있는 반면, 두 번째는 2 곱하기와 1 합을 필요로합니다.
Strassen의 알고리즘 은 대상 제품 용어가 더 많고 해당 용어를 얻는 데 사용할 수있는 더 많은 제품 구성 요소가 있다는 점을 제외하고 복잡한 숫자 제품에 적용한 최적화의 확장입니다. 2x2 행렬의 경우 Strassen의 알고리즘은 8 곱셈이 필요한 알고리즘을 7 곱셈이 필요한 알고리즘으로 변형하고 분배 속성을 활용하여 두 곱셈을 하나의 연산으로 "병합"하고 대신 새 "더 나은"노드에서 제거하여 1을 추출합니다. 제품 용어 등
좋은 예 : (-1)과 (2)와 (5)를 얻으려면 그것을 (-1), (2), (5)로 생각하거나 (2-3)으로 생각할 수 있습니다 ), (2), (2 + 3). 그러나 두 번째 연산은 덜 뚜렷한 숫자를 사용합니다. 중요한 점은 고유 숫자의 수가 행렬 곱셈에 대해 계산해야하는 제품 구성 요소의 수와 동일하다는 것입니다. 우리는 단순히 분산 특성을 통해 다른 변형을 사용하여 동형 결과를 활용하는 기본 작업에 대한 특정 견해를 찾기 위해이를 최적화합니다.
아마도 이것은 어떤 방식으로 토폴로지에 연결될 수 있습니까? 이것은 단지 나의 평신도가 그것을 이해하는 방법입니다.
편집 : 다음은 복소수 설명을하는 과정에서 그린 노트의 그림입니다.