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

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

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

Нам требуется найти Гамильтонов контур минимальной длины.

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

Минимальный элемент j-го столбца обозначим . Теперь оценку снизу длин Гамильтоновых контуров можно определить как .

Для данного примера:

1 2 3 4 5 1 2 3 4 5

0 0 1 0 0

После приведения по строкам и столбцам исходная матрица имеет вид:

1 2 3 4 5

Множество всех

Гамильтоновых контуров

=8

Рассмотрим способ разбиения множества Гамильтоновых контуров на два подмножества.

Возьмем любую дугу графа . К первому подмножеству отнесем все Гамильтоновы контуры, в которые эта дуга входит - . Ко второму подмножеству отнесем все Гамильтоновы контуры, в которые эта дуга не входит - .

Матрицу расстояний для первого подмножества получаем путем вычеркивания из исходной матрицы i-ой строки и j-го столбца, так как включение ¤ -ой дуги исключает включение других дуг, стоящих в i-ой строке или j-ом столбце. (Размеры матрицs расстояний уменьшатся на 1).

Матрицу расстояний для второго подмножества получаем, полагая .

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

Общее число Гамильтоновых контуров равно

Подмножество :

Подмножество : - =

То есть при , будет содержать большее число элементов, чем множество .

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

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

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

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

Поэтому выбирают дугу , чтобы для приведенной таблицы было .

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

Обозначим увеличение оценки для через . Значение величины получаем путем сложения наименьших чисел в i-ой строке и j-ом столбце.

1 2 3 4 5

Дугу включаем в Гамильтонов контур.

Множество всех

Гамильтоновых контуров

8

6

5

Рис. 56

Вычеркиваем 4 строку и 1 столбец матрицы.

1 2 3 4 5

2 3 4 5

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

2 3 4 5 2 3 4 5

На дугу надо поставить в полуматрице запрет × (означает ).

0 0 3 0

2 3 4 5

Дугу включаем в Гамильтонов контур.

Множество всех

Гамильтоновых контуров 8

6

5

0 2

Рис. 57

Первую строку и пятый столбец вычеркиваем.

2 3 4 5

2 3 4

2 3 4

0 0 0

2 3 4

Вычеркиваем и .

3

2 3 4

Дуги и включаем в гамильтонов контур.

Множество всех

Гамильтоновых контуров 8

5

6

0 2

0

Рис. 58

Получили Гамильтонов контур , длина которого 8+5+0=13

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