-
[Time Complexity] 시간 복잡도알고리즘/Algorithm Theory 2022. 6. 17. 02:46
Algorithm의 수행시간을 이론적으로 분석하기 위한 개념
수행시간은 환경에 따라 달라진다.(구현한 언어, 컴파일러, 컴퓨터의 스펙 등)
즉, 같은 환경적 요인들을 가졌을 때의 수행시간을 비교
아래 3가지에 대한 시간 복잡도를 주로 분석한다.
● Big-Oh Notation
빅오 표기법, 주로 사용하는 표기법이다.
왜 빅오표기법을 주로 사용하는가?
- 'A라는 알고리즘이 최선의 경우 1초만에 문제를 해결한다.' 하지만, 최악의 경우 inf의 시간이 걸린다면, 의미가 있다고 할 수 있을까? 이보다는 'A라는 알고리즘은 최악의 경우에도 10초만에 문제를 해결해' 가 더 의미있을 것이다.
- 두 함수 간의 관계를 나타내는 표기법
시간복잡도를 나타내는데 주로 쓰이지만, 별개로 함수의 증가속도(growth rate of functions)를 비교하기 위한 표기법이다.
• f(n) = O(g(n)) : 함수 f의 증가속도가 g보다 빠르지 않다. (즉 비슷하거나 느리다)
• f(n) = Ω(g(n)) : 함수 f의 증가속도가 g보다 느리지 않다. (즉 비슷하거나 빠르다)
• f(n) = Θ(g(n)) : 함수 f의 증가속도가 g와 비슷하다.* 이때의 증가속도는 n이 무한으로 갈 때 누가 더 빨리 증가하는지
- 빅오, 오메가, 세타의 비교
f(n)이 다음과 같을 때... 아래와 같다.
f(n) = O(n) (x)
f(n) = O(n^2) (o)
f(n) = O(n^3) (o)
f(n) = Ω(n) (o)
f(n) = Ω(n^2) (o)
f(n) = Ω(n^3) (x)
f(n) = Θ(n) (x)
f(n) = Θ(n^2) (o)
f(n) = Θ(n^3) (x)
● 증가속도에 따른 함수들의 서열
1 상수함수 logn, log(logn), ... 로그함수(polylogarithm) logn (logn)^2, (logn)^3, ... n, n^2, n^3, ... 다항함수(polynomial) 2^n, 3^n, ... 지수함수(exponential) n! (팩토리얼) n^n(n의 n승) '알고리즘 > Algorithm Theory' 카테고리의 다른 글
[Backtracking] Subset Sum (0) 2022.06.25 [D&C] Binary Search (0) 2022.06.25 [Master Theorem] 마스터 이론(정리) (0) 2022.06.20 [Divide-and-Conquer] 분할정복 (2) 2022.06.20 [Recursion] 재귀 with Hanoi Tower (0) 2022.06.17