프로그래밍/알고리즘

[알고리즘]02.점근 표기법 및 빅오 표기법

홍범87 2022. 12. 15. 13:31

점근 표기법 (asymptotic notation)

점점 점, 가까울 근 : 점점 가까워짐
  • 정수론과 해석학의 방법
  • 어떤 함수가 증가하는 모습을 또 다른 함수와 비교
  • 알고리즘의 복잡도를 논하거나 단순화 시킬 때 사용

컴퓨터 공학에서의 빅오 표기법

  • 대문자 O를 이용해 표기
  • 주로 알고리즘을 분류하기 위해 사용
O의 의미는 order of the function ( 대략 그 함수 정도)

분류하는 기준

입력 데이터가 많아짐에 따라 다음 둘이 얼마나 늘어나는지 측정

  • 실행 시간 ( 시간 복잡도)
    • 알고리즘에서 주로 신경쓰는 부분
  • 필요한 공간 ( 공간 복잡도)
O(1) < O(log n) < O(n) < O(nlog n) < O(n^2) < O(2^n) < O(n!)

'대략 그 정도'의 의미

  • 알고리즘의 실행 시간을 일반화하여 표현해서 쉽게 분류
    • 실행 시간의 예 : T(n) = 5n^2 - 5n + 3 <- 다항식의 결과가 나온다
    • 그중 최대 차항만 가지고 이야기 한다. 즉, 상기 실행 시간은 O(n^2)이 된다.

최선 vs 평균 vs 최악

  • 데이터에 따라 실제 알고리즘의 실행 속도가 달라질 수 있음
  • 하기 이미지는 교육 차원의 O 표기법의 성능

실무 차원에서 N^2 까지는 OK 
N^3 부터는 고민해봐야할 문제