본문 바로가기

알고리즘

[알고리즘 - 이론] 분기한정법

728x90

1. 분기한정법(Branch and Bound)란?

Branch and Bound(분기한정법)이란 BackTracking(백트래킹)을 개선한 알고리즘이다.

분기 한정법 또한 state space tree를 사용한다. 하지만 분기한정법과 백트래킹의 차이점은

- 트리를 여행하는 방법에 제한을 두지 않는다.

- 오로지 최적화 문제에만 사용한다.

백트래킹은 깊이우선탐색을 사용하여 상태공간트리를 탐색하였지만 분기한정법은 너비우선탐색을 사용하고, 또 Best-First-Search를 사용하여 더 효율적이게 트리를 탐색한다.

 

분기 한정법은 특정 마디가 유망한지 결정하기 위해서 그 마디에서 수, 한계값(Bound)를 계산한다. 그리고 최적의 한계값을 가진 노드의 자식을 방문한다. 이 방법은 DFS보다 빠르고, 자주 DFS보다 더 빨리 최적해에 도달한다.

 

만약 Bound값이 지금까지 찾은 최고의 Solution보다 좋지 않으면 해당 마디는 유망하지 않다고 판단한다.

만약 Bound값이 최고의 Solution보다 좋으면 유망하다라고 판단한다.

 

이러한 방법은 BFS를 조금 변환하면 구현 할 수 있다.

BFS에서는 Queue를 사용하지만 Best-First_search에서는 우선순위 큐를 사용한다.

 

728x90

'알고리즘' 카테고리의 다른 글

[백준] 17822번 : 원판 돌리기  (0) 2024.03.16
[백준] 2174번 : 로봇 시뮬레이션  (0) 2024.02.02
[이것이코딩테스트다] 1로 만들기  (0) 2023.11.19
파이썬 공간복잡도  (0) 2023.06.24
파이썬 시간복잡도  (0) 2023.06.24