@DavidRicherby가 이미 지적했듯이, 복잡성에 대한 여러 가지 측정 방법이 혼합되어 혼란이 발생합니다. 그러나 조금 자세히 설명하겠습니다.
일반적으로 임의의 링에 대한 다항식 곱셈 알고리즘을 연구 할 때 알고리즘이 사용하는 링의 산술 연산 수에 관심이 있습니다. 특히, 일부 (계산적, 단일) 고리 과 n 보다 작은 차수의 두 다항식 f , g ∈ R [ X ] 가 주어지면 Schönhage-Strassen 알고리즘은 O ( n log n log log n ) 곱셈과 R의 덧셈이 필요합니다 f g ∈ R [ X ] 를 계산하기 위해Rf,g∈R[X]nO(nlognloglogn )아르 자형fg∈ R[X]하여, 대략 인접한 에 통일성 번째 시근을 R은 약간 큰 링 얻는 D ⊃ R을 고속 푸리에 변환하여 위에 다음과 D 의 생성물 컴퓨팅, D를 .엔아르 자형D ⊃ R디디
반지가 포함 된 경우 통일 번째 루트, 다음이를 가속화 할 수있다 O ( N 로그 N ) 에서 작업 R을 고속 푸리에을 통해 직접 변환을 사용하여 R . 보다 구체적으로, Z ⊂ C 보다 O ( n log n ) 링 연산을 사용하여이 작업을 수행 할 수 있습니다 (복소수에 대한 정확한 산술이 필요하다는 사실은 무시).엔O ( n 로그n )아르 자형아르 자형Z ⊂ CO ( n 로그n )
고려할 수있는 다른 방법은 작업의 비트 복잡성입니다. 그리고 이것은 비트 길이 의 두 정수를 곱할 때 우리가 관심을 갖는 것 입니다. 여기에서 프리미티브 연산은 두 자리를 곱하고 더하기 (carry 포함)입니다. 따라서 Z에 두 개의 다항식을 곱할 때 계산 중에 발생하는 숫자에 일정한 수의 기본 연산을 사용하여 곱할 수 없다는 사실을 실제로 고려해야합니다. 이것과 Z 에 n > 2 의 n 번째 기본 단위의 근본 이 없다는 사실 은 O ( n log n )를 적용 하지 못하게합니다.엔지지엔n > 2O ( n 로그n )연산. 만약 고려하여이를 극복 링에서 계수 Z / ⟨ 2 N + 1 ⟩ 제품 다항식의 계수를 초과하지 않으므로,이 바인딩. 거기에서 ( n 이 2의 거듭 제곱 일 때 ) 2 의 n 번째 근본으로 2 의 합동 클래스를 가지며, 계수 곱셈 알고리즘을 재귀 적으로 호출하여 총 O ( n log n을 얻을 수 있습니다. log log n ) 원시 (즉, 비트) 연산. 그런 다음 정수 곱셈으로 넘어갑니다.에프, gZ / ⟨ 2엔+ 1 ⟩엔2엔O ( n 로그N 로그로그n )
링 연산과 프리미티브 연산의 차이점의 중요성을 잘 보여주는 예를 들어, 다항식을 평가하는 두 가지 방법, Horner 방법과 Estrin 방법을 고려하십시오. 호너 방법 다항식 평가 몇몇 X ∈ Z를 식별 이용하여
F를 ( X ) = ( ... ( F N X + F , N - 1 ) X + ... + ... ) +에프= ∑엔나는 = 0에프나는엑스나는x ∈ Z
까지 에스 트린의 방법 스플릿 동안 F 의 두 부분으로
H = N / 2 Σ는 i가 = 1 F를 N / 2 + I X I 및
L = N / 2 Σ 난 = 0 F 나 X 나
, 즉 H는 정도의 조건을 포함 > n / 2 및 L 정도 ≤ n / 2 ( n 가정
에프( x ) = ( … ( f엔x + fn - 1) x + … + … ) + f0
에프H= ∑나는 = 1n / 2에프n / 2 + 나는엑스나는
L = ∑나는 = 0n / 2에프나는엑스나는
H> n / 2엘≤ N / 2엔 단순성을 위해 2의 거듭 제곱입니다).
에프( x )
에프( x ) = H( x ) xn / 2+ L ( x )
엔n + 로그엔
n / 2n / 2Ω ( n2)엔O ( n )O ( n로그씨n ) = O~( n )c > 0