티스토리 뷰
이 단원에서는 알고리즘의 수행시간을 분석하는 방법에 대해 다룬다. 나는 그냥 대충 다루겠다.
알고리즘의 수행 시간은 CPU의 속도, 컴파일러의 성능 등 여러가지에 의해 결정되는 면이 있지만, 그것에 가장 지배적인 영향을 미치는 요인은 알고리즘의 특성이다. 즉, n개의 데이터가 주어지는 문제에서 해당 알고리즘은 몇 번 데이터를 봐야하는가? 가 그 수행시간을 지배적으로 결정한다고 보는 것이다.
n개의 데이터가 주어졌을 때 수행시간인 T(n)은 다음과 같은 세 개의 notation에 의해 표현된다.
1. Θ-notation: T(n)의 tight한 수행시간
2. O-notation: T(n)의 upper bound가 될 수 있는 terms
3. Ω-notation: T(n)의 lower bound가 될 수 있는 terms
사실 그 정의가 수학적으로 엄격하게 쓰여있지만 어차피 어떻게 적용하는지만 알면 된다.
예를 들어 T(n)=3n3+5000n2+100인 알고리즘이 있다고 해보자. 그러면 upper bound는 n3이상의 차수를 가진 term들이 될 수 있고(ex:n4....) lower bound는 n3이하의 차수를 가진 term들이 될 수 있다. (term의 계수는 무시해도 된다.)
따라서 O-notation으로는 n의 3승으로 쓰나 11승으로 쓰나 맞다. 오메가 노테이션도 1승 2승 상관 없다.
그러면 Θ-notation은 그 교집합이다. 즉, 이 경우는 n의 3승이 된다.
근데 뭐하러 이렇게 어렵게 생각하는가
그냥 T(n)에서 n이 커질 때 leading term을 보면 된다. 예를 들어 위의 T(n)=3n3+5000n2+100에서는 n이 커지면 3n3이 이 함수의 값을 지배적으로 결정할 것이다. 그러니까 그냥 이 term이 Θ-notation이 된다.
그냥 어떤 알고리즘의 속도를 얘기할 때는 어떤 케이스에 대한 leading term을 얘기하면 된다... 너무 이런 방법론에 신경쓸 필요는 없는 것 같고 귀찮아서 줄여 썼다.
핵심: 일반적으로 T(n)의 leading term이 그 알고리즘의 수행시간을 결정한다.
(물론 계수 때문에 그렇지 않은 경우도 있을 것이다.)
'알고리즘의 기초' 카테고리의 다른 글
2-(0) (i)Heap (0) | 2020.01.23 |
---|---|
1-(4) Divide and Conquer-(i) The maximum-subarray problem (0) | 2020.01.21 |
1-(2) Getting Started-(ii)Merge Sort (0) | 2020.01.19 |
1-(2) Getting Started-(i) Insertion Sort (0) | 2020.01.18 |
1-(1) The role of algorithms in computing (2) | 2020.01.17 |
- Total
- Today
- Yesterday
- 이미지처리
- 머신 러닝
- ML
- 매트랩 함수
- CS
- 컴퓨터 과학
- Logistic Regression
- 딥러닝
- Andrew ng
- 신경망
- 자연어 처리
- 연속 신호
- 매트랩
- 순환 신경망
- 이산 신호
- 영상처리
- 이미지
- 머신러닝
- 인덱스 이미지
- gradient descent
- 밑바닥부터 시작하는 딥러닝
- 사진구조
- 영상구조
- RGB이미지
- CNN
- Neural Network
- 신호 및 시스템
- NLP
- 컴퓨터과학
- rnn
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |