| 항목 | Backtracking | Branch and Bound (B\&B) |
|---|---|---|
| 탐색 방식 | DFS (깊이 우선 탐색) | BFS (너비 우선 탐색) |
| 기본 구성 | DFS + bound function | BFS + bound function |
| 주로 푸는 문제 | N-Queens, Subset Sum (Y/N 문제) | 0/1 Knapsack, TSP (최적화 문제) |
| 적용 대상 | 순열, 조합 등 | 최단경로, 최소비용 등 조합최적화 문제 |
| 효율성 | 단순하지만 느릴 수 있음 | 실전에서 더 신뢰성 있고 빠름 |
| 용어 | 의미 설명 |
|---|---|
| Bound Function | 가지치기를 위한 조건 함수 (f = g + h) |
g | 지금까지 얻은 이익/비용 (정확한 값) |
h | 남은 이익/비용에 대한 최대 기대치 또는 최소 예상치 (추정값, 휴리스틱) |
| f = g + h | 전체 평가 함수. f < 현재 Best이면 비유망(non-promising) |
| Upper Bound | 최대 기대 이익 (Maximization 문제에서 사용) |
| Lower Bound | 최소 필요한 비용 (Minimization 문제에서 사용, 예: TSP) |
| 항목 | DFS 기반 (Backtracking) | BFS 기반 (B\&B) |
|---|---|---|
| 초기 pruning 효과 | 약함 (g만 빠르게 정확해지고, h는 불확실) | 강함 (정확한 h-value가 있으면 초반 가지치기 우수) |
| 탐색 트리의 성격 | 빠르게 깊이 파고듦 | 전체적인 넓이 기준으로 탐색 |
| 가지치기 시점 | 탐색이 진행될수록 g가 정교해지면서 일어남 | 초반에 f 계산으로 비유망 노드를 제거 |
| 적절한 경우 | 휴리스틱이 약할 때, 예/아니오 문제일 때 | 휴리스틱이 강하고, 최적화 문제일 때 |
Backtracking이 적합할 때:Branch and Bound이 적합할 때:🔑 교수님의 핵심 요점:
“h-value설계에 익숙하고 신뢰도가 높다면 **B\&B(BFS)**가 유리하며,
아니라면 **Backtracking(DFS)**이 더 안정적이다.”
| 문제 종류 | Bound 유형 | 예시 문제 |
|---|---|---|
| Maximization | Upper Bound | 0/1 Knapsack |
| Minimization | Lower Bound | TSP (외판원 문제) |
| 조건 | 추천 기법 |
|---|---|
h-value를 잘 설계할 수 있고, 예측이 잘 맞을 경우 | 🔥 B\&B (Branch and Bound) |
h-value 설계에 자신 없고 DFS가 익숙할 경우 | ✅ Backtracking (깊이 우선 탐색 기반) |
이 슬라이드는 Branch and Bound 알고리즘에서의 h-value(추정값) 설정 및 활용 방법에 대해 설명합니다. 핵심 요점을 정리해 드릴게요.
f = g + h (g: 정확한 값, h: 추정값)h는 앞으로 기대되는 값(예측값)을 수학적으로 표현한 것| 문제 유형 | h-value의 특성 | 의미 |
|---|---|---|
| 최대화 문제 (e.g. 0/1 KS) | overestimate (과대 추정) | 상한값(Upper Bound) |
| 최소화 문제 (e.g. TSP) | underestimate (과소 추정) | 하한값(Lower Bound) |
h의 범위는 0 < h < ∞ 로 설정 (음수 X)
실제로 최적값을 h*라 할 때, h와의 관계성 고려
h > h* → overestimate (보수적인 pruning)h < h* → underestimateOverestimate일 때 장점
좋은 h는?
0 < h* < h < ∞ 중 가장 작은 h가 pruning 효과가 좋음h = h* + α (α는 작은 값)를 추천| 항목 | 설명 |
|---|---|
h-value 설계 목적 | 앞으로 남은 최적 이익(또는 비용)을 예측하여 pruning 기준 제공 |
| 최대화 문제 | 과대 추정(overestimate) → upper bound 사용 |
| 최소화 문제 | 과소 추정(underestimate) → lower bound 사용 |
| 좋은 h-value 조건 | h = h* + α 형태처럼 작지만 안전한 추정값 선호 |
| 과제 포인트 | pruning power가 더 높은 h-value 수식 고안해보기 |
h ≈ h* ± α 형태로 추정
h*: 실제 최적 해α: 오차 또는 여유 범위정확한 h-value는 없지만, 좋은 휴리스틱 추정이 탐색의 성패를 좌우함
h로 사용h는 fractional knapsack 문제를 기반으로 추정한 값1 ZB(Zettabyte) 아이템을 정렬해야 하는 문제가 주어짐
정렬 문제는 이미 Lower Bound = Ω(nlogn) 이고, 그에 맞는 알고리즘도 존재하니, 무식하게 1ZB 데이터 정렬하려는 시도는 비효율적이다
근본적인 계산 복잡도의 한계를 이해하고, 현실적인 접근을 택하자