본문 바로가기
C, C++/Data Structure & Algorithm in C

[자료구조] 점근표기법(asymptotic notation)

by Air’s Big Data 2020. 10. 2.

점근표기법(asymptotic notation)


O (빅-오)

  • 점근적 상한에 대한 표기법.
  • O(g(n))O(g(n))은 g(n)g(n)의 증가율보다 작거나 같은 함수들의 집합이다.

    예를 들어 O(n^2)에는 O(1),O(n),O(nlogn)O(1),O(n),O(nlog⁡n) 등이 포함된다.

  • 주어진 알고리즘의 증가율보다 크거나 같은 최소의 증가율을 찾는 것이 목적.

 

#Big O 표기법 이해하기

  • f(x) ≤ c*g(x)을 증명할 수 있으면 f(n) = O(g(n))는 참이다.
  • 예시
    • f(x) = 2x^2+3, g(x) = x^2 일때, f(x) = O(g(x))는 참인가?
      • f(x) = O(g(x)) is true when c=3 x≥2

 

#O(1),O(n),O(logn)O(n^2),O(n^3) 비교 

빅오 표기법 그래프


Ω (빅-오메가)

  • 점근적 하한에 대한 표기법.
  • 주어진 알고리즘의 증가율보다 작거나 같은 최대의 증가율을 찾는 것이 목적.
  • n 이 충분히 클 때, 주어진 함수 f(n)의 수행시간은 최상의 경우에도 g(n)과 같거나 더 느리게 실행된다.

#Big Ω 표기법 이해하기

  • f(x) > c*g(x)을 증명할 수 있으면 f(n) = Ω(g(n))는 참이다.
  • 예시
    • f(x) = 2x^2+3, g(x) = x^2 일때,  f(n) = Ω(g(n))이 참일 수 있는 C를 찾을 수 있다면 오메가 표기법을 사용할 수 있다.
      • f(x) = O(g(x)) is true when c=1

 


Θ(빅-세타)

  • 이 표기법은 주어진 함수(알고리즘)의 상한과 하한이 같은지 아닌지를 결정한다.
  • 세타(Θ) 표기법은 항상 상한(O)과 하한(Ω) 사이에 존재한다.
    • 상한과 하한이 같다면, 세타 표기법도 같은 증가율을 갖는다.
  • n 이 충분히 클 때, 주어진 함수 f(n)은 g(n)의 수행시간 범위 내에 존재한다. (a**(n)과 b**(n) 사이에 있다)

#Big Θ 표기법 이해하기

  • f(x) = Θ(g(n))
  • 조건: f(x) = O(g(x))과 f(n) = Ω(g(n))이 참이어야 한다.

연습문제 

f(n) = logn^2, g(n) = logn + 3

  1. f(n) = O(g(n)) = ?
    • f(n) ≤ c * g(n)
    • logn^2 ≤ c * (logn+3)
    • 2logn ≤ c * (logn+3)
    • c = 2일 때 참이다.
  2. f(n) = Ω(g(n))
    • f(x) > c*g(x)
    • 2logn > c*(logn + 3)
    • 2logn > (1/10)*(logn + 3)
    • 2logn > (1/10)logn + 0.3
    • c=1/10, n 2일 때 참이다.
  3. f(x) = Θ(g(n))
    • 1번과 2번이 참이기 때문에 참이다.

 

 

댓글