알고리즘 with 자바

준비중..

알고리즘 with 자바

문제 해결을 위한 개발자의 필수 소양!

03 점근적 표기 분석

# 접근적 표기 분석 ## 목차 --- 1. 무엇? 2. 종류? 3. 분석 예 ## 1. 무엇? --- 좋은 알고리즘 여부를 평가하기 위한 방법. 데이터의 입력 크기(n)가 충분히 큰 경우를 기준함. $$ \lim_{n\to \infty} f(n) $$ ## 2. 종류? --- | 기호 | 발음 | 의미 | |:-----:|:----:|:---| | 𝜪(~) | 오 | 최악의 경우, ~까지 걸림 | | 𝜴(~) | 오메가 | 최적의 경우, ~에 처리 | | 𝜭(~) | 세타 | 최악과 최적 모두 ~ 소요 | ![클라우드스터딩-알고리즘-점근적-표기법](https://i.imgur.com/Y4142XQ.png) ## 3. 분석 예 --- ### 코드 A ``` int foo (int A[], int n) { int sum = 0; for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { sum = sum + A[i] * A[j]; } } return sum; } ``` n이 충분히 큰 경우, - 𝜪(n^2). 최대 n^2번 수행. - 𝜴(n^2). 최소 n^2번 수행. - 𝜭(n^2). 빅오(𝜪)와 오메가(𝜴)가 서로 같기 때문. ### 코드 B ``` int bar(int A[], int n) { int sum = 0; if (n % 2 == 0) { // 짝수 for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { sum = sum + A[i]*A[j]; } } } else { // 홀수 for (int i = 0; i < n; ++i) { sum = sum + A[i]; } } } ``` n이 충분히 큰 경우, - 𝜪(n^2). 최대 n^2번 수행. 짝수일 때. - 𝜴(n). 최소 n번 수행. 홀수일 때. - 𝜭 없음. 빅오(𝜪)와 오메가(𝜴)가 서로 다름. ## 요약 --- - 점근적 표기 분석 => 알고리즘 평가 방법 - 점근적 표기 종류 => 빅오(𝜪: 최대 ~까지), 오메가(𝜴: 최소 ~까지), 세타(𝜭: 𝜪 = 𝜴)