2. 알고리즘의 복잡도 분석방법
알고리즘을 직접 구현하지 않고서도 어느 정도의 효율성을 갖는 지 아는 것
각각의 개인적인 상황들(하드웨어/소프트웨어)에 관계 없이 알고리즘의 효율성을 평가 가능
1. 복잡도 분석이 뭐지?
3. 알고리즘의 복잡도 분석방법
2. 복잡도 분석은 어떻게 하는 걸까?
알고리즘의 실행시갂을 분석 알고리즘이 사용하는 메모리를 분석
시갂 복잡도 공갂 복잡도
4. 알고리즘의 복잡도 분석방법
시갂 복잡도 공갂 복잡도
2. 복잡도 분석은 어떻게 하는 걸까?
알고리즘에서 사용된 메모리 공갂보다 실행시갂에 더 많은 관심을 갖기 때문에
알고리즘의 복잡도를 이야기 할 때 주로 시갂 복잡도를 이야기 한다.
ex_게임 할 때에 게임이 느린 경우(시갂 복잡도) VS 용량이 큰 경우(공갂 복잡도)
5. 시간 복잡도
알고리즘의 절대적인 실행시갂? NO!
알고리즘을 구성하고 있는 연산들이 몇 번이나 실행되는지 횟수로 표시한 것!
(연산에는 산술, 대입, 비교, 이동 등의 연산들이 포함된다.)
1. 시간 복잡도란?
6. 시간 복잡도
필요한 연산의 수는 보통 주어지는 입력의 개수 n에 영향을 받는다.
이 때, 연산의 수를 n의 함수로 나타낸 것을 시갂 복잡도 함수라고 한다. ▶ T(n)이라고 표기.
But T(n)은 입력의 개수 n에 대한 상당히 복잡한 수식으로 나타날 수 있다!
2. 시간 복잡도를 표기하는 방법!
7. 시간 복잡도
2. 시간 복잡도를 표기하는 방법!
0 1 2 3 4 5n
0 1 4 9 16 25n²
0 1 2 6 24 120n!
1 2 4 8 16 322ⁿ
0 0 1 1 2 2log₂n
자료의 개수가 많아질수록 차수가 가장 큰 항의 영향이 점점 커지게 되고,
증가하는 비율 또한 최고차항의 값이 가장 크다.
결국, 시갂복잡도 분석에서는 최고차항만 고려하면 OK
8. 시간 복잡도
입력의 개수 n에 따라 변하는 연산 횟수를 분석하기 쉽게 표시하는 방법
O(n)과 같이 표시한다.
* 빅오 표기법 복잡도 순 정렬 *
O(1) < O(log n) < O(n) < O(n log n) < O(n²) < O(2ⁿ) < O(n!)
3. 빅오 표기법의 등장