私のように生計を立てるアルゴリズムを研究する人にとって、21世紀の計算の標準モデルは整数RAMです。このモデルは、チューリングマシンモデルよりも実際のコンピューターの動作をより正確に反映することを目的としています。実際のコンピューターは、並列ハードウェアを使用して、複数ビット整数を一定時間で処理します。任意の整数ではありませんが、(時間の経過とともに単語サイズが着実に増加するため)固定サイズの整数でもありません。
モデルは、単語サイズと呼ばれる単一のパラメーター依存します。各メモリアドレスは、単一のビット整数、またはwordを保持します。このモデルでは、入力サイズは入力内の単語の数であり、アルゴリズムの実行時間は単語に対する操作の数です。ワードに対する標準の算術演算(加算、減算、乗算、整数除算、剰余、比較)およびブール演算(ビットごとのand、or、xor、shift、rotate)は、定義により時間を必要とします。w n O (1 )wwnO(1)
正式にはw、このモデルのアルゴリズムを分析するためのワードサイズは定数ではありません。モデルを直感と一致させるために、必要です。そうでなければ、整数を単一の単語に格納することさえできません。それにもかかわらず、ほとんどの非数値アルゴリズムの場合、実行時間は実際にはに依存しません。これらのアルゴリズムは入力の基礎となるバイナリ表現を気にしないからです。Mergesortとheapsortは両方とも時間で実行され。最悪の場合、median-of-3-quicksortは時間で実行されます。1つの注目すべき例外は、時間で実行されるバイナリ基数ソートです。N W O (N ログNを)O (N 2)O (N W )w≥log2nnwO(nlogn)O(n2)O(nw)
設定すると、従来の対数コストRAMモデルが得られます。しかし、いくつかの整数RAMアルゴリズムは、Andersson et al。の線形時間整数ソートアルゴリズムのように、より大きなワードサイズ用に設計されています。、これにはです。W = Ω (ログ2 + ε nは)w=Θ(logn)w=Ω(log2+εn)
実際に発生する多くのアルゴリズムでは、ワードサイズは単に問題ではなく、はるかに単純な均一コストのRAMモデルにフォールバックできます(そして実際にフォールバックできます)。唯一の深刻な問題は、非常に大きな整数を非常に迅速に構築するために使用できるネストされた乗算にあります。一定の時間で任意の整数の算術演算を実行できれば、多項式時間でPSPACEの問題を解決できます。w
更新:また、マルチテープチューリングマシン(または同等に「ビットRAM」)を使用するFürerの整数乗算アルゴリズム、および理論的に分析されるほとんどの幾何学的アルゴリズムなど、「標準モデル」には例外があることにも言及する必要がありますきれいだが理想的な「リアルRAM」モデル。
はい、これはワームの缶です。