Bir sayıya eşit olan binom katsayısını bulmanın karmaşıklığı


19

İkili kodlamada m ( bit kullanarak bir sayı aldığınızı varsayın .O(logm)

Ne kadar hızlı bulabilirsin (ya da böyle olmadığını tespit edebilirsin) ?

n,kN,1<kn2:(nk)=m

Örneğin, m = 8436285 girişi düşünüldüğündem=8436285 , n = 27, k = 10 verilebilir n=27,k=10.


Sorun için naif bir algoritma n için tüm olası değerleri aşacak ve özelliği karşılayan kn değerini arayacaktır .k

Basit bir gözlem, \ log m'den küçük veya O'dan (\ sqrt m) daha büyük n değerlerinin kontrol edilmesine gerek olmadığıdır . Bununla birlikte ( n değeri başına sadece O (1) olası k değerlerini kontrol edebilsek bile ) bu, giriş boyutunda üstel olan verimsiz bir algoritma ile sonuçlanır.ngünlükmÖ(m)Ö(1)kn

Alternatif bir yaklaşım, olası k değerlerini k( {2,3,...,2günlükm} kontrol etmek) ve olası n değerlerini kontrol etmek için yeterli olacaktır . Daha sonra şunu kullanabiliriz:

(nk)k<(nk)<nkk!

Bu nedenle, belirli bir k için yalnızca [\ sqrt [\ leftroot {-2} \ uproot {2} k] {m \ cdot k!}, \ Sqrt [\ leftroot {-2} \ aralığındaki n değerlerini kontrol etmemiz gerekir. [mk!k,mkk] , İkili arama kullanarak ( k sabit olduğunda , (nk) select k monoton olarak n'de artar n), bu O (\ log ^ içinde çalışan bir polinom algoritması verir 2m)Ö(günlük2m) .

Bu hala benim için verimsiz görünüyor ve sanırım bu doğrusal zamanda (giriş boyutunda) çözülebilir.


4
Şimdiye kadar ne denedin? İpucu: de verildiğini varsayın . Bunu çözebilir misiniz? için olası değerlerin aralığı nedir ? Ya da verildiğini varsayın ; bu durumda çözebilir misiniz? için olası değerlerin aralığı nedir ? nnkk
DW

Yanıtlar:


1

Doğru değildir . Örneğin, .( 9(n-k)k<(nk)(92)=36<49=(9-2)2

Ben (henüz) binom katsayılarının aritmetik özelliklerini kullanarak ince bir çözüm bulamadım, ancak bu yardımcı olursa biraz kaba bir tane önerebilirim :-)

Her bir için için bir ilk tahmin (diyelim ) ve Newton-Raphson gibi analitik bir yöntem kullanarak çözebilirsiniz. çözmek istiyorsunuz . İle ilgili olarak, sol taraftaki türevi olduğu burada bilgi işlem kolay digamma fonksiyonudur .n k kn( nk!mkn(ψ(n+1)-ψ(n-k+1)) ( n(nk)-m=0n(ψ(n+1)ψ(nk+1))(nk)ψ

Bir Newton-Raphson aramasının karmaşıklığı sadece fonksiyonun ve türevinin hesaplanmasının karmaşıklığına ve çözüm için gerekli basamak sayısına bağlıdır (bizim durumumuzda sadece en yakın tam sayıya ihtiyacımız var).

Yani genel her biri için arama olmalıdır , için sınırları kullanarak algoritması için dolayısıyla toplam karmaşıklığı (bir binom katsayısı hesaplama sabit zaman aldığını, yapmış gibi görünüyor gibi varsayarak) olurdu .kO(1)kO(log(m))


2
Ben kabul ederken sınırları, (bunun için teşekkür düzenleme bakınız) kapalı idi Verilen arama, neden açıklayabilir alır ? O ( 1 )kO(1)
RB
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.