누군가 다항식 시간, 비 다항식 시간 및 지수 시간 알고리즘의 차이점을 설명 할 수 있습니까?
예를 들어, 알고리즘이 O (n ^ 2) 시간을 소요한다면 어떤 범주에 속합니까?
답변:
이것을 확인하십시오 .
지수는 다항식보다 나쁩니다.
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 억억 작업을 수행해야합니다.
나는 그것을 계산하지 않았지만 그것은 크다.
다음은 알고리즘을 분석하는 동안 몇 가지 일반적인 Big-O 함수입니다.
(n = 입력 크기, c = 일부 상수)
다음은 일부 기능의 Big-O 복잡성을 나타내는 모델 그래프입니다.
건배 :-)
그래프 크레딧 http://bigocheatsheet.com/
O (n ^ 2)는 다항식 시간입니다. 다항식은 f (n) = n ^ 2입니다. 반면에 O (2 ^ n)은 지수 시간이며, 함축 된 지수 함수는 f (n) = 2 ^ n입니다. 차이점은 n의 함수가 n을 지수의 밑에 배치하는지 아니면 지수 자체에 배치하는지입니다.
모든 지수 성장 함수는 다항식 함수보다 훨씬 빠르게 (장기적으로) 성장하므로 알고리즘의 효율성, 특히 n 값이 큰 경우 구별이 중요합니다.
지수 (최소 한 지수가 매개 변수에 종속 된 경우 지수 함수가 있음) :
다항식 (NO EXPONENT가 일부 함수 매개 변수에 종속 된 경우 다항식 함수가 있음) :