Применение данного метода к задаче коммивояжера, будет отличаться принципом, по которому осуществляется ветвление, и методами получения верхней и нижней оценок. В данном случае будет рассмотрено не дихотомическое ветвление, а полный перебор добавляемых вершин. В качестве начальной вершины ветвления можно выбрать произвольную (например, первую).
Нижняя оценка может быть получена следующим образом:
| (10) |
Верхняя – как решение задачи методом ближайшего соседа (алгоритм см. выше).
Шаг 1. Производим ветвление от вершины
Шаг 2. Для каждой ветки, соответствующей добавлению в маршрут ребра (
Шаг 3. Если в существует направление
Шаг 4. Повторяем шаги 1-3 до полного построения маршрута.
Указания по отображению процесса поиска решения:
Режим демонстрации:
Отображать матрицу переходов. Вершины ветвления помечать соответствующим номером добавляемой в решение переменной
Режим обучения:
Пользователь помечает вершины ветвления и отбрасывает неперспективные ветки. Если ветвление идет в не правильном направлении, то пользователь предупреждается об этом. Пользователь выбирает ветку с оптимальным решением.
Обозначим через
| (11) |
При граничных условиях:
| (12) |
Значение, полученное в результате вычисления соотношения (11), является оптимальным решением исходной задачи.
Алгоритм состоит в последовательном вычислении соотношений (11), процесс поиска решения отображается в виде дерева.
Указания по отображению процесса поиска решения:
Режим демонстрации:
Отображать задачу. Вершины ветвления помечать соответствующим номером добавляемой в решение переменной
Режим обучения:
Пользователь помечает вершины ветвления и расставляет расстояния на ребрах. Если метки расставляются не правильно или выбрана не правильная вершина ветвления, то пользователь предупреждается об этом. Пользователь выбирает ветку с оптимальным решением.
Постановка задачи
Дана сеть G(V, E) с источником s и стоком t. Каждое ребро имеет заданную пропускную способность
Методы решения
Метод Форда-Фалкерсона (иногда он называется методом меток) является первым из предложенных методов поиска максимального потока и базисным для многих алгоритмов, предложенных позднее. Более подробно с данным методом можно ознакомиться в работах [2, 3].
Из источника осуществляется поиск до тех пор, пока не будет достигнут сток. По найденному пути осуществляется насыщение потока, величина потока из вершины
Шаг 1. Присвоить вершине
Шаг 2. Берем произвольную помеченную вершину
Если
Иначе, если
Шаг 3. Повторяем шаг 2 пока не будут выполнены следующие условия:
Если помечена вершина
Если вершина
Шаг 4. Пользуясь метками, производим насыщение ребер, начиная с вершины
Если пометка вершины
Если пометка вершины
Переходим в вершину
Повторяем шаг 4 пока не достигнем источника:
Шаг 5. Переходим на шаг 1.
Замечание: полученные на последней итерации пометки позволяют определить минимальный разрез. В него входят ребра, соединяющие помеченные и непомеченные вершины.
Указания по отображению процесса поиска решения:
Режим демонстрации:
Для каждой вершины отображаются метки [