Divisibilityの最も効率的なアルゴリズムは何ですか?


12

何Divisibity意思決定問題のために、今日知られている最も効率的な(時間の複雑さ)アルゴリズムである:言う、与えられた二つの整数とB、し除算bは?私が求めるのは、(必ずしも)剰余計算のアルゴリズムではないことを明確にしましょう。abを除算するかどうかを知りたいだけです。より具体的には、私の質問は、O m log m log log m よりも優れた時間の複雑さを伴う除算のための最近のアルゴリズムが存在するかどうかです。ここで、mmax { aのビット数ですabababO(mlogmloglogm)m。さらに、はこの問題の下限ですか?max{a,b}Ω(mlogmloglogm)

感謝と敬意、そしてこれがそのような素朴な質問であれば申し訳ありません。


私の知る限り、重要な下限は知られていません。ニュートンの方法では、乗算と除算は本質的に同じ複雑さを持っていることがわかっていると思います(ただし、log logファクターになる可能性がありますか?)、乗算の既知の非線形下限はないので、フォームの下限はあなたは主な結果になると述べています。
スティーブンスタドニッキー

(実際、これを見ると、対数ログ係数はなくなると思います。なぜなら、定数でない乗算を行っている間、それらはすべて同じ長さではないので、超線形係数は同じ方法で吸収できるからです。例えば、線形まだNは「線形」の因子の非定数数を有しているにもかかわらず)。k=1lgnn2kn
スティーブンStadnicki

回答:


4

私のコメントを答えに駆り立てる:分割可能性は除算に(自明ではなく)削減可能であり、除算はニュートン法のようなアプローチを介した乗算に(非自明に)削減可能であるため、問題は整数乗算と同じ時間の複雑さを持つべきです。知る限りでは、自明な線形のものよりも優れた乗算の既知の下限はないため、同じことが問題に当てはまるはずです-特に、乗算は(本質的に)アルゴリズムを持つことが知られているため、n log n log log nの下限に対する希望はほぼ確実に無駄になります。O(nlognlogn)nlognloglogn

除算が乗算の複雑さを正確に低減する理由は(私が理解しているように)、Newtonのメソッドは異なるエスカレーションサイズの乗算のシーケンスを実行するためです。つまり、複雑さ乗算アルゴリズムがある場合、この乗算アルゴリズムを中間ステップとして使用する除算アルゴリズムの複雑さは、Θ lg n k = 0 f nΘ(f(n))—そして、議論中のすべての複雑性クラスの場合、これは単なるΘfnです。Θ(k=0lgnf(n2k))Θ(f(n))


2
Nitpick:現在知られている最良のアルゴリズムよりも優れた乗算アルゴリズムはないと仮定しても、この種の推論から下限がどのように得られるかわかりません。削減は、可分性が乗算より難しくないことを意味します。ただし、分割可能性は、数値ではなくyes / noの答えのみを必要とするため、分割可能性は除算よりも簡単で乗算よりも容易である可能性がまだあります。(少なくとも、あなたが言及した削減はそれを排除するようには見えません。)
DW

2
@DW Agreeed、それは素晴らしい点です。しかし、下限を取得しようとしていませんでした。むしろ、重要な点は、可分性の下限は乗算の対応する下限を意味し、そのような境界は自明な線形境界を超えて知られていないため、分割可能性の線形より良い下限を取得することです(これは何の一部です) OPが求めている)はありそうにない。
スティーブンスタドニッキ16

@DW 分割可能性の線形上限について知ることはまったくショックではありませんし、あなたが言うように、乗算の上限については特に何も意味しませんが、その方向に特定の結果はありません。
スティーブンスタドニッキー16

-2

3,7などで終わるいくつかの数字にはVedicタイプのハックがあると思います。または、ベース2 ^ n除数...

しかし、一般的に言えば、最速の除算アルゴリズムが標準のようです。

見ずに知っている最高のものは、Knuthの半数法のアルゴリズムDです。しかし、その正確性を確認したことはありません。多かれ少なかれO(mn-n ^ 2)で実行されます。ここで、mとnは被除数と除数です...乗算の複雑さを考慮せずに...

ただし、質問は意思決定の問題にのみ関係しているため、下限は驚くほど低くなる可能性があります。

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