多項式時間と指数時間


90

誰かが多項式時間、非多項式時間、および指数時間アルゴリズムの違いを説明できますか?

たとえば、アルゴリズムにO(n ^ 2)時間がかかる場合、どのカテゴリに属しますか?

回答:


85

これを確認してくださいて。

指数関数は多項式よりも悪いです。

O(n ^ 2)は、多項式の一種であり(指数が2に等しい特殊なケース)、指数よりも優れている2次カテゴリに分類されます。

指数関数は多項式よりもはるかに悪いです。関数がどのように成長するかを見てください

n    = 10    |     100   |      1000

n^2  = 100   |   10000   |   1000000 

k^n  = k^10  |   k^100   |    k^1000

kが1.1のようなものより小さくない限り、k ^ 1000は非常に巨大です。同様に、宇宙のすべての粒子のようなものは、それを成し遂げるために、数兆億年の間、毎秒1,000億億回の操作をしなければならないでしょう。

私はそれを計算しませんでしたが、それは大きなことです。


29
私はあなたの何百万ものすべてを楽しんだ。
ジョセフィン

7
kが1よりもかなり大きい場合のk ^ 1000は非常に巨大である場合にはk = 1、それはあまり印象的だし、K = 1.00069387場合は...、それは2です
ジョセフィン

2
nはどうですか!vs k ^ n。私は2 ^ n(最も一般的)、nについて知っています!より高価になりますが、k> 2、nである一般的なk ^ nを信じています!より安価になります。
Saad 2016

1
「何十億」と言わなくてよかったです。:-)
トムラッセル

@Saad n!漸近的に、定数kの場合は常にk ^ nよりも高価になります。ただし、これは、nの高い値に達した場合にのみ当てはまるという点で正しいです。スターリングの近似することにより、階乗の時間は、より高価周りになる必要があるときはn = E * K、ここで、e = 2.71828 ...
inavda

135

以下は、アルゴリズムを分析する際の一般的なBig-O関数です。

  • O(1)-一定時間
  • O(log(n))-対数時間
  • O((log(n))c)-多対数時間
  • O(n)-線形時間
  • O(n 2-2次時間
  • O(n c)-多項式時間
  • O(c n)-指数時間
  • O(n!)-階乗時間

(n =入力のサイズ、c =定数)

これは、いくつかの関数のBig-Oの複雑さを表すモデルグラフです。

グラフモデル

乾杯:-)

グラフクレジットhttp://bigocheatsheet.com/


12
プラス1は、単語を減らし、より明確にします。
user3144836 2016

1 = N ^ 0そうも多項式
BigChief

46

O(n ^ 2)は多項式時間です。多項式はf(n)= n ^ 2です。一方、O(2 ^ n)は指数時間であり、暗黙の指数関数はf(n)= 2 ^ nです。違いは、nの関数がnをべき乗の底に置くか、指数自体に置くかです。

指数関数的成長関数は、多項式関数よりも大幅に速く(長期的に)成長するため、この区別は、特にnの値が大きい場合に、アルゴリズムの効率に関連します。


この答えには信頼できる(良い)空気がありますが、指数関数の場合の底が必然的に2であるかどうかという点で、@ dheeranの答えとは異なります。
トムラッセル

21

多項式時間。

多項式は、次のような項の合計です。 Constant * x^k 指数関数のConstant * k^x

(どちらの場合も、kは定数で、xは変数です)。

指数アルゴリズムの実行時間は、多項式アルゴリズムの実行時間よりもはるかに速くなります。


18

指数関数(MINIMAL ONE EXPONENTがパラメーターに依存している場合は、指数関数があります):

  • 例:f(x)=定数^ x

多項式(指数が一部の関数パラメーターに依存している場合は、多項式関数があります):

  • 例:f(x)= x ^定数

4
ユーザーが編集した後、元の回答から何も残っていない場合、私はそれが好きではありません。これはある種の「釣りのようなもの」ですか?
Erhard Dinhobl 2014

2
同意する必要があります。変更はばかげています。
レール上のsatya 2015年

3

多項式時間O(n)^ kは、演算数が入力サイズの累乗kに比例することを意味します。

指数時間O(k)^ nは、演算の数が入力のサイズの指数に比例することを意味します


0

o(n sequre)は多項式時間計算量ですが、o(2 ^ n)は、最良の場合はp = npの場合、指数時間計算量です。最悪の場合、入力サイズnが非常に長くなるか、入力サイザーが大きくなるため、p = npは等しくありません。最悪の場合と処理が長くなるため、複雑さの増加率が増加し、入力が小さい場合は入力のnサイズに依存します。入力サイズが大きい場合と大きい場合は多項であるため、p = npが等しくないため、成長率は入力のサイズに依存します。 "。最適化、sat、クリーク、および独立セットも、指数関数的に多項に適合しました。

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