効率的なアルゴリズムとは何ですか?


10

漸近的な振る舞いの観点から、何が「効率的な」アルゴリズムと考えられていますか?その時点で線を引く基準/理由は何ですか?個人的に、ようなように、私が単純に「サブ多項式」と呼ぶものはすべて効率的であり、は「非効率的」になります。しかし、多項式次数で効率的と呼ばれるものは何でも聞いています。理由は何ですか?f(n)=o(n2)n1+ϵΩ(n2)


回答:


11

それはコンテキストに依存します。理論的なコンピュータサイエンスでは、通常、すべての多項式時間アルゴリズムが「効率的」と見なされます。例えば近似アルゴリズムでのランタイム、それが任意の合理的な値を実際に使用できませんにもかかわらず、効率的と考えられますεn 2 100で実行されるSATのアルゴリズムは、驚くべき画期的なものになるでしょう。n1/ϵ1/ϵϵn2100

古典的なアルゴリズム、つまり80年代以前のアルゴリズムでは、程度以下のランタイム(行列乗算、最小コストのマッチング、フロー、線形計画法など)が効率的であると考えられています。彼らはまだほとんどの人が効率的であると考えています、と私は言うでしょう。もちろん、ソートなどのようにn log nアルゴリズムが知られている場合、n 2アルゴリズムは効率的とは見なされません。n3n2nlogn

今日では、テラバイトのデータを処理できるサブリニアアルゴリズムまたはストリーミングアルゴリズムに向かう傾向があります。行列乗算を使用して、Googleのインデックス内のすべてのページのページランクを計算してみてください。それはうまくいきません。

もちろん、確かに有用ではありますが、アルゴリズムの漸近ランタイムはすべての話をしているわけではありません。漸近ランタイムが優れているアルゴリズムもありますが、定数が大きすぎて効果的に使用できません。ずっと。リプトンはそれらを銀河アルゴリズムと呼んでいます。ロバート・セッジウィックは、最悪の場合でも境界「は、多くの場合、多くの場合、保証のために無用の予測のために役に立たない」であり、彼の話では、「最悪の場合の分析は、パフォーマンスを予測するための役に立たない」と述べている科学背中にコンピュータサイエンスを置きます


9
つまり、効率的とは、自分に合った時間枠で問題を解決することです。
ラファエル

これは実際には独自の答えを必要としませんが、ランダム性を備えた多項式ランタイム(答えで説明)を備えた関数のクラスであるBPPは、しばしば効率的であると見なされます。言い換えれば、上記は正しいですが、コンピューターは一般にランダム性にアクセスして計算を行うことができます。ランダム性の最も重要な実用的な用途の1つはハッシュです。
SamM 2013年

おそらく「効率的」は、そもそも本当に適切な用語ではないのでしょうか。私は微積分学の本の1つを検討しているだけで、著者は多項式ランタイムを「扱いやすい」、指数ランタイムを「扱いにくい」と呼んでいます。
ロバートS.バーンズ

1
@ RobertS.Barnes:異なる単語、同じ問題。
ラファエル


3

背後にある理由は、漸近的な振る舞いの観点から、多項式の成長率は超多項式の成長率よりも明らかに小さいということです。実際には、多項式時間アルゴリズムは、入力サイズが大きくなると、超多項式時間アルゴリズムよりもはるかに速く実行されます。

O(n2000)O(n5)

O(n2)


3

理論的には、最悪の場合の実行時間が入力長の多項式によって制限されている場合、アルゴリズムは効率的であると言えます。その理由は、多項式には優れた閉包特性があるということです。追加、乗算、合成多項式は、多項式を生成する演算であり、問​​題を相互に削減する場合に適しています。

もちろん、多項式と指数関数の間のギャップは、入力長が増加するにつれて非常に大きくなるため、多項式時間アルゴリズムの方がはるかに優れています。実際には、多項式時間アルゴリズムは終了するまでに長い時間がかかる場合がありますが、それが最適なアルゴリズム(可能な限り最高)である場合があり、その場合は効率的です。


何かが特定の問題で最も速い既知のアルゴリズムである場合、その観点からは「効率的」と見なすことができることは理解できますが、ポリタイムで実行されるものを効率的であると考えるのは難しいです。:-)
ロバートS.バーンズ

多項式ランタイムの場合、「効率的」は単なる言葉であり、誤解を招くものです。
ラファエル

@Raphael多分扱いやすいのは...
ロバートS.バーンズ

1
@ RobertS.Barnes:あまり良くない、imho。「扱いやすい」は「効率的」と同じくらい相対的です。
ラファエル

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