※ 이 글은 chatGPT를 기반으로 작성한 글입니다.
① 시간 복잡도(time complexity)는 알고리즘의 수행 시간이 입력 크기에 따라 어떻게 증가하는지를 분석하는 데 사용되는 개념이다.
② 알고리즘의 시간 복잡도를 분석할 떄는 일반적으로 알고리즘이 실행하는 기본적인 연산 수행 횟수를 계산하고, 이를 입력 크기와 비교한다.
③ 시간 복잡도는 일반적인 최선, 평균, 최악의 경우로 나뉜다.
④ 시간 복잡도는 일반적으로 빅오(Big - O) 표기법을 사용하여 표기한다. 빅오 표기법은 입력 크기에 대한 함수의 상한(upper bound)을 나타내며, 알고리즘의 실행 시간이 이 함수보다 더 느리게 증가하지 않는 것을 보장한다.
㉠ 이를 수학식으로 나타내면 다음과 같이 나타낼 수 있다.
ⓐ 이 부등식은 알고리즘 f의 실행 시간이 상한을 갖는다는 것을 말하며, g(n)의 상수배 이하의 실행 시간을 가진다는 것을 보장한다.
㉡ 위 수학 식을 빅오를 이용해 간단히 표기할 수 있다.
⑤ 다음 예시를 보자.
㉠ f(n) = 3n + 2를 빅 오 표기법으로 표기하면 O(n)이다.
ⓐ f(n)은 4n 보다 느리게 증가한다.
ⓑ 4는 상수이기 때문에 f(n) = O(n)이라고 표기할 수 있다.
㉡ f(n) = 10n^2 + 4*n + 2를 빅 오 표기법으로 표기하면 O(n^2)이다.
ⓐ f(n)은 11n^2 보다 느리게 증가한다.
ⓑ 11은 상수이기 때문에 f(n) = O(n^2)이라고 표기할 수 있다.
㉢ f(n) = 2^n + n^2를 빅 오 표기법으로 표기하면 O(2^n)이다.
ⓐ f(n)은 2*2^n 보다 느리게 증가한다.
ⓑ 2는 상수이기 때문에 f(n) = O(2^n)이라고 표기할 수 있다.
⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮
㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭
ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜ
'All about Data Structure & Algorithm > 기본' 카테고리의 다른 글
브루트 포스 (0) | 2023.04.18 |
---|---|
문자열 검색 알고리즘: KMP(Knuth-Morris-Pratt) (0) | 2023.04.18 |
바이토닉 정렬(Bitonic Sort) (0) | 2023.03.24 |
기수 정렬(Radix Sort) (0) | 2023.03.24 |
계수 정렬(Counting Sort) (0) | 2023.03.24 |