다항식 시간 및 지수 시간


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
나는 당신의 모든 수백만을 즐겼습니다.
Josephine

7
k가 1보다 눈에 띄게 크면 k ^ 1000은 매우 큽니다. k = 1이면 덜 인상적이며 k = 1.00069387 ...이면 2입니다.
Josephine

2
n은 어때요! 대 k ^ n. 나는 2 ^ n (가장 흔함), n! 더 비싸지 만 k> 2, n! 저렴합니다.
Saad

1
"수십억"이라고 말하지 않으 셨다니 다행입니다. :-)
Tom Russell

@Saad n! 점근 적으로 상수 k에 대해 항상 k ^ n보다 비쌉니다. 그러나 이것은 우리가 n의 높은 값에 도달 한 경우에만 해당된다는 점에서 옳습니다. Stirling의 근사에 의해 계승 시간은 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
더하기 하나는 더 적은 단어와 더 명확하게합니다.
user3144836 jul.

1 = N ^ 0 너무도 다항식
BigChief

46

O (n ^ 2)는 다항식 시간입니다. 다항식은 f (n) = n ^ 2입니다. 반면에 O (2 ^ n)은 지수 시간이며, 함축 된 지수 함수는 f (n) = 2 ^ n입니다. 차이점은 n의 함수가 n을 지수의 밑에 배치하는지 아니면 지수 자체에 배치하는지입니다.

모든 지수 성장 함수는 다항식 함수보다 훨씬 빠르게 (장기적으로) 성장하므로 알고리즘의 효율성, 특히 n 값이 큰 경우 구별이 중요합니다.


이 대답은 권위있는 (좋은) 공기를 가지고 있지만 지수 케이스의 밑이 반드시 2인지 여부에 따라 @dheeran의 대답과 다릅니다.
Tom Russell

21

다항식 시간.

다항식은 Constant * x^k 지수 가 다음과 같은 것을 의미 하는 것처럼 보이는 용어의 합입니다.Constant * k^x

(두 경우 모두 k는 상수이고 x는 변수입니다).

지수 알고리즘의 실행 시간은 다항 알고리즘보다 훨씬 빠르게 증가합니다.


18

지수 (최소 한 지수가 매개 변수에 종속 된 경우 지수 함수가 있음) :

  • 예 : f (x) = 상수 ^ x

다항식 (NO EXPONENT가 일부 함수 매개 변수에 종속 된 경우 다항식 함수가 있음) :

  • 예 : f (x) = x ^ 상수

4
사용자가 편집 한 후 원래 답변에서 아무것도 남지 않으면 마음에 들지 않습니다. 이것은 일종의 "낚시"인가?
Erhard Dinhobl 2014

2
동의해야합니다. 변화는 말도 안됩니다.
satya on rails 2015 년

3

다항식 시간 O (n) ^ k는 연산 수가 입력 크기의 거듭 제곱 k에 비례 함을 의미합니다.

지수 시간 O (k) ^ n은 연산 수가 입력 크기의 지수에 비례 함을 의미합니다.


0

o (n sequre)는 polynimal 시간 복잡도이고 o (2 ^ n)은 지수 시간 복잡도입니다. 더 이상 최악의 경우로 이동하고 처리하므로 복잡성 증가 속도가 증가하고 입력이 작을 때 입력의 n 크기에 따라 달라집니다 입력 크기가 크고 클 때 다항식이므로 p = np가 같지 않음은 입력의 크기에 따라 성장 속도가 달라짐을 의미합니다 "N ". 최적화, sat, clique 및 independ 집합도 다 동물에 대한 지수에서 만났습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.