7.4. Решение задачи коммивояжера методом ветвей и границ 139
маршрутов коммив ояжера. Считаем, что корню дерева решений постав-
лено в соответствие множество всех маршрутов коммивояжера.
Пусть x — некот орая вершина этого дерева. Выберем дугу vw, кото-
рая входит хотя бы в один маршрут из M(x). Тогда множество M(x)
разбивается на два непересекающихся подмножества, в одно из кото-
рых можно отнести все маршруты, содержащие дугу vw, а в другое —
не содержащие ее. Будем считать, что первое из этих подмножеств со-
ответствует левому сыну вершины x, а второе — правому. Тем самым
описано (пока еще в общих чертах) правило ветвления. Вершина дерева
решений, для которой строятся сыновья, будет называться активной.
Главное достоинство метода ветвей и границ в сравнении с полным пе-
ребором заключается в том, что активными объявляются лишь те вер-
шины, в которых может содержаться оптимальный маршрут. Следова-
тельно, необходимо выработать правило активизации вершин, которое
будет сводиться к правилу подсчета границ.
Предположим, что для вершин дерева решений вычислено значение
f(x) такое, что вес любого маршрута из множества M(x) не меньше чем
f(x). Такое число f(x) называется нижней границей маршрутов мно-
жества M(x) или, короче, границей вершины x. Правило активизации
вершин заключается в том, что из множества вершин, не имеющих сы-
новей, в качестве активной выбирается вершина с наименьшей нижней
границей. Вершина, для которой построены оба сына, активной стать в
дальнейшем не может.
Процесс построения дерева решений продолжается до тех пор, пока
активной не будет объявлена вершина x, для которой множество M(x)
состоит из одного единственного маршрута, а границы всех других вер-
шин не меньше чем вес этого маршрута. Понятно, что тогда маршрут,
содержащийся в M(x), является оптимальным.
Остается сформулировать правила вычисления нижних границ. Про-
цедуру вычитания из каждого элемента строки (соответственно столб-
ца) минимального элемента этой же строки (столбца) назовем редукцией
строки (редукцией столбца). Процедуру, которая сначала осуществля-
ет редукцию каж дой строки, а затем в измененной матрице — редукцию
всех столбцов, назовем редукцией матрицы, а полученную матрицу —
редуцированной. Заметим, что редуцированная матрица неотрицатель-
на, причем в каждой ее строке и каждом ее столбце имеется хотя бы
один нулевой элемент.
Лемма 1. Пу сть P — маршрут коммивояжера в сети G, c(P ) (со-