@DavidRicherby'nin zaten belirttiği gibi, karışıklık farklı karmaşıklık ölçütleri karıştığı için ortaya çıkıyor. Ama biraz ayrıntıya gireyim.
Genellikle, rasgele halkalar üzerinde polinom çoğalması için algoritmalar çalışırken, bir algoritmanın kullandığı halkadaki aritmetik işlemlerin sayısı ile ilgilenilir. Özellikle, bazı (değişmeli, birimsel) halkaları ve düşük bir dereceye iki polinomu verildiğinde, Schönhage-Strassen algoritması de hesaplamak için çarpmalar ve eklemeler , kabaca, daha büyük bir halka elde etmek için birleşik ilkel kök kökleri tarafından ve ardından kullanarak üzerinde Fourier Dönüşümüf , g ∈ R [ X ] n, O ( n, log n, log günlük n ) R f g ∈ R [ X ] n, R, D ⊃ Ar D DRf,g∈R[X]nO(nlognloglogn)R,fg∈ R [ X]nR,D ⊃ RD, Ürünün işlem .D
Yüzüğün bir içeriyorsa birlik-inci kökünü, o zaman bu kadar hızlandırılabilir operasyonları Hızlı Fourier üzerinde doğrudan Transform kullanarak . Daha spesifik olarak, , bunu halka işlemlerini kullanarak yapabilirsiniz bunun karmaşık sayılar üzerinde tam aritmetik gerektireceği gerçeğini göz ardı ederek).O ( n log n ) R R Z ⊂ C O ( n log n )nO ( n günlüğün )R,R,Z ⊂ CO ( n günlüğün )
Dikkate alınabilecek diğer bir önlem, bir operasyonun biraz karmaşıklığıdır. Ve bu, bit uzunluğu iki tamsayısını çarparken ilgilendiğimiz şeydir . Burada, ilkel işlemler çarpılır ve iki hane eklenir (taşıma ile). Bu nedenle, üzerinde iki polinomu , hesaplama sırasında ortaya çıkan sayıların sabit sayıda ilkel işlem kullanılarak çarpılamayacağı gerçeğini dikkate almanız gerekir. Bu ve aslında bir bulunmamaktadır birlik ilkel kök inci dozajda da önlenmiş Eğer algoritması. düşünerek bunun üstesindennZ , n , n > 2 O ( n, log n ) f , g , Z / ⟨ 2 , n + 1 ⟩ n 2 n- O ( n, log n, log günlük n )ZZnn > 2O ( n günlüğün )f, ghalka, katsayılı ürün polinom katsayıları geçmeyecektir, çünkü bu bağlandı. Orada (zaman , sahip (denkliği sınıfı) ikisinin bir güçtür) bir şekilde birlik-inci kökü ve yinelemeli katsayı çarpımı için algoritma arayarak, sen toplam elde edebilirsiniz ilkel (yani bit) işlemler. Bu daha sonra tamsayı çarpımına geçer.Z / ⟨ 2n+ 1 ⟩n2nO ( n günlüğün günlüğügünlükn )
Halka operasyonları ve ilkel operasyonlar arasındaki farkın önemini vurgulayan bir örnek için, polinomları değerlendirmek için iki yöntemi düşünün: Horner'ın yöntemi ve Estrin'in yöntemi. Horner yöntem değerlendirir polinom bazı kimlik yararlanılarak
, yöntemi iki parçaya
ayırır ve
, yani derece terimleri içerir ve derece koşullar x ∈ Z f ( x ) = ( … ( f n x + f n - 1 ) x + … + … ) + f 0 f H = n / 2 ∑ i = 1 f n / 2 + i X i L = nf= ∑ni = 0fbenXbenx ∈ Z
f( x ) = ( … ( fnx + fn - 1) x + … + … ) + f0
f'H= ∑i = 1n / 2fn / 2 + iXben
H>n/2L≤n/2nL = ∑i = 0n / 2fbenXben
'H> n / 2L≤ N / 2( sadelik için ikinin gücü olduğunu varsayalım ).
n
Daha sonra, hesaplayabilir ile
ve yinelemeli algoritmasının uygulanması.f ( x ) = H ( x ) x n / 2 + L ( x )f( x )
f( x ) = H( x ) xn / 2+ L ( x )
İlki, ekleme ve çarpma kullanarak, ekleme ve çarpma sayısı (yani halka işlemleri) için optimal olduğu kanıtlanmıştır, ikincisi daha fazlasına ihtiyaç duyar (en azından ).n + giriş nnn + günlüğün
Ancak, bit işlemleri düzeyinde, en kötü durumda, Horner'ın yönteminin en az boyutunda çarpımı gerçekleştirdiğini ve çok bitine yol açtığını gösterebilir. işlemleri (bu, zamanında iki bit sayısının çarpılabileceğini varsaysak bile geçerlidir ), oysa Estrin'in şeması bazı için işlemlerini kullanıyor , asimptotik olarak daha hızlı.n / 2n / 2Ω ( n2)nO ( n )O ( n günlüğücn ) = O~( n )c > 0