12
09

하나의 문제에 대해서 여러 개의 알고리즘이 있을 수 있다.

그중 가장 효율적이고 사용 환경에 최적인 알고리즘을 결정하기 위해서는 알고리즘을 분석하고 평가하여야 한다.

 

알고리즘 성능 분석 방법

공간 복잡도

  • 알고리즘을 프로그램으로 실행하여 완료하기까지 필요한 총 저장 공간을 의미
  • 고정 공간과 가변 공간을 합하여 구함
  • 고정 공간 : 프로그램의 저장 공간과 변수 및 상수들을 저장하기 위한 공간
  • 가변 공간 : 실행 과정에서 사용하는 자료와 변수들을 저장하는 공간과 함수 실행에 관련된 정보를 저장하는 공간

시간 복잡도

  • 알고리즘을 프로그램으로 실행하여 완료하는데 걸리는 시간
  • 프로그램의 컴파일 시간과 실행 시간의 합으로 표현
  • 정확한 실행 시간을 추정하기보다는 실행 빈도수를 구하여 사용
  • 빅-오(Big Oh) 표기법을 사용하여 O(n)로 표기함
  • 상수, 계수를 제외하고 가장 큰 차수만 표기함
  • ex) 실행 시간 함수 : 4n+2 → O(n) 

시간복잡도 성능 비교

 

ex) 피보나치수열 알고리즘

00	fibonacci(n)
01		if(n<0) then
02			stop;
03		if(n<=1) then
04			return n;
05		f1 ← 0;
06		f2 ← 1;
07		for(i ← 2; i<=n; i ← i+1) do {
08			fn ← f1+f2;
09			f1 ← f2;
10			f2 ← fn;
11		}
12		return fn;
13	end

 

피보나치수열 알고리즘의 실행 빈도수 : n > 1일 경우

행 번호 실행 빈도수 행 번호 실행 빈도수
1 1 8 n-1
2 0 9 n-1
3 1 10 n-1
4 0 11 0
5 1 12 1
6 1 13 0
7 n    

 

실행 빈도수를 계산하면 1+0+1+0+1+1+n+(n-1)+(n-1)+(n-1)+0+1+0 = 4n+2가 된다.

따라서 이 알고리즘의 실행 빈도수, 즉 실행 시간은 n에 따라 정해진다.

이것을 빅-오(Big Oh) 표기법을 사용하여 O(n)으로 표기한다.

'자료구조' 카테고리의 다른 글

Queue(큐)  (0) 2021.12.14
Stack(스택)  (0) 2021.12.09
자료구조  (0) 2021.12.08
COMMENT