Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Vaneev_O_N__Turchin_D_E_TIPiS_Praktikum_2013.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
2.04 Mб
Скачать

3.3. Порядок выполнения работы

Данная практическая работа предполагает выполнение следующих этапов:

1. Изучить методические указания к практической работе.

2. Пройти собеседование с преподавателем и получить задание для выполнения работы.

Таблица 3.Х

Схемы графов для нахождения кратчайшего пути

вар.

Схема графа

1, 13

2, 14

3, 15

4, 16

5, 17

6, 18

7, 19

8, 20

9, 21

10, 22

11, 23

12, 24

3.4. Контрольные вопросы

1.?

2.?

4. Решение задачи коммивояжера методом ветвей и границ

4.1. Цель работы

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

Работа рассчитана на 4 часа.

4.2. Основные теоретические сведения

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

Построение маршрута обхода вершин в методе «ветвей и границ» рассматривается как разбиение исходного узла решений (множества всех возможных маршрутов) на два новых узла. Первый узел (узел (XY)) соответствует группе маршрутов, в которые входит некоторая дуга XY. Второй узел соответствует группе маршрутов, в которые дуга XY не входит. Затем разбивается на два новых узла узел (XY) и так далее, пока из выбранных дуг не сформируется конкретный маршрут. При построении варианта маршрута делается оценка возможной его длины на основе вычисления его нижней границы, то есть величины, меньше которой длина маршрута быть не может. Данная величина называется нижней границей. Если нижняя граница для какой-либо совокупности маршрутов больше, чем длина ранее найденного маршрута (эта величина рассматривается как верхняя граница), то такие маршруты исключаются из рассмотрения, и происходит ветвление одного из ранее оставленных узлов с меньшей нижней границей.

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

Алгоритм, построенный на основе метода «ветвей и границ» можно разделить на следующие этапы:

Этап 0.

Выбрать произвольный маршрут, подсчитать его длину. Принять вычисленную дугу в качестве верхней границы – ВГ. Вычисление верхней границы произвести методом «ближайшего соседа». В качестве текущей матрицы смежности DT взять матрицу смежности Т, соответствующую исходному графу. Установить номер формируемого узла L=0.

Этап 1.

Проредуцировать строки матрицы DT, то есть выявить в каждой i-ой строке наименьшее значение Ai, и вычесть его из всех значений строки. Проредуцировать столбцы матрицы DT, то есть выявить в каждом j-ом столбце наименьшее значение Bj, и вычесть его из значений всех элементов j-ого столбца. Рассчитать нижнюю границ для текущего узла – НГ. Нижняя граница рассчитывается как сумма всех чисел, на которые редуцировалась ему соответствующая матрица:

Нг= Нг^ + ∑Ai + ∑Bj,

где НГ^ – нижняя граница предшествующего узла на дереве решений. Для исходного узла решений Нг^=0.

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

Этап 2.

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

Для расчета штрафов, соответствующих полученным дугам с нулевым весом, необходимо выявить в строках и столбцах текущей матрицы DT значения, предшествующие наименьшим (то есть нулевым). Данные значения будут, соответственно, составляющей штрафа по строке (Ei) и составляющей штрафа по столбцу (Fj). Если в строке или столбце более одного нуля, то соответствующий штраф берется равный нулю. Полный штраф для какой-либо дуги вычисляется как сумма соответствующих ей штрафов за строку и столбец.

Выявляется нулевая дуга, которой соответствует наибольший штраф. Пусть наибольший штраф соответствует дуге XY – Ш(XY)=FX+FY. Данная дуга выбирается в качестве узловой.

Этап 3.

Текущий узел решений разбивается на два: узел, в который входят маршруты, проходящие через узловую дугу XY (узел (XY)), и узел, включающий маршруты, не проходящие через узловую дугу (узел решений (XY)).

Этап 4.

Рассчитать нижнюю границу для узла (XY).

Нг(XY) =НгТ+Ш(XY).

Запоминается узел (XY) и его характеристики:

L – номер узла, L=L+1;

Dl –матрица смежности узла решений.

(XY), Dl = DT(XY),

где DT(XY) – текущая матрица смежности, в которой вес дуги XY установлен – ∞ (бесконечность).

Этап 5.

Преобразовать матрицу DT. Вычеркнем из нее строку X (так как из одной вершины можно выйти только один раз) и столбец Y (так как только один раз можно войти в какую либо вершину), устанавливаем вес ∞ для дуг, образующих замкнутые контуры с ранее выбранными дугами.

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

Этап 6.

Если дуг больше нет, то все дуги маршрута выявлены, рассчитать длину маршрута Т:

Т= НГт + T(XY);

где T(XY) – вес последней дуги.

Если Т<ВГ, то принять ВГ=T.

Если нет узлов решений таких, что НГ<ВГ, то переход к этапу 7.

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

иначе: переход к этапу 1;

Этап 7.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]