Hesaplamanın karmaşıklığı


Yanıtlar:


12

Hızlı Fourier Dönüşümü kullanarak, üzerinde çarpmalar bitlik sayıların sürede yapılabilir (burada tilde anlamına hangi biz polylogarithmic faktörleri görmezden geliyorsunuz o). Tekrarlanan kareleme ile çarpımları ile hesaplayabiliriz ve her çarpma kabaca biti olan den daha büyük bir sayı . Dolayısıyla, gereken toplam süre .~ O ( k )kO~(k) O ( log n ) n n 2 n 2 log 2 n ˜ O ( n 2 ( log n ) 2 ) = ˜ O ( n 2 )nn2O(logn)nn2n2log2nO~(n2(logn)2)=O~(n2)


3

Yorumlara yanıt olarak düzenlenmiştir işlem zamanı işlem için gerekli süre ayrılacak olabilir ve gerçekleştirmek için gerekli olan . Bir bit sayısını bit sayısıyla çarpmanın okul defteri yöntemiyle tam olarak zaman aldığını varsayacağım ; eklemeler, vb. sabit süredir. Bunun bir sonucu olarak, işlem alır süresi. f 1 ( n ) = n 2 n f 1 ( n ) m n m n n 2 log 2 2 ( n )f(n)=nn2f1(n)=n2nf1(n)mnmnn2log22(n)

hesaplaması için ikili üs kullandığımızı varsayalım . İkili üs işlem operasyonları iki tür yapar : Geçerli ürün karesi ve geçerli bir ürün çarparak göre, bağımsız olarak ikili genişleme mevcut bit 0 veya en kötü durumda, 1'dir , , ikinin bir gücü bu nedenle bu ikili üs sürekli kareler bu answer.Note ulaşıncaya kadar mevcut ürün sahiptir , böylece, bit sayısı bu tür . Aşağıda daha ayrıntılı analiz ettiğimiz durum budur.f ( n ) n, n, 2 , n 2 , n 2 m ' = 2 log 2 ( n ) m = m ' - 1f(n)f(n)nn2n2n2m=2log2(n)m=m1

İlk kare alma işlemi zaman alır ve bu da bit ürünüyle sonuçlanır . İkinci kareleme iki bitlik sayı alır ve kez çalışır ve bu da bir sonuçlanır . Devam , Adım zaman alır ve bir bit ürünü . Bu işlem adımında durur ; sonuç olarak, zaman alıro1=2log2(n)o1t2=o 2 1 o2=2o1iti=4i-1log 2 2 noi=2ilog2(n)mt1=log22(n)o1=2log2(n)o1t2=o12o2=2o1iti=4i1log22noi=2ilog2(n)m

Texp=[1..m]ti=log22(n)[1..m]4i=4m13log22n .

İlk kare maliyeti dahil edildiğinde, en fazla zamana ihtiyacımız olduğunu görüyoruz

Texp+log22n

Not

  • Cevabı maddi olarak etkilemeyeceklerini umarak hesaplamalarda bazı zeminleri ve tavanları atladım.
  • Sadece titiz olmak için kesin bir üst sınır lehine tabanlı bir analizi kasıtlı olarak atladım. O
  • Yukarıdaki akıl yürütme aynı zamanda önceki analizimin neden kusurlu olduğunu da ortaya koyuyor. gösterimi hızlı ve gevşek bir şekilde kullanıldı ve uygun bir şekilde sabitler ihmal, örneğin, sihirli oldu . t i O ( log n )OtiO(logn)
  • Çarpmalar her zaman FFT ve diğer yöntemlerle hızlandırılabilir.

1
hesaplaması için karmaşıklığına nasıl sahipsiniz ? n 2O(1)n2

4
İki bitlik sayıların çarpımının zaman yerine zaman aldığını söyleyeceğim. O ( log n ) O ( 1 )nO(logn)O(1)
Mark Dominus

2
Son sonucun biti olduğunu unutmayın. zamanında bitini hesaplamak çok zordur . n 2 log 2 n O ( log n )n2log2nn2log2nO(logn)

Adil nokta, not alacağım
PKG

1
@ThomasAndrews: Bu, makineye ve maliyet modeline bağlıdır. İlaveler için sabit maliyetle bir RAM modeli varsaymak olağandışı değildir.
Raphael
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.