Processing math: 100%
본문 바로가기

[자료구조론] 2주차: Notation

Big-O notation

입력의 개수 n에 따른 함수의 상한을 표시한 것

 

수학적 정의

두 함수 f(n)g(n)이 주어졌을 때, 모든 nn0에 대해

f(n)cg(n)

을 만족하는 상수

c, n0

가 존재하면 f(n)=O(g(n))이다.

 

n이 어느 정도 커졌을 때 f(n)g(n)보다 항상 작으면 g(n)f(n)보다 연산 횟수가 큰 상한이라는 얘기다.

 

기본 연산 횟수가 다항식일 경우 최고차항만 사용

8n2logn+5n2+n -> O(n2logn)

10 -> O(1)

 

O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)<O(n!)

(O(1): 입력 개수와 관계없이 일정한 횟수의 연산 수행)

 

빅오 표기법: 입력의 개수 n에 따른 함수의 상한을 표시한 것

상한은 여러 개가 있을 수 있다

-> 정의에 포함된 내용은 아니나 여러 상한 중 최소차수로 표현하는 것이 일반적 (다른 걸 써도 틀린 건 아님)

 

 

Big-Omega notation

입력의 개수 n에 따른 함수의 하한을 표시한 것

 

수학적 정의

두 함수 f(n)g(n)이 주어졌을 때, 모든 nn0에 대해

f(n)cg(n)

을 만족하는 상수

c, n0

가 존재하면 f(n)=Ω(g(n))이다.

 

 

Ex) n1에 대해 2n+1<n이므로 2n+1=Ω(n)

 

 

Big-Theta notation

입력의 개수 n에 따른 함수의 상한과 하한을 동시에 표시한 것

 

수학적 정의

두 함수 f(n)g(n)이 주어졌을 때, 모든 nn0에 대해

c1g(n)f(n)c2g(n)

을 만족하는 상수

c1 c2, n0

가 존재하면 f(n)=Θ(g(n))이다.

 

f(n)=O(g(n))=Ω(g(n))이면 f(n)=Θ(g(n))이다.

-> Θ(g(n))을 찾으려면 f(n)에 대해 상한 O(g(n)), 하한Ω(g(n)) 모두 표기가 가능해야 하며,

이런 g(n)Θ(g(n))으로 표기한다.

 

Ex) Ex) n1에 대해 n<2n+1<3n이므로 2n+1=Θ(n)

 

보통은 O(g(n)) 중에서 가장 작은 g(n)Θ(g(n))라고 한다.

 

 

g(n)은 어떻게 구하는가?

수행 시간은 입력 자료 집합에 따라 다르다.

이 때 수행 시간에 따라 Best case, Average case, Worst case의 세 가지의 g(n)을 구한다.

 

Best case는 별 의미가 없고, Average case는 구하기 어려워서

계산하기 쉽고 유의미한 Worst case를 구하는 것이 일반적이다.

'강의노트 > 자료구조론' 카테고리의 다른 글

[자료구조론] 2주차: 순환  (0) 2021.03.14
[자료구조론] 1주차  (0) 2021.03.12