Nのビットを効率的に取得!?


11

与えられたとM、取得することも可能であるMの番目のビット(またはいずれかの小型基地の桁)Nを!時間/空間におけるO (P (L N (N )、L N (M )))、P (X 、Yは)におけるいくつかの多項式関数であり、X及びY?NMMN!O(p(ln(N),ln(M)))p(x,y)xy

つまり、与えられた、M = 2 μ(とN、M ∈ Z)、ビットを見つける2 μの(2 ηを)!in O (p (η 、μ ))。N=2ηM=2μNM∈Z2μ(2η)!O(p(η,μ))

注:ここではmathoverflow.net でこれを尋ねましたが、回答が得られていないため、クロスポストしました。

他のサイトのコメントから、ジーン・コップは、スターリングの近似を使用してモジュラー演算と高次ビットを実行することで低次ビットを効率的に計算できると指摘しているため、この質問は本当に「中位ビットをどれだけ効率的に計算できるか?」 。

回答:


13

ディック・リプトンは、階乗関数と因数分解の関係に関する2009年からの美しい投稿をしています。この質問には関係のないことがたくさんありますが、1つの顕著な点はこの定理です:

場合!O (log c n )ステップでの直線算術計算により計算でき、因数分解には多項式サイズの回路があります。n!O(logc⁡n)

これは、あなたの質問、特にあなたが言及した時間枠内で、答えるのが難しいという証拠だと思います。


1
ありがとう、これはまさに私が探していたタイプの答えです。これは私の質問に直接答えるものではなく、この2つを正確に接続する方法はわかりませんが、心を休めるのに十分な近さです。
— user834

3

Sureshの答えはおそらくあなたのための質問に答えますが、私は特別なケースを指摘すると思いました。任意のベースの下位桁の結果はいつでも計算できます。テイク、当社の拠点として。p

p(p2)p2pN!Xp=∑i=1⌊logp⁡(N!)⌋⌊Npi⌋logp⁡(N!)ln⁡N!≈Nln⁡N−NpN⌈logp⁡(N)⌉>N!1≤i≤N⌈logp⁡(N)⌉⌊Npi⌋=0i>⌊logp⁡(N!)⌋

XpN!p

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.