매트릭스 곱셈의 속도를 높이기 위해 이중 기본 시스템에 대해 모호하게 기억합니다.
이중베이스 시스템은 하나의 번호에 두 개의베이스를 사용하는 중복 시스템입니다.
n = Sum(i=1 --> l){ c_i * 2^{a_i} * 3 ^ {b_i}, where c in {-1,1}
중복은 하나의 숫자를 여러 방법으로 지정할 수 있음을 의미합니다.
Todor Cooklev의 Vassil Dimitrov의 "행렬 다항식 계산을위한 하이브리드 알고리즘"기사를 찾을 수 있습니다.
내가 할 수있는 가장 짧은 개요를 제공하려고합니다.
그들은 행렬 다항식을 계산하려고했습니다 G(N,A) = I + A + ... + A^{N-1}
.
Supoosing N은 복합 G(N,A) = G(J,A) * G(K, A^J)
이며 J = 2를 신청하면 다음을 얻습니다.
/ (I + A) * G(K, A^2) , if N = 2K
G(N,A) = |
\ I + (A + A^2) * G(K, A^2) , if N = 2K + 1
또한,
/ (I + A + A^2) * G(K, A^3) , if N = 3K
G(N,A) = | I + (A + A^2 + A^3) * G(K, A^3) , if N = 3K + 1
\ I + A * (A + A^2 + A^3) * G(K, A^3) , if N = 3K + 2
이러한 방정식 중 일부는 첫 번째 시스템에서 빠르고 일부는 두 번째 시스템에서 더 낫다는 것이 "분명한"(농담으로)이므로에 따라 가장 좋은 것을 선택하는 것이 좋습니다 N
. 그러나 이것은 2와 3 모두에 대해 빠른 모듈로 연산이 필요합니다. 이중베이스가 들어오는 이유는 다음과 같습니다. 기본적으로 둘 다에 대해 모듈로 연산을 빠르게 수행하여 결합 된 시스템을 제공 할 수 있습니다.
/ (I + A + A^2) * G(K, A^3) , if N = 0 or 3 mod 6
G(N,A) = | I + (A + A^2 + A^3) * G(K, A^3) , if N = 1 or 4 mod 6
| (I + A) * G(3K + 1, A^2) , if N = 2 mod 6
\ I + (A + A^2) * G(3K + 2, A^2) , if N = 5 mod 6
나는이 분야의 전문가가 아니기 때문에 더 나은 설명을 위해 기사를보십시오.