Big-O表記は一定の因子を隠しているため、項の係数が非常に大きいため、妥当な入力サイズでは実行できないアルゴリズムがいくつか存在します。n
ランタイムがである既知のアルゴリズムはありますが、低次項が非常に大きく、妥当な入力サイズの場合、ランタイムが完全に支配されますか?このようなアルゴリズムをアルゴリズムコースの例として使用したいと思います。これは、big-O表記がすべてではないという正当な理由を与えるからです。o (f (n ))
ありがとう!
Big-O表記は一定の因子を隠しているため、項の係数が非常に大きいため、妥当な入力サイズでは実行できないアルゴリズムがいくつか存在します。n
ランタイムがである既知のアルゴリズムはありますが、低次項が非常に大きく、妥当な入力サイズの場合、ランタイムが完全に支配されますか?このようなアルゴリズムをアルゴリズムコースの例として使用したいと思います。これは、big-O表記がすべてではないという正当な理由を与えるからです。o (f (n ))
ありがとう!
回答:
暗号化は、縮退した場合の例です。たとえば、AES暗号化の解読はです。キーサイズに応じて、またはまたは有限数の中から適切なキーを見つけるだけです(十分な平文がキーを明確に決定できることがわかっていると仮定します)。ただし、操作でさえ、今日のすべてのコンピュータ(10億個程度、それぞれが1シードあたり約10億回の操作を行う)は、宇宙の寿命(約10億秒)よりも長くなります。
big-Oがすべてではない理由を説明する少し異なる方法は、小さな入力サイズに対して異なるアルゴリズムを使用する場合があることを指摘することです。たとえば、クイックソートを取る。ピボットを適切に選択すると(これはトリッキーなビジネスです)、それはです。クイックソートは分割統治によって機能します。すべてのインスタンスには、小さな配列の多くのソートが含まれます。小さな配列の場合、挿入ソートなどの2次方式の方がパフォーマンスが優れています。したがって、最高のパフォーマンスを得るには、大きな配列のクイックソートには、小さなサイズの挿入ソートの多数の実行が含まれます。
パラメータ化された複雑さとFPTアルゴリズムの分野から2つの例が思い浮かびます。これはあなたが探しているものとは正確には違うかもしれませんが、ここに行きます。
3-COLORINGやHAM-CYCLEなどのグラフの問題を考えます。どちらの問題もモナディック2次論理で表現できるため、有限のツリー幅を持つグラフの線形時間で決定できます。これはBruno Courcelleの結果ですが、結果のアルゴリズムは実用的ではありません。
もう1つの例は、一定の数の変数を持つ整数線形計画法(ILP)は線形時間で解くことができると言って、Lenstraによる深い結果です。Ravi Kannanによる追加の作業により、ビットの整数の算術演算で整数プログラミングの実現可能性の問題を解決できることがわかりました。はILP変数の数、は入力のビット数です。これにより、FPTアルゴリズムが発生します。これは、非常に小さなインスタンスでのみ実用的です。
あなたの質問にいくぶんか関連しているのは、理論的には良いパフォーマンスを持つことが知られているアルゴリズムですが、小さいインスタンスでは非実用的であるために実際の問題では使用されません。言い換えれば、要求されたように、「アドバタイズされたパフォーマンス」は、理論的には大規模な入力に対してのみ可能であり、実際のアプリケーションでは見られません。これはBig-Ohの見積もりに反映される場合もあれば、正確に反映されない場合もあります。一部のアルゴリズムは理論的な「パフォーマンス」は優れていますが、非常に論理的に複雑であり、誰も実装したことがないため、実際のインスタンスサイズでの「パフォーマンス」は、最大フローの問題などで知られていません。
参照最先端の最大フローアルゴリズム実用的ですか?tcs.se
tcs.se を実装するには複雑すぎる強力なアルゴリズムも参照してください
銀河アルゴリズム RJLiptonブログ
これは一種の冗談ですが、深刻な側面があります...
クイックソート。項は、ひどいピボットを一貫して選択することから生じる最悪のケースを支配するため、実際に役立ち。O (n 2)