「漸近的に効率的」とはどういう意味ですか?


12

アルゴリズムがより漸近的に効率的であると言うとき、それはどういう意味ですか?XY

  • Xはすべての入力に適しています。
  • Xは、小さな入力を除くすべての入力に適しています。
  • Xは、大きな入力を除くすべての入力に適しています。
  • Yは、小さな入力にはより良い選択です。

この質問のリンクはこちらです。

http://quiz.geeksforgeeks.org/algorithms-analysis-of-algorithms-question-16/


より漸近的に効率的なアルゴリズムはすべての入力で機能するはずだと思いましたが、「小さいものを除くすべての入力で機能する」の理由がわかりません。


大きな入力は、アルゴリズムのボトルネックを露呈します。私が工学用語で言うところです。
Apiwat Chantawibul 2017

回答:


14

まず、両方のアルゴリズムがすべての入力に対して「機能」します。問題はパフォーマンスについてです。

その質問への答えはちょっとばかげています。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)colgこの例では–ほぼすべての実際の問題に対してアルゴリズムをほぼ確実に実行不可能にします。「完全に実行不可能」とはどういう意味ですか?つまり、そのアルゴリズムが完了する前に、宇宙の熱死が何度も発生するということです。それでも、適切に「大きい」入力の場合、バブルソートよりも高速になります。私の要点は、何らかの方法で「適切に大きな」入力を書き留めることはもちろん、それを計算することは物理的に不可能であるということです。

とにかく、私が正しい答えを言う方法は次のとおりです:「は十分に大きい入力でYよりも少ないステップを必要とします」。適用できる「ステップ」の概念が複数あり、アルゴリズムがあるメトリックでは漸近的に効率が高くなり、別のメトリックでは効率が低くなる可能性があるため、これはまだ少しあいまいです。この表現は、「より良い選択」という価値判断を回避します。キャッシュ効率や実装の単純さなど、一定の要素/項が指定されている場合、漸近的に効率の悪いアルゴリズムまたはさらに効率の悪いアルゴリズムを選択する理由はたくさんあります。バツY

こちらは微妙です。漸近的に最適なアルゴリズムは、漸近的に非最適なアルゴリズムよりも悪い定数係数持つ場合があります。漸近的に最適なアルゴリズムの場合、値は最高になると思いますが、漸近効率のわずかな向上を絞り出すために、定数係数を大幅に増加させる大規模な複雑さが追加されると考えられます。cc


2

このようなことを言うとき、人々が通常意味することは次のとおりです。

TTBBToTB

バツ

特に、2番目の提案を支持する人が多いとはいえ、提案する提案はどれも従いません。

悲しいことに、アルゴリズムを扱う人々のより広いコミュニティは、単純さのために空虚に接する用語を採用しています。(アルゴリズムについて正確役立つステートメントを作成するのは難しいです!)

あなたは私たちの参照質問に興味があるかもしれません。


アルゴリズムXは、すべての入力サイズnが値n0より大きく、n0> 0の場合、Xがyよりも時間がかかる場合、Yよりも漸近的に優れていると言えます。

T=+1TB=

コンピュータサイエンスは、ウィキペディアの記事を一度読んだことがないプログラマからではなく、CSのリソースから学ぶことをお勧めします。(はい、それは厳しいですが、プログラマーサークルでSOであっても、あまりにも多くの虚偽が広まっているのを目にしました。)


2

「漸近的に効率的」とは、「特定のサイズを超えるすべての問題に対してより効率的」であることを意味します。それは「特定のサイズ」が何であるかを述べておらず、その「特定のサイズ」の前に何が起こるかについても述べていない。

したがって、「漸近的に効率的」は小さな入力サイズについてはまったく何も言わないので、2番目を除くすべての答えは明らかに間違っています。しかし、2番目のものも問題があります。

103010301040

1015

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.