Анализ метода ветвей и границ в задачах линейного программирования

СОДЕРЖАНИЕ

 

ВВЕДЕНИЕ

Большой класс прикладных задач оптимизации сводится к  задачам целочисленного программирования. Для решения этих задач широко применяются комбинаторные методы, основанные на упорядоченном переборе наиболее перспективных вариантов. Комбинаторные методы решения можно разделить на две группы: методы динамического программирования и методы ветвей и границ.

При решении многомерных задач оптимизации предлагается совместное применение методов ветвей и границ и динамического программирования. На первом этапе задача решается методом динамического программирования отдельно по каждому из ограничений. Последовательности, полученные в результате решения функционального уравнения динамического программирования, в дальнейшем используется для оценки верхней (нижней) границы целевой функции. На втором этапе задача решается методом ветвей и границ. При использовании этого метода определяется способ разбиения всего множества допустимых вариантов на подмножества, то есть способ построения дерева возможных вариантов, и способ оценки верхней границы целевой функции.

Комплексное применение методов динамического программирования и ветвей и границ позволяет повысить эффективность решения дискретных задач оптимизации. При решении задач большой размерности с целью уменьшения членов оптимальной последовательности используются дополнительные условия отсечения.

 

1 ОПИСАНИЕ ЗАДАЧИ ЦЕЛОЧИСЛЕННОГО  ПРОГРАММИРОВАНИЯ

По смыслу значительной части экономических задач, относятся  к задачам линейного программирования, компоненты решения должны выражаться в целых числах, т.е. быть целочисленными. К ним относятся, например, задачи, в которых переменные означают количество единиц неделимой продукции, число станков при загрузке оборудования, число судов при распределениях по линиям, число турбин в энергосистеме, число вычислительных машин в управляющем комплексе и многие другие.

Задача линейного целочисленного программирования формируется следующим образом: найти такое решение (план) X = (x1,x2,...,xn), при котором линейная функция

   (1.1)

принимает максимальное или  минимальное значение при ограничениях:

= bi,   .   (1.2)

хj ³ 0,   .   (1.3)

xj Î Z,   .   (1.4).

 

2 МЕТОД ВЕТВЕЙ И ГРАНИЦ

2.1 Описание  метода ветвей и границ

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

Метод ветвей и  границ состоит в следующем: множество  допустимых решений (планов) некоторым  способом разбивается на подмножества, каждое из которых этим же способом снова разбивается на подмножества. Процесс продолжается до тех пор, пока не получено оптимальное целочисленное решение исходной задачи.

2.2  Алгоритм действия метода ветвей и границ

Первоначально  находим, к примеру, симплекс-методом оптимальный план задачи без учета целочисленности переменных. Пусть им является план X0. Если среди компонент этого плана нет дробных чисел, то тем самым найдено искомое решение данной задачи и Fmax = F(X0).

Если же среди компонент плана X0 имеются дробные числа, то X0 не удовлетворяет условию целочисленности и необходимо осуществить упорядоченный переход к новым планам, пока не будет найдено решение задачи. Покажем, как это можно сделать, предварительно отметив, что F(X0) ³ F(X) для всякого последующего плана X в связи с увеличением количества ограничений.

Предполагая, что  найденный оптимальный план X0 не удовлетворяет условию целочисленности переменных, тем самым считаем, что среди его компонент есть дробные числа. Пусть, например, переменная приняла в плане X0 дробное значение. Тогда в оптимальном целочисленном плане ее значение будет, по крайней мере, либо меньше или равно ближайшему меньшему целому числу , либо больше или равно ближайшему большему целому числу . Определяя эти числа, находим симплекс-методом решение двух задач линейного программирования:

  (2.1)

 

    (2.2)

 

Найдем решение  задач линейного программирования (2.1) и (2.2). Очевидно, здесь возможен один из следующих четырех случаев:

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

2.  Одна из задач неразрешима, а другая имеет оптимальный план, среди компонент которого есть дробные числа. Тогда рассматриваем вторую задачу и в ее оптимальном плане выбираем одну из компонент, значение которой равно дробному числу, и строим две задачи, аналогичные задачам (2.1) и (2.2).

3. Обе задачи разрешимы. Одна из задач имеет оптимальный целочисленный план, а в оптимальном плане другой задачи есть дробные числа. Тогда вычисляем значения целевой функции на этих планах и сравниваем их между собой.

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

3.2. Если же значение целевой функции больше на плане, среди компонент которого есть дробные числа, то следует взять одно из таких чисел и для задачи, план которой рассматривается, необходимо построить две задачи, аналогичные (2.1) и (2.2).

4. Обе задачи разрешимы, и среди оптимальных планов обеих задач есть дробные числа. Тогда вычисляем значение целевой функции на данных оптимальных планах и рассматриваем ту из задач, для которой значение целевой функции является наибольшим. В оптимальном плане этой задачи выбираем одну из компонент, значение которой является дробным числом, и строим две задачи, аналогичные (2.1) и (2.2).

 

2.3 Общий алгоритм решения  задач с помощью метода границ  и ветвей, его суть

Таким образом, описанный выше итерационный процесс может быть представлен в виде некоторого дерева, на котором исходная вершина отвечает оптимальному плану Х0 задачи (1.1)-(1.3), а каждая соединенная с ней ветвью вершина отвечает оптимальным планам задач (2.1) и (2.2). Каждая из этих вершин имеет свои ветвления. При этом на каждом шаге выбирается та вершина, для которой значение функции является наибольшим. Если на некотором шаге будет получен план, имеющий целочисленные компоненты, и значение функции на нем окажется больше или равно, чем значение функции в других возможных для ветвления вершинах, то данный план является оптимальным планом исходной задачи целочисленного программирования и значение целевой функции на нем является максимальным.

Итак, процесс нахождения решения задачи целочисленного программирования (1.1)-(1.4) методом ветвей и границ включает следующие основные этапы:

1. Находят решение задачи линейного программирования (1.1)-(1.3).

2. Составляют дополнительные ограничения для одной из переменных, значение которой в оптимальном плане задачи (1.1)-(1.3) является дробным числом.

3. Находят решение задач (2.1) и (2.2), которые получаются из задачи (1.1)-(1.3) в результате присоединения дополнительных ограничений.

4. В случае необходимости составляют дополнительные ограничения для переменной, значение которой является дробным, формулируют задачи, аналогичные задачам (2.1) и (2.2), и находят их решение.

Итерационный процесс  продолжают до тех пор, пока не будет  найдена вершина, соответствующая  целочисленному плану задачи (1.1)-(1.4) и такая, что значение функции в этой вершине больше или равно значению функции в других возможных для ветвления вершинах.

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

 

2.4  Пример использования  метода ветвей и границ

В качестве примера  к методу ветвей и границ рассмотрим функцию z=4х12+1®max   (2.3) при ограничениях:

  (2.4). x1, x2 Î Z,   (2.5).  

Пусть Х0 = (0; 0), z0 = 1 - «оптимальное» решение   (2.6). Выполним 1-й этап общего алгоритма и найдем с помощью симплекс-метода, а затем и двойственного симплекс-метода  X1, исходя из ограничений (2.4). Итак,  X1 = (3; 0,5; 0; 1; 0; 2,5), z1 = 13,5   (2.7). Так как z1 дробное, то «оптимальным» так и остается план Х0,

Согласно 2-му пункту нашего плана, составим 2 новых системы ограничений  для (2.4):

   (2.8)   и      (2.9).

Выполним 3-й  пункт алгоритма. Для начала, решив задачу (2.3), (2.8) с помощью табличного процессора Microsoft Excel, находим X2 = (2; 1), z2 = 10   (2.10). Так как z ≥ z0, «оптимальным» становится план Х0.

Решим задачу (2.3), (2.9). Из последнего уравнения, очевидно, что x2 = 0. Отсюда следует, что x1 = 3 (максимально возможное). Тогда Х3 = (3; 0), z3 = 13   (2.11), а, следовательно, данный план является оптимальным.

Нам не пришлось выполнять 4-й пункт нашего алгоритма в связи с тем, что оптимальное решение найдено, переменные целочисленные. К тому же, все необходимые моменты решения уже были показаны в пунктах 1-3.

 

3 ПРИМЕНЕНИЕ МЕТОДА  ВЕТВЕЙ И ГРАНИЦ ДЛЯ РЕШЕНИЯ ЗАДАЧ РАЗЛИЧНОГО ТИПА

3.1 Применение метода ветвей и границ для задач календарного планирования

Метод ветвей и  границ является универсальным методом  решения комбинаторных задач  дискретного программирования. Сложность  практического применения метода заключается  в трудностях нахождения способа ветвления множества на подмножества и вычисления соответствующих оценок, которые зависят от специфики конкретной задачи.

Для того, чтобы  выяснить области применения данного  метода и ознакомиться с практической его формой, мы обратимся к задаче трех станков1, как к классическому примеру.

 Алгоритм решения задачи трех станков методом ветвей и границ

Заданы n деталей di (i = 1, 2, ..., n), последовательно обрабатываемых на трех станках R1, R2, R3,  причем технологические маршруты всех деталей одинаковы. Обозначим ai ,bi ,ci — длительность обработки деталей di на первом, втором и третьем станках соответственно.

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

Можно показать, что в задаче трех станков очередность выполнения первых, вторых и третьих операций в оптимальном решении может быть одинаковой (для четырех станков это свойство уже не выполняется). Поэтому достаточно определить очередность запуска только на одном станке (например, третьем).

Обозначим sk = (i1, i2 , ..., ik) — некоторую последовательность очередности запуска длиной k (1 £ k £ n) и A (sk), В (sk), С (sk) — время окончания обработки последовательности деталей sk на первом, втором и третьем станках соответственно.

Необходимо  найти такую последовательность sопт, что

С(sопт) = min С (s).   (3.1.1)

Реккурентное вычисление A(sk), В(sk), C(sk) и условие доминирования

 Покажем,  как можно рекуррентно вычислять A (sk), В (sk), С (sk). Пусть sk+1 = (sk ,ik+i), т. е. последовательность деталей sk+1 получена из деталей sk с добавлением еще одной детали ik+1. Тогда:

A (sk+1) = A (sk)+    (3.1.2),

В (sk+1) = max [A (sk+1);  В (sk)] +    (3.1.3),   

С (sk+1) = max [В (sk+1); С (sk)] +    (3.1.4).

Логика выражений (3.1.2) – (3.1.4) очевидна, особенно если рассмотреть задачу двух станков.

Для задачи трех станков  можно использовать следующее правило доминирования:

Если  s — некоторая начальная последовательность,   а — подпоследовательность, образованная из s перестановкой некоторых символов, то вариант s доминирует над , когда выполняются следующие неравенства:

А (s) £ А ( ), В (s) £ В ( ), С (s) £ С ( )   (3.1.5),

 причем хотя бы одно  из них выполняется как строгое  неравенство.


Способ конструирования  вариантов последовательностей s и вычисления оценок D(s) для каждого из них состоит в следующем:

Пусть имеется начальная подпоследовательность s. Тогда вычисляются величины:

dC(s) = С(s) + ,   (3.1.6)

dB(s) = В (s) + ,   (3.1.7)

dA(s) = A (s) +   +    (3.1.8),

где J (s) — множество символов,  образующих последовательность s.

 

За оценку критерия С(s) для варианта s можно принять величину

D(s) = max {dA(s), dB (s), dC (s)}   (3.1.9).

Тогда ход решения  задачи трех станков можно представить  следующей формальной схемой:

1) Нулевой шаг. Задание множества G(0), образуется всеми возможными последовательностями (s = 0).

Вычисление  оценки для множества G0:

D(0) = max {dA(0), dB (0), dC (0)}   (3.1.10), где  

  (3.1.11).

2) Первый шаг. Образование    множеств    G1(1), G2(1) , …, Gn(1), подмножество Gk определяется всеми последовательностями с началом ik(k, ...,n).

Вычисление оценок. Оценку для последовательности sk определяют из соотношения (3.1.9), т. е.


 D(sk) = max {dA(sk), dB (sk), dC (sk)};  k = 1,…,n.   (3.1.12).

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

D(sk(1))=min D(sj(1)).   (3.1.13)

Ветвление. Выбрав наиболее перспективный вариант последовательности sk(1), развивают его построением всех возможных подпоследовательностей длиной 2 с началом  sk(1) вида   sk+1(2)= (sk(1), j), где j не входит в sk.

Вычисление  оценок производят в соответствии с  соотношениями (3.1.6), (3.1.7), (3.1.8).

3)k-й  шаг. Допустим, что уже проведено k шагов, в результате чего построены варианты s1(k), s2(k) ,…,sk(k), а именно подпоследовательности длиной k.

Выбираем самый  перспективный вариант sS(k) такой, что

D(ss(k))=min D(sj(k)).

Множество Gs(k) разбиваем на (n — k) подмножеств, каждое из которых образуется добавлением к последовательности ss(k) некоторого элемента ik+1 такого, что ik+1 .

Оценка  определяется в соответствии с соотношениями (3.1.6) — (3.1.9).

В результате строим дерево вариантов следующего вида: вершина О отвечает s = 0, вершины первого уровня G1(1), G2(1)..., Gn(1) соответствуют последовательностям длиной 1, т. е. s1(1) = 1, s2(1) = 2,..., sn(1) = п и т. д. Каждая конечная вершина отвечает последовательности максимальной длины n.

Признак оптимальности. Если sv(n)  отвечает конечной вершине дерева, причем оценка наименьшая из оценок всех вершин, то sv(n) — искомый вариант.

 

3.2 Задача коммивояжера

3.2.1 Формулировка задачи

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

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

Можно предложить следующую простую  схему решения задачи коммивояжера: сгенерировать все n! возможных перестановок вершин полного графа, подсчитать для каждой перестановки длину маршрута и выбрать кратчайший. Однако, n! с ростом n растет быстрее, чем любой полином от n, и даже быстрее, чем . Таким образом, решение задачи коммивояжера методом полного перебора оказывается практически неосуществимым, даже при достаточно небольших n.

Решить задачу коммивояжера также  можно с помощью алгоритма Крускала и «деревянного» алгоритма. Эти методы ускоряют разработку алгоритма по сравнению с методом полного перебора, однако не всегда  дают оптимальное решение.

Существует метод решения задачи коммивояжера, который дает оптимальное  решение. Этот метод называется методом ветвей и границ.

3.2.2 Метод ветвей и границ

Решение задачи коммивояжера методом  ветвей и границ по-другому называют алгоритмом Литтла. 

Если считать города вершинами  графа, а коммуникации (i,j) – его дугами, то требование нахождения минимального пути, проходящего один и только один раз через каждый город, и возвращения обратно, можно рассматривать как нахождение на графе гамильтонова контура минимальной длины.

Для практической реализации идеи метода ветвей и границ применительно к  задаче коммивояжера нужно найти  метод определения нижних границ подмножества и разбиения множества гамильтоновых контуров на подмножества (ветвление).

Опишем алгоритм Литтла для нахождения минимального гамильтонова контура  для графа с n вершинами. Граф представляют в виде матрицы его дуг. Если между вершинами Xi и Xj нет дуги, то ставится символ «∞».

Алгоритм Литтла для решения  задачи коммивояжера можно сформулировать в виде следующих правил:

1. Находим в каждой строке  матрицы  минимальный элемент и вычитаем его из всех элементов соответствующей строки. Получим матрицу, приведенную по строкам, с элементами

. (3.2.1)

2. Если в матрице  , приведенной по строкам, окажутся столбцы, не содержащие нуля, то приводим ее по столбцам. Для этого в каждом столбце матрицы выбираем минимальный элемент , и вычитаем его из всех элементов соответствующего столбца. Получим матрицу

,  (3.2.2)

каждая строка и столбец, которой содержит хотя бы один нуль. Такая матрица называется приведенной по строкам и столбцам.

3. Суммируем элементы  и , получим константу приведения

  ,   (3.2.3)

которая будет нижней границей множества всех допустимых гамильтоновых контуров, то есть

.   (3.2.4)

4. Находим степени нулей для  приведенной по строкам и столбцам  матрицы. Для этого мысленно  нули в матице заменяем на  знак «∞» и находим сумму минимальных элементов строки и столбца, соответствующих этому нулю. Записываем ее в правом верхнем углу клетки:

.  (3.2.5)

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

.   (3.2.6)

6. Разбиваем множество всех гамильтоновых  контуров  на два подмножества и . Подмножество гамильтоновых контуров содержит дугу , - ее не содержит. Для получения матрицы контуров , включающих дугу , вычеркиваем в матрице строку и столбец . Чтобы не допустить образования негамильтонова контура, заменим симметричный элемент на знак «∞».

7. Приводим матрицу гамильтоновых  контуров  . Пусть - константа ее приведения. Тогда нижняя граница множества определится так:

.   (3.2.7)

8. Находим множество гамильтоновых  контуров  , не включающих дугу . Исключение дуги достигается заменой элемента в матрице на ∞.

9. Делаем приведение матрицы  гамильтоновых контуров  . Пусть - константа ее приведения. Нижняя граница множества определится так:

.   (3.2.8)

10. Сравниваем нижние границы  подмножества гамильтоновых контуров  и . Если , то дальнейшему ветвлению в первую очередь подлежит множество . Если же , то разбиению подлежит множество .

Процесс разбиения множеств на подмножества сопровождается построением дерева ветвлений.

11. Если в результате ветвлений  получаем матрицу , то определяем полученный ветвлением гамильтонов контур и его длину.

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

 

 

3.3 Применение метода ветвей и границ для задач календарного планирования

Рассмотрим применение разновидности  метода ветвей и границ — метода «последовательного конструирования и анализа вариантов» для решения задачи календарного планирования трех станков.

Заданы п деталей di (i = 1, 2, ..., n), последовательно обрабатываемых на трех станках R1, R2, R3,  причем технологические маршруты всех деталей одинаковы. Обозначим ai ,bi ,ci — длительность обработки деталей di на первом, втором и третьем станках соответственно.

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

Можно показать, что в задаче трех станков очередность выполнения первых, вторых и третьих операций в оптимальном решении может  быть одинаковой (для четырех станков  это свойство уже не выполняется). Поэтому достаточно определить очередность запуска только на одном станке (например, третьем).

Обозначим sk = (i1, i2 , ..., ik) — некоторую последовательность очередности запуска длиной k (1 £ k £ п) и A (sk), В (sk), С (sk) — время окончания обработки последовательности деталей sk на первом, втором и третьем станках соответственно.

Необходимо найти такую последовательность sопт, что

С(sопт) = min С (s).

     s

Покажем, как можно рекуррентно  вычислять A (sk), В (sk), С (sk). Пусть sk+1 = (sk ,ik+i), т. е. последовательность деталей sk+1 получена из деталей sk с добавлением еще одной детали ik+1. Тогда

A (sk+1) = A (sk)+

В (sk+1) = max [A (sk+1);  В (sk)] + ,   

С (sk+1) = max [В (sk+1); С (sk)] +  

Для задачи трех станков можно использовать следующее правило доминирования .

Если  s — некоторая  начальная  последовательность,   а — под последовательность образованная из s перестановкой некоторых символов, то вариант s доминирует над , когда выполняются следующие неравенства:   А (s) £ А ( ),     В (s) £ В ( ),    С (s) £ С ( ), причем хотя бы одно из них выполняется как строгое неравенство.

Способ конструирования вариантов  последовательностей s и вычисления оценок D(s) для каждого из них состоит в следующем.

Пусть имеется начальная подпоследовательность s. Тогда вычисляются величины:

dC(s) = С(s) + , (3.3.1)

dB(s) = В (s) + +  min cj , (3.3.2)

dA(s) = A (s) +   +  (3.3.3)

где J (s) — множество символов,  образующих последовательность s.

За оценку критерия С (s) для варианта s можно принять величину

                         D(s) = max {dA(s), dB (s), dC (s)}.    (3.3.4)

Тогда ход решения задачи трех станков можно представить  следующей формальной схемой.

Нулевой шаг. Задание множества G(0), образуется всеми возможными последовательностями (s = 0).

Вычисление оценки для множества G0:

где   D(0) = max {dA(0), dB (0), бC (0)},

.

Первый шаг. Образование    множеств    G1(1) U G1(2) U... …G1(n).

Подмножество Gk определяется всеми последовательностями с началом ik(k — 1, ...,n ).

Вычисление оценок. Оценку для последовательности sk определяют из соотношения (3.3.4), т. е.

   D(sk) = max {dA(sk), dB (sk), dC (sk)};  k = 1, n.

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

D(sk(1))=min D(sj(1)).

Ветвление. Выбрав наиболее перспективный вариант последовательности sk(1), развивают его построением всех возможных подпоследовательностей длиной 2 с началом  sk(1) вида   sk+1(2)= (sk(1), j), где j не входит в sk.

Вычисление оценок производят в  соответствии с соотношениями (3.3.1), (3.3.2), (3.3.3).

k - ш а г. Допустим, что уже проведено k шагов, в результате чего построены варианты s1(k), s2(k) ,…,svk(k), а именно подпоследовательности длиной k.

Выбираем самый перспективный  вариант sS(k) такой, что D(ss(k))=min D(sj(k)).

Множество Gs(k) разбиваем на (п — k) подмножеств, каждое из которых образуется добавлением к последовательности ss(k) некоторого элемента ik+1 такого, что ik+1 .

Оценка  определяется в соответствии с соотношениями (3.3.1) — (3.3.4).

В результате строим дерево вариантов  следующего вида: вершина О отвечает s = 0, вершины первого уровня G1(1), G2(1)..., Gn(1) соответствуют последовательностям длиной 1, т. е. s1(1) = 1, s2(1) = 2,..., sn(1) = п и т. д. Каждая конечная вершина отвечает последовательности максимальной длины п.

Признак оптимальности. Если sv(n)  отвечает конечной вершине дерева, причем оценка наименьшая из оценок всех вершин, то sv(n) — искомый вариант, иначе переходим к продолжению варианта с наименьшей оценкой.

 

Пример. Рассмотрим задачу трех станков, условия которой приведены в табл. 3.3.1:

Таблица 3.3.1

Длительность операций

Деталь

1

2

3

4

5

ai

bi

ci

2

3

4

5

2

4

1

1

2

3

4

2

3

5

2


Нулевой шаг. s = 0.

dA(s =0)=A(0)+ + =0+14+3=17;

dB(s=0)=В(0)+ +mincj =0+15+2=17;

dC(s = 0) = С(0) + =14 .

Тогда ∆ (s = 0) = max {17, 17,14} = 17.

Первый шаг. Конструируем все возможные последовательности длиной 1

s1(1)  = 1;  s2(1) = 2;   s3(1) = 3;   s4(1) = 4;   s5(1) = 5.

Находим dA(1) = A1 + + = 14 + 3 = 17;

dB(1)(s =0)=В1+ + =5+12+2=19;

dC(1) = С1 + = 9 + 10 = 19 .

Откуда ∆ (1) = max {17, 19, 19} = 19.

Аналогично определяем ∆ (2), ∆ (3), ∆  (4), ∆ (5).

Второй шаг. Среди множества подпоследовательностей длиной 1, s1(1) = 1, s2(1) = 2,..., s5(1)  = 5  выбираем наиболее перспективную s = 1, для которой величина оценки-прогноза ∆ (s) оказывается наименьшей. Далее развиваем ее, конструируя возможные варианты длиной 2, т. е. (1.2), (1.3), (1.4), (1.5).

Для каждого из этих вариантов вновь  определяем оценки по формулам (3.3.1) — (3.3.4).

Процесс вычислений продолжаем аналогично.

Процесс построения дерева вариантов  приведен на схеме.

Каждой конечной вершине дерева вариантов будет отвечать полная последовательность s = i1,i2,,.in. Если для некоторой такой вершины величина оценки ∆ (s) не превосходит величины оценок для всех остальных вершин, то эта оценка определяет искомый оптимальный вариант. В противном случае разбиваем более перспективный вариант с наилучшей оценкой.

Анализ метода ветвей и границ в задачах линейного программирования