더북(TheBook)

n = 10일 때 알고리즘 A는 알고리즘 B보다 거의 10배나 더 느리므로 매우 나빠 보인다. 그러나
n = 100일 때 두 알고리즘은 거의 같아지며, 값이 더 커지면 A가 훨씬 더 나아 보인다.

근본적인 이유는 n 값이 커지면 n2 항을 포함한 함수가 최고차항이 n인 함수보다 더 빠르게 성장하기 때문이다. 최고차항은 가장 높은 지수를 나타내는 용어다.

알고리즘 A의 최고차항은 가장 큰 계수 100을 갖고 있으므로 n이 작을 때 BA보다 더 나은 성능을 보인다. 그러나 계수에 관계없이 an2 > bn를 만족하는 n 값이 항상 있으며, 이는 ab가 어떤 값이어도 마찬가지다.

이러한 논리는 최고차항이 아닌 나머지 항에도 적용된다. 알고리즘 A의 실행 시간이 n+1000000이어도 n이 충분히 크다면 알고리즘 B보다 더 나은 성능을 보이게 될 것이다.

일반적으로 최고차항이 더 작으면 큰 문제에 대해 더 나은 알고리즘이라고 기대할 수 있지만, 작은 문제에 대해서는 다른 알고리즘이 더 나은 성능을 보여주는 교차점이 있다. 교차점의 위치는 알고리즘, 입력, 하드웨어에 따라 달라지므로 알고리즘 분석에서는 일반적으로 이를 무시한다. 그렇다고 여러분이 이에 대해 잊어버려도 된다는 의미는 아니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.