Dazzling 개발 노트

[코드트리] 점근적 표기법 본문

Algorithm/코드트리

[코드트리] 점근적 표기법

dj._.dazzling 2023. 12. 18. 20:44

본래 점근적 표기법은 수학적인 개념이기 때문에 엄밀한 정의를 설명하기엔 수학적 지식이 약간 필요하지만, 우리는 간단하게 개념을 이해할 수 있는 수준으로 설명하도록 하겠습니다.

점근적 표기법에는 크게 , , 가 있습니다. 각각 빅-오, 빅-오메가, 빅-세타라고 부릅니다.

간단한 다항식 이라는 식이 있다고 가정하겠습니다.

  • 는 가장 높은 차수 보다 같거나 높은 식을 뜻합니다. 즉, 에서 가장 높은 차수는  이므로 , ,  모두 맞는 말이지만, 우리는 앞으로 이 식을 보게 되었을 때 좀 tight하게  라고 부르게 될 것이며, 이것이 바로 시간복잡도를 재는 척도로 쓰이게 됩니다.
  • 이때 표현은  와 같이 나타낼 수 있습니다.
    만약  이었다면,  으로도 나타내 볼 수 있습니다. 이는 f(n)의 차수가 g(n)의 차수보다 같거나 작다는 의미를 갖습니다.
  • 는 가장 높은 차수 보다 같거나 낮은 식을 뜻합니다.
    즉, 에서 가장 높은 차수는  이므로 , ,  모두 맞는 말이 됩니다.
  • 만약  이었다면,  으로도 나타내 볼 수 있습니다. 이는 f(n)의 차수가 g(n)의 차수보다 같거나 크다는 의미를 갖습니다.
  • 는 최고차항(가장 높은 차수)을 뜻합니다.
    즉, 에서 가장 높은 차수는  이므로 이 됩니다.

또, 점근적 표기법은 n이 무한히 커졌을 때의 상황에 관심이 있기 때문에 식 앞에 있는 상수값은 항상 무시합니다. 즉, 을 만족하며, 이 말은 즉  식은 로 나타낼 수 있음을 뜻합니다. Ω, Θ 역시 마찬가지로 상수값을 전부 무시하게 됩니다.

Side Note

은 참일까요?

정답은 참입니다. n이 커짐에 따라  값이 훨씬 커지게 되기 때문에, 모든 지수승으로 이루어져 있는 식은 전부 다항식보다 크다고 할 수 있습니다.

 

[기호 변환]

문제

 

https://www.codetree.ai/missions/6/problems/translate-notation?&utm_source=clipboard&utm_medium=text

 

두 함수 가 있습니다.
두 함수의 관계를 점근적 표기법을 통해 표현하려고 할 때, 다음 중 옳은 것을 모두 고르세요.

(1) , 

(2) , 

 

풀이/후기

  • O : 가장 높은 차수보다 같거나 높은 식,
  • Ω : 가장 높은 차수보다 같거나 낮은 식,
  • θ : 최고차항

1 - 가장 높은 차수보다 크거나 같다

2 - 가장 높은 차수보다 작거나 같다

3 - 최고차항(가장 높은 차수)

4 - 차수가 2로 같다

5 - 차수가 2로 같다

6 - 차수가 2로 같다

 

 

[O, Ω, Θ]

문제

https://www.codetree.ai/missions/6/problems/asymptotic-notation?&utm_source=clipboard&utm_medium=text

 

우리는 연산 횟수를 일일히 구하는 수고를 덜기 위해, 수학에서 사용하는 점근적 표기법이라는 방법을 사용해 시간복잡도를 표현 하려고 합니다.

다음 함수를 점근적 표기법을 통해 표현해보려고 합니다.

댜음 중 옳은 것을 골라주세요.

 

 

풀이/후기

  • O : 가장 높은 차수보다 같거나 높은 식,
  • Ω : 가장 높은 차수보다 같거나 낮은 식,
  • θ : 최고차항

 

[펜트하우스]

문제

https://www.codetree.ai/missions/6/problems/penthouse?&utm_source=clipboard&utm_medium=text

 

펜트하우스에 코드들이 입주를 합니다. 모두가 높은 층에 입주하고 싶겠지만, 자리는 한정되어 있기 때문에 다음과 같은 규칙으로 배정하기로 했습니다.

두 코드의 시간복잡도를 각각 이라고 할 때,

  • 이 성립하면, 두 코드는 같은 층에 배정됩니다.
  • 만약 이지만 이라면,  보다 낮은 층에 배정됩니다.

다음과 같은 8개의 코드의 시간복잡도가 있다고 합시다. 이 경우 최상층으로 가는 코드의 수와 그 아래층으로 가는 코드의 수를 합치면 어떻게 될까요?

풀이/후기

  • O : 가장 높은 차수보다 같거나 높은 식,
  • Ω : 가장 높은 차수보다 같거나 낮은 식,
  • θ : 최고차항

 

1/2n^5

2^n, logn, nlogn, n^2logn

n^3, 10n^3

 

최상층 1개, 아래층 2개 총 3개

 

 

[수식들의 관계]

문제

https://www.codetree.ai/missions/6/problems/time-complexity?&utm_source=clipboard&utm_medium=text

 

다음은 O, Ω, Θ 기호를 활용한 식에 대한 설명입니다.

옳은 것을 모두 고르세요.

풀이/후기

  • O : 가장 높은 차수보다 같거나 높은 식,
  • Ω : 가장 높은 차수보다 같거나 낮은 식,
  • θ : 최고차항

참고