결정자를 계산하기위한 최소 산술 연산 수


14

작고 고정 된 n에 대해 n x n 행렬 의 행렬식을 계산하는 데 필요한 최소의 기본 산술 연산을 찾는 작업이 있었습니까?n 있습니까? 예를 들어, 입니다.n=5


4
나는 이것에 대해 전문가들에게 물었고 3x3 행렬의 결정자를 계산하기 위해 9 곱셈이 필요한지 여부는 현재까지 알려져 있지 않습니다.
Jeffrey Shallit

@JeffreyShallit 9 가 가능하다면 이미 흥미 롭습니다 ( 예를 들어, 미만 n3). 방법에 대한 n=4 ?
Lembik

3
아뇨, 전혀 흥미롭지 않습니다. n = 3에 대한 9 곱셈은 마이너에 의한 확장입니다. 다시 n = 4 인 경우 미성년자에 의한 확장은 40을 제공합니다.
Jeffrey Shallit

@JeffreyShallit 아, 좋은 지적입니다. 고정 된 대해 순진한 것보다 나은 것이 없으면 놀랍습니다 (적어도 나에게) . n
Lembik

누군가 알고 있다면 아마 우리에게 말할 수 있습니다.
Jeffrey Shallit

답변:


9

행렬 의 결정자를 계산하는데 필요한 산술 연산의 수 는 n ω + o ( 1 ) 이며, 여기서 ω 는 행렬 곱셈 상수이다. 예를 들어 , 위키피디아 의이 표 와 각주 및 참조를 참조하십시오. 행렬 반전의 점근 적 복잡성도 이와 동일한 의미에서 행렬 곱셈과 동일합니다.n×nnω+o(1)ω

동등성은 매우 효과적입니다. 특히 ( n / 2 ) × ( n / 2 ) 에 대해 작업함으로써 행렬 의 행렬식을 재귀 적으로 계산할 수 있습니다.n×n(n/2)×(n/2) Schur 보수를 사용하여 블록을 처리하여 .

D invertibledet(ABCD)=det(D)det(ABD1C).

따라서 두 개의 ( n / 2 ) × ( n / 2 ) 결정자를 계산하여 하나의 ( n / 2 ) × ( n / 2 ) 행렬을 뒤집어 두 쌍의 ( n / 2 )를 곱하여 결정자를 계산할 수 있습니다. × ( n / 2 ) 행렬 및 일부 더 간단한 연산. 결정적 호출을 재귀 적으로 확장하면 복잡성이 행렬 곱셈과 반전에 의해 지배됩니다.n×n(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 )nn=4det(D)D1BD1C2×8=16det(ABD1C)두 번의 곱셈과 한 번의 곱셈으로의 최종 답변으로 총 수는 곱하기 더하기 나눗셈이며 코 팩터 확장 에서 40 보다 작습니다 . Strassen의 알고리즘을 사용하면 여기에 두 번의 곱셈이 저장되지만 더 무조건 저장됩니다.2+4+16+2+1=2540

이 확장은 분할을 결정적으로 사용한다는 것을 알 수 있습니다. 나누기를 피하려면 Clow 시퀀스 및 동적 프로그래밍 을 사용하여 작업 에서 그렇게 할 수 있습니다 . 또한 n 2 + ω / 2 + o ( 1 ) 곱셈을 달성하고 나눗셈 을 달성하는 방법 도 알려져 있습니다.O(n4)n2+ω/2+o(1)


곱셈의 수에 대한 하한을 알고 있습니까? n = 3 일지라도?
Jeffrey Shallit

" 행렬 의 행렬식을 계산하는 데 필요한 산술 연산의 수 는 n ω + o ( 1 ) "라는 구절은 하한이 알려져 있음을 나타냅니다. 그러나 나는 인용 된 어떤 작품에서도 이것을 보지 못했습니다. 뭔가 빠졌습니까? n×nnω+o(1)
Jeffrey Shallit

2
하한은 ( "편미분의 복잡성"W.Baur 및 V.Strassen 의해 용지에 dx.doi.org/10.1016/0304-3975(83)90110-X )
블라디미르 Lysikov
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.