Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Посібник_Дослідження_операцій.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
3.51 Mб
Скачать

3.3 Задача комівояжера

Далі розглянемо іншу задачу, яку можна розв’язати за допомогою методугілок та меж.

Постановка задачі. Маємо n міст, комівояжер повинен відвідати кожне з міст тільки один раз і повернутися в перше. Його маршрут повинен мінімізувати сумарну довжину ( або вартість) пройденого шляху. В теорії графів такий шлях називається гамільтоновим контуром. Тобто задача комівояжера – це знаходження гамільтонового контуру мінімальної довжини.

Мінімізується функція де Х – множина всіх припустимих маршрутів, тобто гамільтонових контурів, cij – вага дуги (i,j) (довжина або вартість шляху). Будемо вважати крім того, що cii = ∞,

cij = ∞, якщо немає шляху з пункту і в пункт j.

Сформулюємо загальну схему розв’язання задачі.

Маємо матрицю С = (cij ), де cij – вага дуги( i,j). Віднімаємо з усіх елементів кожного рядка матриці С мінімальний елемент цього рядка, далі в матриці, що одержана, від усіх елементів кожного стовпця віднімаємо мінімальний елемент цього стовпця. Матриця, що виникає, називається зведеною, позначимо її , крім того позначимо через – мінімум в рядку і; – мінімум у стовпці j; – назвемо константами зведення, i,j=1,2,…,n.

Для будь-якого гамільтонового контуру виконується наступне:

У якості ρ(х) вибираємо , і тоді виконуються вимоги, які накладаються на оцінку ρ(х), ρ(х) ≤ f(x).

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

Множину X ми повинні галузити. Множина Х11 складається з уcіx гамільтонових контурів із X, що не містять деякої дуги (r,s). Множила Х12 складається з ycix гамільтонових контурів з X, що містять дугу (r,s).

Правило вибору дуги (r,s) полягає в наступному: оцінку ρ12) прагнуть зробити меншою, оцінку ρ11) – більшою з метою збільшити ймовірність подальшого галуження множини Х12. Бажання зменшити оцінку ρ12) означає, що кандидатами на вибір дуги (r,s) можуть бути лише ті дуги, яким у зведеній матриці відповідають нульові елементи. Їх може бути декілька. Тоді знайдемо суму констант зведення кожного з нульових елементів матриці . Позначимо цю суму для елемента (i,j) через Θ(і, j). Як дугу (r,s) вибираємо таку, для якої оцінка знизу максимальна, тобто Θ(r,s) =max Θ (i,j).

Наступний етап – побудова зведених матриць i обчислення оцінок знизу.

Замінимо в матриці нульовий елемент, що відповіднє дузі (г,s), на ∞. Нову матрицю позначимо С1. Зведена матриця відстаней для гамільтонових контурів із Х11, що не містять дуги (r,s), одержується зведенням матриці C1. Сума констант зведення для матриці С1 дорівнює Θ(r,s).

Оцінка знизу для функції f(x) на множині Х11 така: ρ11) = ρ(Х) + Θ(r,s).

Гамільтонові контури з Х12 містять дугу (r,s). Викреслимо в матриці рядок i стовпець, що відповідають дузі (рядок відповідає місту r і стовпець відповідає місту s), Елемент, що відповідає дузі (s,r), замінюємо на ∞ (назад із s в r їхати не можна).

Отриману матрицю позначимо С2 (її розмір менше, ніж у попередньої). Зведена матриця відстаней для контурів з X12 одержується зведенням матриці С2. При цьому оцінка знизу ρ12) = ρ(Х) + τ(r,s), де τ(r,s) – сума констант зведення матриці С2.

Якщо в кожному рядку і стовпцю матриці С1 або С2 виявилося лише по одному елементу, відмінному від ∞, тоді множина X11 (або Х12) містить єдиний маршрут, довжина якого дорівнює ρ11) (або ρ12)).

Приклад. ( Задача комівояжера).

Є 5 міст. Дана матриця відстаней (вартості):

Потрібно знайти гамільтонів контур найменшої довжини.

Розв’язання.

І етап – операція зведення.

.

ІІ етап – операція галуження.

Галуження треба проводити за дугою (5,3):

ІІІ етап – побудова зведених матриць.

.

Кінцеві множини першого кроку Х11 і Х12. Галуженню підлягає Х12 ( з мінімальною оцінкою).

Зведемо матрицю С2:

Галуження буде за дугою (4,2).

Галуженню підлягає Х22 за дугою (3,4):

Галуженню підлягає Х32 за дугою (2,1):

Побудуємо отримане дерево:

Запишемо гамільтонів контур:

f(x) = 6+7+1+10+10 =34.

Питання для самоперевірки

  1. В чому полягає метод гілок та меж?

  2. По якому принципу відбувається галуження множини розв’язків?

  3. Якій умові повинна відповідати оцінка множин ?

  4. Сформулюйте постановку задачі про рюкзак.

  5. Яке припущення відносно речей, що кладуть в рюкзак, ми робимо під час розв’язання задачі методом гілок та меж?

  6. Сформулюйте постановку задачі комівояжера.

  7. У чому полягає алгоритм розв’язання задачі комівояжера?

Задачі для самостійної роботи

    1. Розв’язати задачу про рюкзак.

Маємо 5 предметів, де − вартість i-го предмета, − вага i-го предмета.

Дані про предмети наведені в таблиці:

Варіант А

С=40

Варіант Б

C=45

    1. Розв’язати задачу комівояжера при заданій матриці відстані.

Варіант А Варіант Б