본문 바로가기
자료구조

#02-1 빅-오에 대한 수학적 접근

by chunkind 2024. 3. 24.
반응형

두 개의 함수 f(n)과 g(n)이 주어졌을 때, 모든 n >= K에 대하여 f(n) <= Cg(n)을 만족하는 두 개의 상수 C와 K가 존재한다면, f(n)의 빅-오는 O(g(n)) 이다.

 

* f(n) = 5n^2 + 100

* g(n) = n^2

 

이 상황에서 f(n) <= Cg(n)을 만족시키기 위한 C를 구해보자, (단 C=3500, n >= 12 꼭 12가 아니여도 된다 적당한수를 정하였다.)

 

위 가정을 대입해보면

f(n) <= Cg(n)       =>     5n^2 + 100 <= 3500 * n^2

 

빅-오의 정의에 해당하는 C와 K가 3500, 12로 각각 존재하니 5*n^2 + 100의 빅-오는 n^2이다.

f(n) = 5 * n^2 + 100  =>  O(n^2)

 

지금까지 전개한 내용을 빅-오의 정의와 연결시켜 보면

 

"두 개의 함수 f(n)과 g(n)이 주어졌을 때"
=> 두 개의 함수 f(n) = 5 * n^2 + 100, g(n) = n^2이 주어졌을 때

"모든 n >= K에 대하여"
=> 모든 n >= 12 에 대하여,

"f(n) <= Cg(n)을 만족하는 두 개의 상수 C와 K가 존재하면"
=> 5 * n^2 + 100 <= 3500 * n^2 을 만족하는 3500(C)과 12(K)가 존재하니,

"f(n)의 빅-오는 O(g(n))이다"
=> 5 * n^2 + 100 의 빅-오는 O(n^2) 이다.

 

상수 C와 K를 크게 잡아도 될까? n >= K 에 대하여 f(n) <= Cg(n)을 만족시킨다는 것에 무슨 의미가 있을가?

 

먼저 K값에 대해서 보자면, f(n) <= Cg(n)를 만족하는데 있어서 n>=K라는 식의 범위젱한을 둔 이유는 다음과 같다.

 

"n이 계속 커진다. 그러다가 어느 순간 이후부터 f(n) <= Cg(n)을 항상 만족하기만 하면 된다."

 

즉, 빅-오를 판별하는데 있어서 f(n) <= Cg(n)을 만족하는 n의 값은 중요하지 않다. 중요한 것은 n의 값이 계속해서 커지면서 어느 순간부터는 f(n) <= Cg(n)에서 C를 크게 잡아도 상관없는 이유는 무엇일까? 이는 다음의 빅-오 판별결과를 가지고 이야기하겠다.

 

"5 * n^2 + 100의 빅-오는 O(n^2)이다."

 

이는 다음의 뜻으로 해석할 수 있다.

 

"5 * n^2 + 100 가 연산횟수의 증가율이 크다고 한들 증가율의 패턴이 n^2를 넘지 못한다."

 

즉, 빅-오는 증가율의 상한선을 표현하는 표기법이다! 따라서 "~의 증가율 패턴을 넘지 못한다." 라는 것을 증명하기 위해서, n^2의 증가율 패턴을 보이면서 C가 큰 수식을 만드는 것이다.

반응형