작고 고정 된 n에 대해 x 행렬 의 행렬식을 계산하는 데 필요한 최소의 기본 산술 연산을 찾는 작업이 있었습니까? 있습니까? 예를 들어, 입니다.
작고 고정 된 n에 대해 x 행렬 의 행렬식을 계산하는 데 필요한 최소의 기본 산술 연산을 찾는 작업이 있었습니까? 있습니까? 예를 들어, 입니다.
답변:
행렬 의 결정자를 계산하는데 필요한 산술 연산의 수 는 n ω + o ( 1 ) 이며, 여기서 ω 는 행렬 곱셈 상수이다. 예를 들어 , 위키피디아 의이 표 와 각주 및 참조를 참조하십시오. 행렬 반전의 점근 적 복잡성도 이와 동일한 의미에서 행렬 곱셈과 동일합니다.
동등성은 매우 효과적입니다. 특히 ( n / 2 ) × ( n / 2 ) 에 대해 작업함으로써 행렬 의 행렬식을 재귀 적으로 계산할 수 있습니다. Schur 보수를 사용하여 블록을 처리하여 .
따라서 두 개의 ( n / 2 ) × ( n / 2 ) 결정자를 계산하여 하나의 ( n / 2 ) × ( n / 2 ) 행렬을 뒤집어 두 쌍의 ( n / 2 )를 곱하여 결정자를 계산할 수 있습니다. × ( n / 2 ) 행렬 및 일부 더 간단한 연산. 결정적 호출을 재귀 적으로 확장하면 복잡성이 행렬 곱셈과 반전에 의해 지배됩니다.
이것은 작은 에서도 서브 큐브 행렬 곱셈 알고리즘을 사용하지 않아도 잘 작동 합니다. (물론,이 가우스 제거에 다소간 등가 인 것을 종료한다.) 예를 들어,에 대한 N = 4 , 우리가 계산할 수 DET ( D ) 개의 승산과, D - (1) 네 개의 분할하여, B D - 1 C 함께 2 × 8 = 16 개의 곱셈, DET ( - B D - 1 C )두 번의 곱셈과 한 번의 곱셈으로의 최종 답변으로 총 수는 곱하기 더하기 나눗셈이며 코 팩터 확장 에서 40 보다 작습니다 . Strassen의 알고리즘을 사용하면 여기에 두 번의 곱셈이 저장되지만 더 무조건 저장됩니다.
이 확장은 분할을 결정적으로 사용한다는 것을 알 수 있습니다. 나누기를 피하려면 Clow 시퀀스 및 동적 프로그래밍 을 사용하여 작업 에서 그렇게 할 수 있습니다 . 또한 n 2 + ω / 2 + o ( 1 ) 곱셈을 달성하고 나눗셈 을 달성하는 방법 도 알려져 있습니다.