[1. 개요]
주어진 문제를 둘 이상의 부분 문제로 나눈 뒤,
각 문제에 대한 답을 재귀호출을 이용해 계산하고,
각 부분 문제의 답으로부터 전체 문제의 답을 계산
여기서 일반적인 재귀 호출과 다른 점은 문제를 한 조각과 나머지 전체로 나누는 것이 아니라
거의 같은 크기의 부분 문제로 나누는 것 (=> 보통 절반씩 나눔 => O(logn))
적용을 위해서는 문제에 몇 가지 특성이 성립해야 한다.
- 문제를 둘 이상의 부분 문제로 나누는 자연스러운 방법이 있어야 한다.
=> 어떻게 분할하느냐에 따라 시간 복잡도 차이가 커진다. - 부분 문제의 답을 조합해 원래 문제의 답을 계산하는 효율적인 방법이 있어야 한다.
보통 같은 작업을 더 빠르게 처리해 준다.
[2. 구성 요소]
- Divide => 문제를 더 작은 문제로 분할
- Merge => 각 문제에 대해 구한 답을 원래 문제에 대한 답으로 병합
- Base case => 더 이상 분할 하지 않고 곧장 풀 수 있는 매우 작은 문제
[3. 완전 탐색과 비교]
[3. 예제]
https://testkernelv2.tistory.com/336
'알고리즘 > 이론' 카테고리의 다른 글
02. 분할 정복 예제 - 2 (0) | 2022.09.23 |
---|---|
02. 분할 정복 예제 - 1 (0) | 2022.09.19 |
01 완전 탐색 예제 - 3 (0) | 2022.09.18 |
01. 완전 탐색 예제 - 2 (0) | 2022.09.17 |
01. 완전 탐색 예제 - 1 (0) | 2022.09.17 |