WWW.REFERATCENTRAL.ORG.UA - Я ТУТ НАВЧАЮСЬ

... відкритий, безкоштовний архів рефератів, курсових, дипломних робіт

ГоловнаІнформатика, Компютерні науки → Задача комівояжера - Реферат

Задача комівояжера - Реферат


РЕФЕРАТ
на тему:
"Задача комівояжера"
Задача комівояжера є оптимізаційною задачею, що часто виникає на практиці. Вона може бути сформульована таким чином: для деякої групи міст із заданими відстанями між ними потрібно знайти найкоротший маршрут з відвідуванням кожного міста один раз і з поверненням в початкову точку. Було доведено, що ця задача належить великої множини задач, званих "NP-повними" (недетерміновано поліноміальними). Для NP-повних задач не відомо кращого методу рішення, ніж повний перебір всіх можливих варіантів, і, на думку більшості математиків, малоймовірно, щоб кращий метод був колись знайдений. Оскільки такий повний пошук практично нездійсненний для великого числа міст, то евристичні методи використовуються для знаходження прийнятних, хоч і неоптимальних рішень.
Описане в роботі рішення, засноване на мережах із зворотними зв'язками, є типовим в цьому відношенні. Все ж відповідь виходить так швидко, що в певних випадках метод може виявитися корисним.
Допустимо, що міста, які необхідно відвідати, помічені буквами А, В, С і D, а відстані між парами міст є dab, dbc і т.д.
Рішенням є впорядкована множина з n міст. Задача складається у відображенні його в обчислювальну мережу з використанням нейронів в режимі з великою крутизною характеристики (наближається до нескінченності). Кожне місто представлене рядком з n нейронів. Вихід одного і тільки одного нейрона з них рівний одиниці (всі інші рівні нулю). Цей рівний одиниці вихід нейрона показує порядковий номер, в якому дане місто відвідується при обході. На рис. 6.6 показаний випадок, коли місто С відвідується першим, місто А - другим, місто D - третім і місто В - четвертим.
Для такого представлення потрібно n2 нейронів - число, яке швидко росте із збільшенням числа міст. Довжина такого маршруту була б рівна dca + dad + ddb + dbc. Оскільки кожне місто відвідується тільки один раз і в кожний момент відвідується лише одне місто, то в кожному рядку і в кожному стовпці є по одній одиниці. Для задачі з n містами всього є n! різних маршрутів обходу. Якщо n = 60, то є 6934155х1078 можливих маршрутів. Якщо брати до уваги, що в нашій галактиці (Чумацькому Шляху) є лише 1011 зірок, то стане ясним, що повний перебір всіх можливих маршрутів для 1000 міст навіть на самому швидкому в світі комп'ютері займе час, порівнянний з геологічною епохою.
Продемонструємо тепер, як сконструювати мережу для розв'язання цієї NP-повної проблеми. Кожний нейрон забезпечений двома індексами, які відповідають місту і порядковому номеру його відвідування в маршруті. Наприклад, OUTxj = 1 показує, що місто х було j-им по порядку містом маршруту.
Функція енергії повинна задовольняти двом вимогам: по-перше, повинна бути малою тільки для тих рішень, які мають по одній одиниці в кожному рядку і в кожному стовпці; по-друге, повинна надавати перевагу рішенням з короткою довжиною маршруту.
Перша вимога задовольняється введенням наступної, що складається з трьох сум, функції енергії:
,(6.9)
де А, В і С - деякі константи. Цим досягається виконання наступних умов:
1. Перша потрійна сума рівна нулю в тому і тільки в тому випадку, якщо кожний рядок (місто) містить не більше однієї одиниці.
2. Друга потрійна сума рівна нулю в тому і тільки в тому випадку, якщо кожний стовпець (порядковий номер відвідування) містить не більше однієї одиниці.
3. Третя сума рівна нулю в тому і тільки в тому випадку, якщо матриця містить рівне n одиниць.
Місто Порядок відвідування
1 2 3 4
A 0 1 0 0
B 0 0 0 1
C 1 0 0 0
D 0 0 1 0
Рис. 6.6. Маршрут комівояжера
Друга вимога - перевага коротким маршрутам - задовольняється за допомогою додавання наступного члена до функції енергії:
, (6.10)
Помітимо, що цей член являє собою довжину будь-якого припустимого маршруту. Для зручності індекси визначаються по модулі n, тобто OUTn+j = OUTj, a D - деяка константа.
При досить великих значеннях A, B і C низькоенергетичні стани будуть представляти припустимі маршрути, а великі значення D гарантують, що буде знайдений короткий маршрут.
Тепер задамо значення ваг, тобто встановимо відповідність між членами у функції енергії і членами загальної форми (див. рівняння 6.2)).
Одержуємо
wxi,yi =
-Adxy(1 - dij) (не допускає більш однієї одиниці в рядку)
-B dij(1 - dxy) (не допускає більш однієї одиниці в стовпці)
-С (глобальне обмеження)
-Ddxy(dj,i+1 + dj,і-1) (член, відповідальний за довжину циклу),
де dij = 1, якщо i = j, у противному випадку dij = 0. Крім того, кожен нейрон має зміщену вагу хі, з'єднаний з +1 і рівний Сn.
У роботі повідомляється про експеримент, у якому задача комівояжера була вирішена для 10 міст. У цьому випадку збуджуюча функція дорівнює
OUT = Ѕ [1 + th(NET/U0)].
Як показали результати, 16 з 20 прогонів зійшлися до припустимого маршруту і близько 50% рішень виявилися найкоротшими маршрутами, як це було встановлено за допомогою повного перебору. Цей результат стане більш вражаючим, якщо усвідомити, що є 181440 припустимих маршрутів.
Повідомлялося, що збіжність рішень, отриманих за методом Хопфілда для задачі комівояжера, у сильному ступені залежить від коефіцієнтів, і немає систематичного методу визначення їхніх значень. У цій роботі запропонована інша функція енергії з єдиним коефіцієнтом, значення якого легко визначається. На додаток запропонований новий збіжний алгоритм. Можна чекати, що будуть розроблятися нові методи, тому що цілком задовільне рішення знайшло би масу застосувань.
Задача
На острові розкидані горіхи. Лари хоче зібрати всі горіхи по найкоротшому шляху і повернутися на вихідне місце.
Вхід. Перший рядок кожного тесту містить довжину x і ширину y острова (x, y < 20). Далі випливають x рядків, що описують карту острова. Карта складається із символів 'L' (початкове місце розташування Лари), '.' (порожнє місце), '#' (горіх). Лари може пересуватися за один крок у кожнім з 8 сусідніх напрямків (по горизонталі, вертикалі і діагоналі). Кількість горіхів не більш
Loading...

 
 

Цікаве