BnB обычно взаимодействует с complete решателем подзадач:
best_cost_soln_so_far = +inf
while (better_cost_soln = search_for_soln_cheaper_than(best_cost_soln_so_far))
{
best_cost_soln_so_far = better_cost_soln
backtrack_into_search
}
То есть, ваш поиск подзадачи будет возвращаться, когда стоимость любого частичного решения, которое он исследует, превышаетграница, установленная best_cost_soln_so_far
.Если поиск подзадачи действительно находит лучшее решение, best_cost_soln_so_far
обновляется, и поиск продолжается с того места, на котором он остановился, в поисках еще лучшего решения.Это довольно легко реализовать.
Тем не менее, я очень сомневаюсь, что вы хотите заняться большими TSP с помощью полного поиска из-за огромного пространства поиска;Вы можете добиться большего успеха с помощью приблизительных методов, таких как имитация отжига.