web-dev-qa-db-ja.com

クヌースの基本的なアルゴリズムからのこの声明は、今日でも適用できますか?

ある意味で10! (10階乗)は、計算に役立つものとそうでないものとの間のおおよその境界線を表します。

これは、KnuthのTAOCP Fundamental Algorithms book(1973)からのものです。これはまだ有効なステートメントですか、それとも計算能力によって時代遅れになっていますか?

10
Bon Ami

それはまだ合理的です。

10! = 3,628,880。その後のすべてのステップは、AT少なくとも1桁上昇します。

(fact 10)
3628800

(fact 11)
39916800 -- about 40 million

(fact 12)
479001600 -- almost 500 million

(fact 13.0)
6227020800.0 -- over 6 billion

すぐに、あなたは議会の支出数について話している。

21
John R. Strohm

幸いなことに、良い教授はまだ私たちと一緒にいて、決定的な答えを確認するための最良の方法は、彼に手紙を書いて彼の意見を聞くことです。

とはいえ、階乗が表す関数ほど絶対数は重要ではないと思います。クヌースがその時にそれを実現したかどうかにかかわらず、彼がその声明で確立したモデルは、過去数十年間に計算するのに実際的だったものを振り返り、その後の数十年にわたって前方に見るのに非常にうまく機能します。

1973年に、データを生成、保存、転送、処理する能力は、10を作成するのに十分に制限されました。撮影するのに妥当な「ファーエッジ」フィギュア。 Knuth(またはそのほかの誰か)が、それ以来私たちが楽しんできたほぼすべての指数関数的な改善を予測できたのではないかと思いますが、階乗は実際の数値にうまく適合しています。

私はこれを直接目にしました。10年前、私は約5,000万件のレコードを保存および処理する方法を開発すると同時に、桁違いにどのように処理するかを考えているプロジェクトに取り組みました。 10年後、私は同様のプロジェクトを行っています。私の目標値は、すべて階乗的にシフトしています。

                      2002           2012
Small Test .......  9! / 362K ... 10! / 3.6M
Large Test ....... 10! / 3.6M ... 11! /  40M
Capacity Goal .... 11! /  40M ... 12! / 479M
Capacity Dream ... 12! / 479M ... 13! / 6.3B

両方のプロジェクトを行っているグループは、それらよりもはるかに丸い数字を取り囲んでいましたが、階乗はそれほど遠くないです。世界のグーグルとフェイスブックには、私の現在のプロジェクトが夢見ているようなことをするためのリソースがありますが、私が座っているところから、13! 10年以内に、それほど遠くないように思われます。

1992年には大量のデータについては考えていませんでしたが、後から考えると、おそらく1階乗少ないすべてのものを調べていたと思います。

15
Blrfl