분할 정복 알고리즘은 그대로 해결할 수 없는 문제를 작은 문제로 분할하여 문제를 해결하는 방법이다.
Divide and Conquer알고리즘이란 하나의 문제를 작은 단위로 나누어 재귀적으로 각 문제를 해결한 후 이를 다시 합쳐 원래 문제를 해결하는 방법이다.
분할정복 알고리즘은 일반적으로 재귀함수를 통해 자연스럽게 구현된다.
def F(x):
if F(x)의 문제가 간단:
return F(x)을 직접 계산한 값
else:
x를 y1, y2로 분할
F(y1)과 F(y2)를 호출
return F(y1), F(y2)로부터 F(x)를 구한 값
Divide and Conquer알고리즘은 Subproblem이 전체 문제에 비해 크기가 매우 작을 때 유리하다(N -> N/2 -> N/4 ...)