Skutecznie uzyskuje bity N! ?

11

Biorąc pod uwagę i , czy możliwe jest uzyskanie M -tego bitu (lub cyfry dowolnej małej podstawy) N! w czasie / przestrzeni O (P (ln (N), LN (M))) , gdzie p (x, y) jest kilka funkcji wielomianowej w X i Y ?M M N !N.M.M.N.!p ( x , y ) x yO(p(ln(N.),ln(M.)))p(x,y)xy

tzn. Biorąc pod uwagę N.=2)η , M.=2)μ (z N. , M.Z ), znajdź bit 2)μ z (2)η)!w O(p(η,μ)) .

Uwaga: zapytałem o to tutaj na mathoverflow.net i nie otrzymałem żadnych odpowiedzi, więc napisałem do siebie.

Z komentarza na drugiej stronie Gene Kopp zwraca uwagę, że można efektywnie obliczyć bity niższego rzędu, wykonując modularne bity arytmetyczne i bity wyższego rzędu przy użyciu aproksymacji Stirlinga, więc pytanie brzmi „jak skutecznie można obliczyć bity środkowego rzędu?”. .

użytkownik834
źródło

Odpowiedzi:

13

Dick Lipton ma piękny post z 2009 roku na temat związku funkcji czynnikowej z faktoringiem. Jest wiele rzeczy niezwiązanych z tym pytaniem, ale jednym istotnym punktem jest to twierdzenie:

Jeślimożna obliczyć za pomocą obliczeń arytmetycznych po linii prostej w krokach , a następnie faktoring ma obwody wielomianowe.O ( log c n )n!O(logdon)

Podejrzewam, że jest to dowód na to, że na twoje pytanie, szczególnie w podanych terminach, trudno będzie odpowiedzieć.

Suresh Venkat
źródło
1
Dziękuję, właśnie tego szukałem. To nie odpowiada bezpośrednio na moje pytanie i nie widzę dokładnie, jak połączyć te dwa, ale jest wystarczająco blisko, aby uspokoić umysł.
user834 15.10.10
3

Odpowiedź Suresha prawdopodobnie odpowiada na twoje pytanie, ale pomyślałem, że zwrócę uwagę na szczególny przypadek. Zawsze możesz obliczyć wynik dla mniej znaczących cyfr dla dowolnej bazy. Weź jako naszą bazę.p

Oczywiście każdy piąty wyraz w silni jest wielokrotnością . Każdy p termin jest wielokrotnością , i tak dalej, o najwyższej mocy , który jest czynnikiemto . jest łatwy do przybliżenia przez przybliżenie Stirlingsa: . Ponadto, więc sumę zawsze można skutecznie obliczyć, sumując zamiast (od( p 2 ) p 2 p N ! X p = log p ( N ! ) i = 1Np(p2))p2)pN.!logp(N!)lnN! NLNXp=ja=1logp(N.!)N.pjalogp(N.!)lnN.!N.lnN.-N.pN.logp(N.)>N.!1jaN.logp(N.)N.pja=0dla ).ja>logp(N.!)

Zatem ostatnie cyfry zmają zero w podstawie . N ! pXpN.!p

Joe Fitzsimons
źródło