서문 (Preface)
지난 포스팅에서는 알고리즘의 정의와, 효율성을 분석하는 방법, 그리고 알고리즘의 복잡도를 시간과 공간적인 측면에서 수학적으로 기술할 수 있다는 것에 대해 알아봤습니다. 그리고 이번 포스팅에서의 주제는 이걸 확장시켜서 구체적으로 어떤 방법을 통해 복잡도를 기술할 수 있는지를 다루도록 하겠습니다.
복잡도의 점근적 분석 (Asymptotic Analysis)
점근적 분석이란, 자료의 갯수
해석을 하자면,
즉, 충분히 큰
예를들어 보자면, 충분히 큰 $ n $ 값에 대해,
Big-O Notation (Big-O 표기법)
위에 서술한 내용을 좀 더 간단히 표현하기 위해 수학자들은 몇가지의 표기법을 도입했는데요, 그 중 제일 대표적인 것이 바로 Big-O 표기법입니다. 이번 주제는 직관적인 설명을 위해 좀 더 예시를 통해 설명을 하겠습니다.

이 때, 두 함수는 결국 비슷한 증가 양상 (Trend) 을 보이므로 (다항함수이기 때문에 최고차항이 결국 전체 결과값을 지배하게 됩니다) 함수

다시 말해, 어떤 함수
그래서 무슨 뜻인데?
자 수학 기호가 많이 등장을 해서 순간 당황하셨을 거라 생각합니다. 그렇지만 위의 식을 하나하나 뜯어보면 이해하는게 크게 어렵지 않다는걸 알 수 있습니다. 다시 말해:
에 관한 두 함수 와 가 정의될 때, 충분히 큰 모든 에 대하여 ( )
을 항상 보다 크거나 같게 만드는 어떤 상수 가 존재하면,
이 때을 이라 표기한다.
자 그러면 위의 예시로 돌아가서 대입을 해봅시다.
이 때,
결국 위 과정을 통해 저희가 얻어낸 것은 복잡한 함수로 정의되는 알고리즘의 복잡도를 중요하지 않은 부분을 생략해서 단순화 시켜 나타낼 수 있다는 말인 것이죠. 이를 통해 서로 다른 알고리즘들의 복잡도가 Big-O 를 이용해 같은 함수로 표현될 수 있다면, 이 둘의 "복잡도가 같다, 즉 효율성이 같다" (혹은 비슷하다) 라고 정의를 내릴 수가 있게됩니다.
다항함수 (Polynomial Functions) 의 복잡도의 Big-O 표현
앞으로의 편의를 위해 좀 더 일반화를 해봅시다. 단순히 위에서 본
아래와 같이 일반화된 형태의 최고차항이
이 충분히 큰
(즉, 앞으로 나오는 알고리즘들에서 다항함수 형태의 복잡도를 가질 때, 저희는 Big-O 를 이용해 단순화된 표기를 할 수 있다는 말이죠)
위의 일반화와 비슷한 방식을 다른 형태의 함수 (지수, 로그 등) 에도 적용시킬 수 있습니다. 해당 케이스들은 다음에 다루도록 하겠으나 궁금하다면 직접 찾아보거나 증명을 해보는 것도 좋은 방법입니다.
기타 Big-O 의 성질
(즉, 두 함수의 곱에 Big-O 를 씌우면 각각의 Big-O 로 bounded 되는 함수들의 곱에 Big-O 를 씌운 것과 같습니다.)
(두 함수를 합한 것의 Big-O 표현은 두 함수의 Big-O bounding 함수 중 큰 것에 Big-O 표현과 같습니다)
또,
이외의 Approximation (근사) 표현
Big-O 표현은 어떤 함수의 upper bound (즉,
Big-Omega Notation (Big-Omega 표기법)
오메가의 경우에는 Big-O 와 반대로 어떤 함수의 lower bound 를 알려주는 표현입니다. 즉, 두 함수
Theta Notation (Theta 표기법)
마지막으로, theta 의 경우에는 어떤 함수의 증가 양상이 충분히 큰 모든
요약 (Summary)
이번 포스팅에서는 새로운 수학적 표현들이 많이 등장해 살짝 당황스러우셨을수도 있을 것 같습니다. 그렇지만 지난번에도 언급했듯 수식은 결국 위의 정의한 내용들과 같은 말을 하는 것 뿐이니 앞으로 알고리즘을 분석하는데에 있어 Big-O, Big-Omega, 그리고 Theta 표기법이 어떤 뜻인지, 대략적으로만 이해하셔도 충분합니다. 그럼 다음 시간에는 좀 더 다양한 함수들로 표현되는 알고리즘의 복잡도와 예제들을 중점적으로 알아보도록 하겠습니다.
'Algorithms (알고리즘) > Complexity Analysis (복잡도 분석)' 카테고리의 다른 글
Complexity Analysis (1) - Computational Complexity (계산 복잡도) (0) | 2022.04.18 |
---|
댓글