Obtenir efficacement des morceaux de N! ?


11

Compte tenu et , est - il possible d'obtenir le « e bit (ou chiffre d'une petite base) dedans le temps / espace de , où est une fonction polynomiale en et ?M M N ! O ( p ( l n ( N ) , l n ( M ) ) ) p ( x , y ) x yNMMN!O(p(ln(N),ln(M)))p(x,y)xy

c'est-à-dire, étant donné , (avec , ), trouvez le bit dedans . M = 2 μ N M Z 2 μ ( 2 η ) ! O ( p ( η , μ ) )N=2ηM=2μNMZ2μ(2η)!O(p(η,μ))

Remarque: J'ai posé cette question sur mathoverflow.net ici et je n'ai reçu aucune réponse, j'ai donc posté plusieurs messages .

D'après le commentaire sur l'autre site, Gene Kopp souligne que l'on peut calculer efficacement les bits de poids faible en faisant de l'arithmétique modulaire et des bits de poids fort en utilisant l'approximation de Stirling, donc cette question est vraiment `` avec quelle efficacité peut-on calculer les bits de poids moyen? .

Réponses:


13

Dick Lipton a un beau post de 2009 sur la relation entre la fonction factorielle et l'affacturage. Il y a beaucoup de choses qui ne sont pas liées à cette question, mais un point saillant est ce théorème:

Si n!peut être calculé par un calcul arithmétique linéaire en étapes O(Journalcn) , puis l'affacturage a des circuits de taille polynomiale.

Je soupçonne que cela prouve que votre question, en particulier dans les délais que vous mentionnez, sera difficile à répondre.


1
Merci, c'est exactement le type de réponse que je cherchais. Cela ne répond pas directement à ma question et je ne vois pas exactement comment connecter les deux, mais c'est assez proche pour me rassurer.
user834

3

La réponse de Suresh répond probablement à la question pour vous, mais j'ai pensé signaler un cas particulier. Vous pouvez toujours calculer le résultat pour les chiffres les moins significatifs pour n'importe quelle base. Prenez comme base.p

Clairement, chaque p ème terme de la factorielle est un multiple de . Chaque ( p 2 ) e terme est un multiple de p 2 , etc. Ainsi, la puissance la plus élevée de p qui est un facteur de N ! est X p = log p ( N ! ) i = 1Np(p2)p2pN!. logp(N!)est facile à estimer par approximation de Stirlings:lnN! NEnN-N. De plus,pNlogp(N)>N! , de sorte que la somme peut toujours être calculée efficacement en additionnant à la place pour1iNlogp(N)(puisqueNXp=je=1Journalp(N!)NpjeJournalp(N!)lnN!NlnN-NpNJournalp(N)>N!1jeNJournalp(N)pouri>logp(N!)).Npje=0je>Journalp(N!)

Ainsi, les derniers chiffres de N ! sont nuls en base p .XpN!p

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.