Задача коммивояжёра заключается в разовом посещение всех городов по минимальному пути (маршруту) и возвращение в искомый город.
Рассмотрим пример решения задачи коммивояжёра методом ветвей и границ

Первая итерация
Найдём минимальные значения по строкам di

Производим редукцию по строкам путём вычитания минимального значения.

Найдём минимальные значения по столбцам dj

Аналогично производим редукцию по столбцам.

В получившейся матрице таблице находим нулевые значения

Вычисляем оценку для нулевых значений. Она заключается в отдельном поиске минимального значения по строкам относительно нулевого значения, аналогично по столбцам, затем оценка суммируется.

Выберем значения в таблице с максимальной оценкой

Сократим матрицу потерь за счёт исключения строки и столбца с наибольшей оценкой в нашем случае 5→3, так как это оптимальный путь, которые соответствует как городу отправления, так и городу назначения, при этом, расстоянии равно нулю.
Получаем новую матрицу потерь

В третьей строке необходимо вместо нуля (минимального значения) поставить ∞, чтобы отсечь посещённые города.

Вторая итерация решения задачи коммивояжера методом ветвей и границ, здесь всё аналогично, как и впервой итерации, проделываем те же самые операции


Максимальная оценка нулевого значения находится в 4 строке и 5 столбце, поэтому их сокращаем. Получаем путь 50 ед. и 4→5. Матрица потерь примет вид

Ставим в ячейке знак ∞ на посещённые города. В нашем случае обратных путей к посещённым городам нет, поэтому в ячейке не ставим знак ∞ и матрицу оставляем без изменений.

Третья итерация решения задачи коммивояжера


Максимальная оценка нулевого значения находится в 1 строке и 2 столбце. Получаем путь 100 ед. и 1→2.
Получим матрицу потерь 2 на 2

В нашем случае имеется обратный путь, поэтому ставим знак ∞ и матрица потерь будет иметь вид.
| Города | 1 | 4 |
| 2 | ∞ | 50 |
| 3 | 0 | 0 |
Четвертая итерация задачи коммивояжера методом ветвей и границ
| Города | 1 | 4 | di |
| 2 | ∞ | 50 | 50 |
| 3 | 0 | 0 | 0 |
| Города | 1 | 4 | di |
| 2 | ∞ | 0 | 50 |
| 3 | 0 | 0 | 0 |
| Города | 1 | 4 |
| 2 | ∞ | 0 |
| 3 | 0 | 0 |
| dj | 0 | 0 |
| Города | 1 | 4 |
| 2 | ∞ | 0 |
| 3 | 0 | 0 |
| dj | 0 | 0 |
| Города | 1 | 4 |
| 2 | ∞ | 0(∞) |
| 3 | 0(∞) | 0(0) |
| Города | 1 | 4 |
| 2 | ∞ | 0(∞) |
| 3 | 0(∞) | 0(0) |
Сокращаем с максимальной оценкой нулевого значения — это строка 3 и столбец 1 и получаем примитивную матрицу, в которой отсутствует обратный путь. В нашем случае оптимальный путь равен 50 ед. и 3→1.
| Города | 4 |
| 2 | 0 |
Эта матрица говорит о том, что город 2 и город 4 не замкнуты, длина пути равна 50 ед.
Таким образом, мы решили сложную задачу коммивояжёра методом ветвей и границ и нашли кратчайший путь, который равен
1→2→4→5→3→1
и длина его равна 250.
См. также
