まず、両方のアルゴリズムがすべての入力に対して「機能」します。問題はパフォーマンスについてです。
その質問への答えはちょっとばかげています。1つのアルゴリズムが他のアルゴリズムよりも漸近的に効率的であると言う1つの方法は、何らかの(問題固有の)入力サイズがあり、より大きな入力サイズに対して、より効率的なアルゴリズムが、通常はいくつかの抽象的な測定により、「計算ステップ」を少なくする場合です。比較の数。
答えの考え方は、漸近的に効率的なアルゴリズムは、その入力サイズの前にさらに多くのステップを必要とする可能性があるということです。でき漸近的に、より効率的なアルゴリズムは、すべての入力のためのより少ない工程を必要とする場合であってもよいが、通常ではありません、それは場合、実際にする必要はありません。したがって、「正しい」答えのより適切な表現は、「は、可能性のある小さな入力を除いて、すべての入力に対してより良い選択になる」です。X
言葉遣いはまだそれほど素晴らしいものではありません。最初に、どのアルゴリズムが「より良い選択」であるかを決定するために、より多くの要素が入りますが、この場合は意図が十分に明確であると説明します。本当の問題は「小さい」と「大きい」です。私のお気に入りの論文の1つは、すべての明確な問題に対する最速および最短のアルゴリズムです。本稿では、与えられたアルゴリズムについて説明し、任意の関数の指定を、それが多項式時間で計算することができることを証明はでその関数を計算する最適倍以内の時間複雑プラス添加用語。例えば、5、それは O (n lg n )であったソートアルゴリズムを生成します。実際、これは 5 c n lg n + o (n lg n )のアルゴリズムを生成します。ここで、 cは漸近的*最適アルゴリズムの定数係数です。これは素晴らしいです。ただ1つの問題があります。定数項– oに隠されている(n lg n )O(n2)O(nlgn)5cnlgn+o(nlgn)co (n lgn )この例では–ほぼすべての実際の問題に対してアルゴリズムをほぼ確実に実行不可能にします。「完全に実行不可能」とはどういう意味ですか?つまり、そのアルゴリズムが完了する前に、宇宙の熱死が何度も発生するということです。それでも、適切に「大きい」入力の場合、バブルソートよりも高速になります。私の要点は、何らかの方法で「適切に大きな」入力を書き留めることはもちろん、それを計算することは物理的に不可能であるということです。
とにかく、私が正しい答えを言う方法は次のとおりです:「は十分に大きい入力でYよりも少ないステップを必要とします」。適用できる「ステップ」の概念が複数あり、アルゴリズムがあるメトリックでは漸近的に効率が高くなり、別のメトリックでは効率が低くなる可能性があるため、これはまだ少しあいまいです。この表現は、「より良い選択」という価値判断を回避します。キャッシュ効率や実装の単純さなど、一定の要素/項が指定されている場合、漸近的に効率の悪いアルゴリズムまたはさらに効率の悪いアルゴリズムを選択する理由はたくさんあります。バツY
※こちらは微妙です。漸近的に最適なアルゴリズムは、漸近的に非最適なアルゴリズムよりも悪い定数係数持つ場合があります。漸近的に最適なアルゴリズムの場合、値は最高になると思いますが、漸近効率のわずかな向上を絞り出すために、定数係数を大幅に増加させる大規模な複雑さが追加されると考えられます。cc