
Метод ветвей и границ
Специальным частным случаем метода поиска с ограничениями является метод ветвей и границ. История этого метода насчитывает уже более трех десятков лет. К идее метода ветвей и границ приходили многие исследователи, но Литтл с соавторами (Литтл, 1965) на основе указанного метода разработали удачный алгоритм решения задачи коммивояжера и тем способствовали популяризации подхода. С тех пор этот метод успешно применяется ко многим задачам, в том числе NP - полным задачам.
Общая идея метода тривиальна: нужно разделить огромное число перебираемых вариантов на классы и получить оценки (снизу - в задаче минимизации, сверху - в задаче максимизации) для этих классов, чтобы иметь возможность отбрасывать варианты не по одному, а целыми классами. Трудность состоит в том, чтобы найти такое разделение на классы (ветви) и такие оценки (границы), чтобы процедура была эффективной.
По сути своей он представляет собой определенным образом организованный перебор, в ходе которого исходная задача разбивается на множество подзадач, каждая из которых, в свою очередь, опять разбивается и т.д. Рассмотрим применение метода для решения задачи коммивояжера. Пусть в задаче n городов. Вначале разбиваем ее на n-1 подзадачу, первая из которых содержит все траектории с ребром (1, 2), вторая - с ребром (1, 3) и т.д. Далее, первое множество разбивается на n-2 подзадачи: первая обязательно содержит траектории с ребрами (1, 2) и (2, 3), вторая подзадача - с ребрами (1, 2) и (2,4) и т.д. Для каждой из подзадач вычисляются два числа, которые называются оценками или границами, нижняя граница - лучшее значение и верхняя - худшее значение стоимости решения.
Прежде чем приступить к следующему разбиению, на основе этих чисел возникает возможность некоторые задачи исключить из рассмотрения, если вычисленная нижняя граница превышает известную верхнюю, т.к. среди их решений не может быть оптимального решения исходной задачи.
В принципе такая процедура может привести к необходимости анализа всех траекторий, т.е. ее трудоемкость в худшем случае та же. Что и при полном переборе, но на практике оказывается, что подобная ситуация крайне редка.
Ограничения в методе ветвей и границ основываются на предположении, что на множестве возможных и частичных решений задана некоторая функция цены (стоимости) и что нужно найти оптимальное решение, т.е. решение с наименьшей ценой. Для применения метода ветвей и границ функция цены должна обладать тем свойством, что цена любого частичного решения не превышает цены любого расширения этого частичного решения. В большинстве случаев функция цены неотрицательна и даже удовлетворяет более сильному требованию
C(a1, a2, …,ak) = C(a1, a2, …,ak-1) + C(ak), где C(ak) 0 – функция, определенная для всех ak.
Это свойство позволяет отбрасывать любое частичное решение в процессе поиска, если его цена больше цены ранее вычисленного решения, т.е. если C(a1, a2, …,ak) превосходит Cmin , то в (a1, a2, …,ak) не может содержаться оптимальное решение. В качестве кандидата на очередное ветвление берется множество с наименьшей оценкой C(ak), а если таких множеств несколько, то правила выбора могут быть самые разнообразные.
На каждой итерации алгоритма для каждого из подмножеств вычисляем верхнюю и нижнюю оценки решения: нижнюю – решая задачу точным методом, точнее эффктивно разрешимую задачу; верхнюю с помощью какого – нибудь эвристического алгоритма решения задачи, например, с помощью градиентного алгоритма.
Пусть
C:=C (a1, a2, ..., ak) = C (a1, a2, ..., ak-1) + C (ak) - цена, где
C (ak) - функция, определенная для всех ak;