생각하는 감쟈
[알고리즘] 백 트래킹 알고리즘(back tracking), 빅 오 표기법(Big-O) 본문
백트래킹
- 해를 찾는 도중 막히면 더 이상 깊이 들어가지 않고, 이전 단계로 되돌아가서 해를 찾아나가는 방법
- 최적화 문제와 결정 문제를 푸는 방법
- DFS 등으로 모든 경우의 수를 탐색하는 과정에서 조건문 등을 걸어 답이 될 수 없는 상황을 정의하고, 그러한 상황일 경우에는 탐색을 중지시킨 뒤 그 이전으로 돌아가서 다시 다른 경우를 탐색하게 끔 구현가능
백 트래킹 vs DFS
백 트래킹 - 불필요한 탐색을 하지 않음
DFS - 모든 경우의 수를 탐색
빅오 표기법
- 런타임과 메모리 사용을 최소화 방법
O(1) constant time : for문 없이 바로
O(log n) log time : 이중 탐색
O(n) linear time : for문
O(n log n) log linear time : for문 안에 이중 탐색 - 퀵정렬, 병합 정렬, 힙 정렬
O(n^2) quadratic time : 이중 for문 - 문제를 해결하기 위한 단계의 수는 입력값 n의 제곱
O(n^3) cubis time : 삼중 for문
O(2^n) exponential time : 상수값의 제곱 - n의 제곱되는 값
O(n!) fibonnacci numbers : 피보나치 수열
시간 복잡도에서 갖게 되는 값과 크기 비교
O(N!) > O(2^n) > O(N²) > O(N log N) > O(N) > O(Log N) > O(1)
'Data' 카테고리의 다른 글
| [Data Base] 관계형 DB 데이터 모델링_01 (0) | 2024.04.08 |
|---|---|
| [알고리즘] 이분 탐색 / 이진 탐색 (binary search) (2) | 2023.11.22 |
| [알고리즘] 그래프 - 깊이 우선 탐색(dfs), 너비 우선 탐색(bfs) / 전체 탐색 - 브루트 포스 기법 정리 (0) | 2023.11.14 |
| [알고리즘] 자료구조 (stack, queue, deque), Tree 정리 (2) | 2023.10.26 |
| [SQLD] 2과목 2-1 ) SQL 기본 1 / SELECT 문, SQL 함수 (1) | 2023.08.24 |
Comments