低次の項が実際の入力のランタイムを支配するアルゴリズムの例?


10

Big-O表記は一定の因子を隠しているため、項の係数が非常に大きいため、妥当な入力サイズでは実行できないアルゴリズムがいくつか存在します。nO(n)n

ランタイムがである既知のアルゴリズムはありますが、低次項が非常に大きく、妥当な入力サイズの場合、ランタイムが完全に支配されますか?このようなアルゴリズムをアルゴリズムコースの例として使用したいと思います。これは、big-O表記がすべてではないという正当な理由を与えるからです。o f n O(f(n))o(f(n))

ありがとう!


最初に大きなテーブルをセットアップし、次に各入力項目のテーブルで高速ルックアップを行うアルゴリズム?テーブルが十分に大きい場合、テーブルを作成するコストを相殺するためにアイテムの数は膨大になる必要があります。検索エンジンは、がクエリの数である場合の1つの例です。n
アンドラス・サラモン

線形計画法はこのようなものだと聞いたことがあります。シンプレックスは指数関数的ですが、実際には多項式アルゴリズムより高速です。
jmite 2013年

1
あなたのニーズに合うアルゴリズムはわかりませんが、実行時間が線形になるようなものを探します。それを超えると、より小さな項が最も合理的な入力の主要な項を支配する可能性が非常に高くなるためです。しかし、ビッグデータのソートに使用すると、k-wayマージソートがニーズに合うかもしれません。二次メモリへのアクセスには最小限の時間を費やすため、問題が発生します。これは、あなたがデモンストレーションしたいものの適切な例であるかどうかは完全にはわかりませんが、実際には簡単ではないと思います。実例となる。
G.バッハ

回答:


2

暗号化は、縮退した場合の例です。たとえば、AES暗号化の解読はです。キーサイズに応じて、またはまたは有限数の中から適切なキーを見つけるだけです(十分な平文がキーを明確に決定できることがわかっていると仮定します)。ただし、操作でさえ、今日のすべてのコンピュータ(10億個程度、それぞれが1シードあたり約10億回の操作を行う)は、宇宙の寿命(約10億秒)よりも長くなります。O(1)2128219222562128


big-Oがすべてではない理由を説明する少し異なる方法は、小さな入力サイズに対して異なるアルゴリズムを使用する場合があることを指摘することです。たとえば、クイックソートを取る。ピボットを適切に選択すると(これはトリッキーなビジネスです)、それはです。クイックソートは分割統治によって機能します。すべてのインスタンスには、小さな配列の多くのソートが含まれます。小さな配列の場合、挿入ソートなどの2次方式の方がパフォーマンスが優れています。したがって、最高のパフォーマンスを得るには、大きな配列のクイックソートには、小さなサイズの挿入ソートの多数の実行が含まれます。O(nlgn)


ここでは、暗号化を解除することは妥当な例ではないと思います。1つは、正しいキーを漸近的に見つける問題を分析するには、キーサイズが一定でない、つまりサイズキーのキーを壊す、理論的に利用可能なバージョンのRijndaelを考慮する必要があるということです。それ以外の場合は、終了するアルゴリズムはすべて、固定サイズの入力に対してで実行すると言ってもよいでしょう。nO(1)
G.バッハ

@ G.Bachこの例のポイントは、それが(暗号文のサイズの観点から)一定の時間であるにもかかわらず、実行不可能であるということです(その複雑性理論は高い複雑性に関連しています)。
Gilles「SO-邪悪なことをやめよう」

2
あなたの最初の例はうまくいきません。チェックするオプションは有限であるため、アルゴリズムのランタイムはであり、完全なランタイムを説明する低次の項はありません。O(1)o(1)
templatetypedef

1
@templatetypedef AESで暗号化されたメッセージの暗号化を解除することは、メッセージの長さに関してですO(1)
Gilles「SO-邪悪なことをやめなさい」

1

パラメータ化された複雑さとFPTアルゴリズムの分野から2つの例が思い浮かびます。これはあなたが探しているものとは正確には違うかもしれませんが、ここに行きます。

3-COLORINGやHAM-CYCLEなどのグラフの問題を考えます。どちらの問題もモナディック2次論理で表現できるため、有限のツリー幅を持つグラフの線形時間で決定できます。これはBruno Courcelleの結果ですが、結果のアルゴリズムは実用的ではありません。

もう1つの例は、一定の数の変数を持つ整数線形計画法(ILP)は線形時間で解くことができると言って、Lenstraによる深い結果です。Ravi Kannanによる追加の作業により、ビットの整数の算術演算で整数プログラミングの実現可能性の問題を解決できることがわかりました。はILP変数の数、は入力のビット数です。これにより、FPTアルゴリズムが発生します。これは、非常に小さなインスタンスでのみ実用的です。O(p9p/2)LO(p2pL)pL


2
クールセルの定理は、項の定数が大きいために実用的ではなく、一部の項が「小さな」入力でそれを支配しているためではありません。(定数は、入れ子になった否定の数と一次式の数量詞の交代に応じた高さの2の塔として成長します。)O(n)o(n)
David Richerby 2013年

0

あなたの質問にいくぶんか関連しているのは、理論的には良いパフォーマンスを持つことが知られているアルゴリズムですが、小さいインスタンスでは非実用的であるために実際の問題では使用されません。言い換えれば、要求されたように、「アドバタイズされたパフォーマンス」は、理論的には大規模な入力に対してのみ可能であり、実際のアプリケーションでは見られません。これはBig-Ohの見積もりに反映される場合もあれば、正確に反映されない場合もあります。一部のアルゴリズムは理論的な「パフォーマンス」は優れていますが、非常に論理的に複雑であり、誰も実装したことがないため、実際のインスタンスサイズでの「パフォーマンス」は、最大フローの問題などで知られていません。


しかし、低次の項が支配的であったり、高次の項の定数が悪いため、それらは非現実的でしょうか?
David Richerby 2013

いずれか、または組み合わせて、それぞれの場合に分離することは困難です。効果的/実用的に同じ効果。
vzn 2013

-1

これは一種の冗談ですが、深刻な側面があります...

クイックソート。項は、ひどいピボットを一貫して選択することから生じる最悪のケースを支配するため、実際に役立ち。O n 2O(nlogn)O(n2)


1
いいえ、違います。サイズがどれほど大きくても、典型的な入力には2次項がないため、クイックソートは実際に役立ちます。ピボットの選択がデータレイアウトにとって不適切な場合、クイックソートは小さな入力でも2次の動作を示します。
Gilles 'SO-悪をやめる'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.