漸近的な振る舞いの観点から、何が「効率的な」アルゴリズムと考えられていますか?その時点で線を引く基準/理由は何ですか?個人的に、ようなように、私が単純に「サブ多項式」と呼ぶものはすべて効率的であり、は「非効率的」になります。しかし、多項式次数で効率的と呼ばれるものは何でも聞いています。理由は何ですか?
漸近的な振る舞いの観点から、何が「効率的な」アルゴリズムと考えられていますか?その時点で線を引く基準/理由は何ですか?個人的に、ようなように、私が単純に「サブ多項式」と呼ぶものはすべて効率的であり、は「非効率的」になります。しかし、多項式次数で効率的と呼ばれるものは何でも聞いています。理由は何ですか?
回答:
それはコンテキストに依存します。理論的なコンピュータサイエンスでは、通常、すべての多項式時間アルゴリズムが「効率的」と見なされます。例えば近似アルゴリズムでのランタイム、それが任意の合理的な値を実際に使用できませんにもかかわらず、効率的と考えられますε。n 2 100で実行されるSATのアルゴリズムは、驚くべき画期的なものになるでしょう。
古典的なアルゴリズム、つまり80年代以前のアルゴリズムでは、程度以下のランタイム(行列乗算、最小コストのマッチング、フロー、線形計画法など)が効率的であると考えられています。彼らはまだほとんどの人が効率的であると考えています、と私は言うでしょう。もちろん、ソートなどのようにn log nアルゴリズムが知られている場合、n 2アルゴリズムは効率的とは見なされません。
今日では、テラバイトのデータを処理できるサブリニアアルゴリズムまたはストリーミングアルゴリズムに向かう傾向があります。行列乗算を使用して、Googleのインデックス内のすべてのページのページランクを計算してみてください。それはうまくいきません。
もちろん、確かに有用ではありますが、アルゴリズムの漸近ランタイムはすべての話をしているわけではありません。漸近ランタイムが優れているアルゴリズムもありますが、定数が大きすぎて効果的に使用できません。ずっと。リプトンはそれらを銀河アルゴリズムと呼んでいます。ロバート・セッジウィックは、最悪の場合でも境界「は、多くの場合、多くの場合、保証のために無用の予測のために役に立たない」であり、彼の話では、「最悪の場合の分析は、パフォーマンスを予測するための役に立たない」と述べている科学背中にコンピュータサイエンスを置きます。
理論的には、最悪の場合の実行時間が入力長の多項式によって制限されている場合、アルゴリズムは効率的であると言えます。その理由は、多項式には優れた閉包特性があるということです。追加、乗算、合成多項式は、多項式を生成する演算であり、問題を相互に削減する場合に適しています。
もちろん、多項式と指数関数の間のギャップは、入力長が増加するにつれて非常に大きくなるため、多項式時間アルゴリズムの方がはるかに優れています。実際には、多項式時間アルゴリズムは終了するまでに長い時間がかかる場合がありますが、それが最適なアルゴリズム(可能な限り最高)である場合があり、その場合は効率的です。