Strassen은 어떻게 행렬 곱셈법을 고안 했습니까?


18

유명한 Strassen의 행렬 곱셈 알고리즘 은 전통적인 O (n 3 )에서 O (n 2.8 ) 로의 시간 복잡성을 감소시키기 때문에 우리에게 실질적인 치료법입니다 .

그러나 Cormen과 Steven Skienna의 저서조차도 내가 겪은 모든 자료 중 Strassen이 그것에 대해 어떻게 생각했는지 분명히 밝히지 않았습니다.

Strassen의 행렬 곱셈 알고리즘의 이론적 근거는 무엇입니까? 이것은 운이 좋은 사고입니까 아니면 더 깊은 것이 있습니까?


아무도 모른다는 말을 들었습니다. 무엇이든 주로 추측 일 것입니다. 그러나, 나는 이것을 읽을 수는 있지만 적용 할 수있는 것을 발견 했습니다.
Dukeling

Strassen alg 생각합니다. 위키 백과에서는 명확합니다.
MarshalSHI

4
@meshuai 나는 그것이 대부분의 다른 자원들처럼, 그것이 어떻게 생각 했는지 가 아니라 왜 그것이 효과있는지 설명 할 뿐이라고 생각 합니다.
Dukeling

2
: 당신은 쉬트 라쎈의 원래 종이를 살펴 가질 수 scgroup.hpclab.ceid.upatras.gr/class/SC/Papers/Strassen.pdf
악셀 켐퍼

답변:


26

Strassen 외에 Strassen이 어떻게 자신의 아이디어를 얻었는지 말해 줄 수있는 사람은 없습니다. Howeber¹, 나는 여러분이 대수 기하학과 표현 이론에 관심이 있다면 그 공식을 어떻게 찾을 수 있었는지 말할 수 있습니다. 또한 Strassen의 공식이 가능한 한 우수함을 나타내거나 7보다 적은 곱셈을 사용하는 두 개의 2x2 행렬의 곱을 계산하는 공식이 없다는 것을 보여주는 도구를 제공합니다 .

행렬에 관심이 있기 때문에 기본 선형 대수학을 알고 있으며 고급 세부 정보가 약간 흐릿하다고 가정합니다.

먼저 평면에서 평면으로의 모든 선형 맵 집합을 E 라고합시다 . 이것은 기본적으로 모든 2 × 2 행렬의 집합이지만 특정 좌표계는 잊어 버립니다. 왜냐하면“기본 좌표계”보다 더 나은 좌표계가 있다면 행렬 곱셈에 관심이있을 수 있기 때문입니다. 또한 나타낸다하여 우리 † E 의 이중 공간 E 와에 의해 X = P (E⊗E † ⊗E †) 텐서 제품에 관련된 투영 공간 E⊗E † ⊗E † .

특수 형태 [c⊗α⊗β]X = P (E⊗E † ⊗E †) 의 요소는 행렬에 대한 기본 연산으로 해석 될 수 있으며, 일부 적절한 좌표계에서 행렬의 계수를 읽습니다. A 와 행렬 B 의 계수를 계산하고 이러한 계수의 곱을 일부 행렬 C 에 씁니다 . X 의 일반 요소는 이러한 기본 연산의 조합이므로 P (E) × P (E) 에서 P (E) 로의 맵으로 이해되는 두 행렬 의 곱 πX의 한 점입니다 .

일반적인 매트릭스 식 제품 및 쉬트 라쎈의 화학식 그래서 저 넣어야하자,이 선형 동작의 조합으로 표현 될 수 W₁ 이러한 기본 동작의 세트 [c⊗α⊗β]을 나를 기하학적 그들의 조합을 설명하자.

하자 W₂이 의 다양한 수 secantsW₁X. 그것은 두 가지 (일반) 점을 통과하는 모든 라인의 노조 (의 폐쇄를) 복용에 의해 얻어진다 W₁ . 우리는 그것을 두 개의 elemetary 연산의 모든 조합 세트로 생각할 수 있습니다.

하자 W₃이 의 다양한 수 시컨트 비행기W₁X. 그것은 세 가지 (일반) 지점을 통과하는 모든 비행기의 노조 (의 폐쇄) 복용에 의해 얻어진다 W₁을 . 우리는 그것을 3 개의 elemetary 연산의 모든 조합 세트로 생각할 수 있습니다.

유사하게, 우리는 더 큰 지수를 위해 종 품종을 정의합니다. 이러한 품종은 점점 커지고 있습니다. 즉 W₁⊂W₂⊂W that입니다. 따라서 고전적인 행렬 곱 공식은 행렬 곱이 W₈ 점임을 나타냅니다 . 사실은

제안 (Strassen) — 행렬 π곱은 W₇입니다.

내가 아는 한 Strassen은 그런 식으로 물건을 넣지 않았지만 이것은이 질문에 대한 기하학적 관점입니다. 이 관점은 Strassen의 공식이 최고임을, 즉 πW₆에 있지 않음 을 증명할 수 있기 때문에 매우 유용합니다 . 여기서 개발 된 기하학적 방법은 광범위한 문제에 사용될 수 있습니다.

나는 당신의 호기심을 잡기를 바랍니다. Landsberg와 Manivel의이 기사를 읽으면 더 나아갈 수 있습니다.

http://arxiv.org/abs/math/0601097

¹ 감기에 걸렸기 때문에이 오타를 고치지 않겠습니다.


21 곱셈으로 (3x3) 행렬 곱을 수행 할 수 있다는 점이 엄청나게 빠른 알고리즘으로 이어진다는 것을 보여주는 것은 매우 간단합니다. 이것이 가능 / 불가능 / 알 수없는 아이디어가 있습니까?
gnasher729

3

방금 숙제를 위해이 작업을 수행 한 작업이 있었고, 나는 깔끔한 주현절이 있다고 생각했습니다. Strassen의 알고리즘은 "더 깊은"사전 합산 구성 요소와 교환하기 위해 적은 작업을 사용하기 위해 사전 합산 구성 요소의 "폭"을 희생합니다. 여전히 최종 답변을 추출하는 데 사용할 수 있습니다. (이것이 가장 좋은 방법은 아니지만 설명하기가 어렵습니다).

나는 " 연산 대 컴포넌트 " 의 균형을 설명하기 위해 두 개의 복소수를 곱하는 예를 사용할 것입니다 .

복소수에 대한 방정식.

우리는 4 곱셈을 사용하여 4 개의 제품 구성 요소를 얻습니다 .

우리는 4 개의 제품 구성 요소를 가지고 있습니다.

우리가 원하는 2 개의 최종 구성 요소 : 복소수의 실수 부와 허수 부는 실제로 선형 방정식입니다. 그래서 우리는 여기에서 덧셈곱셈의 두 가지 연산을 다루고 있습니다.

실제로 구성 요소 를 단순히 더하거나 빼면 4 개의 제품 구성 요소2 개의 최종 구성 요소 를 나타낼 수 있습니다 .

우리의 제품 구성 요소는 우리의 최종 구성 요소를 나타낼 수 있습니다.

그러나 마지막 2 개의 구성 요소는 제품의 합계 로 표시 될 수 있습니다 . 내가 생각해 낸 것은 다음과 같습니다.

실제로 3 개의 고유 한 제품 구성 요소 만 필요합니다.

보시다시피, 실제로 두 가지 제품 구성 요소 만 필요합니다 .

우리의 3 가지 독특한 구성 요소.

하지만 기다려! 각 대문자는 제품 자체입니다! 그러나 우리는 (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). 그러나 두 번째 연산은 덜 뚜렷한 숫자를 사용합니다. 중요한 점은 고유 숫자의 수가 행렬 곱셈에 대해 계산해야하는 제품 구성 요소의 수와 동일하다는 것입니다. 우리는 단순히 분산 특성을 통해 다른 변형을 사용하여 동형 결과를 활용하는 기본 작업에 대한 특정 견해를 찾기 위해이를 최적화합니다.

아마도 이것은 어떤 방식으로 토폴로지에 연결될 수 있습니까? 이것은 단지 나의 평신도가 그것을 이해하는 방법입니다.

편집 : 다음은 복소수 설명을하는 과정에서 그린 노트의 그림입니다.

복소수 부분을 알아 내기위한 참고 사항.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.