대상이 되는 DP 형태
다음과 같은 2차원 DP를 생각하자.
$$ dp[i][j] = \min_{k < j}\big(dp[i-1][k] + C(k, j)\big) $$
여기서 한 층(layer) \(i\)를 채우는 데 단순히 모든 \(k\)를 보면 \(O(n)\) 이라 한 층이 \(O(n^2)\), 전체 \(O(n^2 \cdot i)\) 가 든다. 분할 정복 최적화는 결정 단조성이 성립할 때 한 층을 \(O(n\log n)\) 으로 줄인다.
결정 단조성
\(opt[i][j]\) 를 \(dp[i][j]\) 를 최소화하는 최적 분기점 \(k\) 라 하자. 결정 단조성은
$$ j_1 < j_2 \;\Rightarrow\; opt[i][j_1] \le opt[i][j_2] $$
를 뜻한다. 즉 \(j\) 가 커지면 최적 분기점도 단조 증가(또는 단조 감소)한다. 이것이 성립하면 가운데 \(j_m=(lo+hi)/2\) 의 최적점을 직접 찾았을 때, 왼쪽 절반은 \(opt \le opt[i][j_m]\), 오른쪽 절반은 \(opt \ge opt[i][j_m]\) 범위에서만 탐색하면 된다.
비용 함수의 조건 (Quadrangle Inequality)
\(C\) 가 사각 부등식(QI)
$$ C(a,c)+C(b,d) \le C(a,d)+C(b,c) \quad (a\le b\le c\le d) $$
를 만족하면 결정 단조성이 따라온다. 직관적으로 "구간이 교차하는 것보다 포함하는 편이 싸다"는 성질이다. 실전에서는 비용이 면적·거리·로그 합처럼 볼록할 때 자주 성립한다.
분할 정복으로 한 층 채우기
solve(lo, hi, optlo, opthi) 는 \(j\in[lo,hi]\) 를 채우며 그 최적점이 \([optlo,opthi]\) 안에 있음을 안다.
- \(mid = (lo+hi)/2\) 에 대해 \(k\in[optlo,\min(mid,opthi)]\) 를 전부 보며 \(dp[i][mid]\) 와 \(opt[i][mid]=best\) 를 직접 계산.
solve(lo, mid-1, optlo, best),solve(mid+1, hi, best, opthi)로 재귀.
각 깊이에서 보는 \(k\) 의 총량이 \(O(n)\), 깊이가 \(O(\log n)\) 이므로 한 층 \(O(n\log n)\).
복잡도와 적용 가능성 판단
| 조건 | 결과 |
|---|---|
| QI 성립 | 결정 단조성 보장 → DnC 가능 |
| 층 수 \(R\), 길이 \(n\) | 전체 \(O(R\,n\log n)\) |
| 비용 함수 평가가 \(O(1)\)이 아님 | 그만큼 곱해짐 |
증명이 어렵다면 작은 입력에서 brute force와 결정 단조성을 직접 검증해 보는 실험적 확인이 흔히 쓰인다.