알고리즘/Branch & Bound

Branch & Bound 알고리즘

1minair 2022. 5. 11. 20:25
728x90

Backtracking = DFS visit + bound function

--> DFS를 BFS visit으로 전환하면? --> Branch and Bound.

 

Backtracking = DFS + bound function

Branch&Bound = BFS + bound function

--> 차이는 DFS vs BFS.

Q1. DFS vs BFS 장단점을 논하시오.

--> in practice, Branch&Bound >> Backtracking. 

--> BFS: 신뢰성이 더 좋음

 

Q2. f = g + h < Best (bound function) 관점에서 비교하시오.

--> tree traverse(child visit)순서에 따라, g value, h value는 update 차이 발생

** 미래 estimate 'h-value'가 좋으면(정확한 예측이 가능하면),

잘 맞춘다. ==> BFS로 진행하는 것이 좋다 ==> start root 근처에서 pruning이 일찍 발생할 수 있다.

** backtracking은 탐색을 진행할 수록, 'g-value'가 빨리 갱신된다. ==> g-value가 정확해지고, h-value에 대한 

불확실성이 빠른 속도로 줄어든다.

 

Key point:

여러분이 h-value 설계/추정/수식유도 등에 경험을 통해 자신감이 향상되면, Branch&Bound가 우월함.

---> if not, Backtracking 선호.

 

Improve the standard Branch-and-Bound

- idea: based on the visit order of children nodes

- BFS, DFS: fixed visit order (방문 traverse 순서)

- observe that the promising function/bound function updating

- 방문 순서를 바꿈

 

NEW B&B algorithm:

- Branch and Bound with Best-First (Search), Best-first Branch and Bound

- (인공지능) A* algorithm.

Q1. If promising/bound-value가 다른 값이 배정된다면?

Q2. Best-first Branch&Bound: + greedy approach (local optimal choice)

--> 반드시 해야하는 의문점/질문

--> "이것이 optimal 한가?" ==> Proof required.

 

(advanced topic)

how to estimate the h-value?

- f = g + h

- h: mathmatical expression for estimation/prediction

- 0/1 knapsack problem: h = fractional KS.

Guidline for h-value

: h-value의 range를 설정하며 범위를 좁혀감

 

1. h > 0, h < infinite --> 0 < h < infinity

2. h*: global optimal value --> h와 h*의 관계성 유추 (h*는 실제로 나올수 있는 optimal한 값)

    1) h > h*: overestiamte

    2) h < h*: underestimate

3. Overestimate하면 실수(pruning)하지 않는다.

    1) optimal로 진행가능한 가지를 pruning out하지 않음

    2) 보수적, 안정적인 pruning

    3) pruning되는 subtree 가지의 수는 적을 수 있음

         ex. 0/1: fractional << overestimate

4. 0 < h* < h < infinite: h는 h*보다 큰 값중에서 가장 작은 값이 좋습니다. (because pruning power)

    ==> h = h* + alpha(small value)

5. Q: 0/1 KS에서 활용한 frac. KS을 이용한 h-value보다 더

    pruning이 많이되는 h-value 수식을 제시하시오.

 

0/1 KS problem: h = overestimate expression

-> upper bound ====> "Maximization Optimization"

 

Minimization Optimization Problem: TSP.

-> h = underestimate value

-> lower bound