시간 복잡도, 공간 복잡도 (Time Complexity, Space Complexity)

1. 시간 복잡도와 공간 복잡도의 개요

(1) 시간 복잡도와 공간 복잡도의 개념

시간 복잡도
(Time Complexity)
알고리즘의 효율성 측정을 위해 필요한 입력 데이터 대비 연산 시 수행 시간을 나타내는 척도
공간 복잡도
(Space Complexity)
알고리즘의 효율성 측정 위해 프로그램 수행 시 사용되는 메모리 공간의 크기를 나타내는 척도

(2) 효율적 알고리즘을 위한 요소

시간 효율성주어진 조건에서 문제 해결 위해 가능한 최소 시간 내 해결책을 찾는 요소
공간 효율성프로그램 수행을 위해 가능한 최소 메모리를 관리하고 사용하는 요소
코드 효율성사람이 빠르게 이해 및 수정하거나 컴파일러 및 하드웨어 최적화 요소
  • 알고리즘 효율성을 판단하기 위해 시간 복잡도 및 공간 복잡도를 수치화하여 정량적으로 평가 가능

 

2. 시간 복잡도와 공간 복잡도의 측정 대상 및 방법

(1) 시간 복잡도의 측정 대상 및 방법

측정
대상
측정
방법
빅오(O) 표기법입력데이터의 최악을 기준으로 시간 복잡도를 측정
빅오메가(Ω) 표기법입력데이터의 최선을 기준으로 시간 복잡도를 측정
세타(Θ) 표기법O-표기와 Ω-표기가 같은 경우 시간 복잡도를 측정
  • 사례) 𝑂(2N ): 동적 프로그래밍, 𝑂(𝑁2 ): 버블 정렬, 𝑂(𝑁 log⁡𝑁 ): 퀵 정렬, 𝑂(𝑁): for 문, 𝑂(log⁡𝑁 ): 이진 트리, 𝑂(1): Hash

(2) 공간 복잡도의 측정 대상 및 방법

측정
대상
고정 공간알고리즘과 무관한 공간. 코드 저장공간, 단순변수 및 상수
가변 공간알고리즘 실행 관련 공간. 실행 중 동적으로 필요한 공간
측정
방법
Memory Layout 고려데이터 구조 크기와 변수의 크기 등을 고려하여 측정
디버깅 도구 사용Xcode와 같은 디버깅 도구 사용하여 메모리 사용을 측정
  • 일반적으로 복잡도가 낮으면 알고리즘 효율성(성능)이 우수하다고 판단 가능

 

3. 시간 복잡도와 공간 복잡도 비교

비교 항목시간 복잡도공간 복잡도
측정 대상입력값에 따른 연산 시간을 측정사용된 메모리 공간 크기를 측정
복잡도 계산Big-O/Ω 수식에 따라 계산고정 공간 + 가변 공간
판단 기준결과 수치가 작을 수록 효율적메모리 공간 크기가 작을 수록 효율적
  • 공간 복잡도는 실행되는 H/W, S/W 환경의 영향으로 달라질 수 있으며, 일반적으로 시간 복잡도(특히 빅오 표기법)를 사용하여 알고리즘 효율성을 판단

 
[참고]

  • 이충기, KOCW, 알고리즘의 효율성 분석
  • 양성봉, 생능출판사, 알기 쉬운 알고리즘, 2021

콘텐츠 사용 시 출처 표기 부탁 드리고, 댓글은 큰 힘이 됩니다^^