Проблемът на пътуващия търговец (TSP) — дефиниция, история и решения

Научете всичко за Проблема на пътуващия търговец (TSP): дефиниция, история и модерни алгоритми за оптимизация и практически решения.

Автор: Leandro Alegsa

Проблемът за пътуващия търговец (често наричан TSP) е класически алгоритмичен проблем в областта на компютърните науки и изследването на операциите. Той е насочен към оптимизацията. В този контекст по-добро решение често означава решение, което е по-евтино, по-кратко или по-бързо. TSP е математически проблем. Той се изразява най-лесно като граф, описващ местоположението на набор от възли.

Дефиниция

Формулиран накратко: имаме крайна група от градове (възли) и разстоянията (или разходите) между всяка двойка градове. Задачата е да се намери най-краткият възможен цикъл, който преминава през всеки град точно веднъж и се връща в началния град. В зависимост от условията има варианти:

  • Симетричен TSP: разстоянието от A до B е същото като от B до A.
  • Асиметричен TSP: разстоянията могат да са различни в двете посоки (например при посочени еднопосочни пътища).
  • Метричен TSP: разстоянията удовлетворяват триъгълното неравенство (d(A,C) ≤ d(A,B)+d(B,C)).

История

Проблемът за пътуващия търговец е дефиниран през XIX в. от ирландския математик У. Р. Хамилтън и от британския математик Томас Къркман. Играта на Хамилтън "Икос" е била развлекателен пъзел, основан на намирането на хамилтонов цикъл. Общата форма на TSP изглежда е била изследвана за първи път от математици през 30-те години на ХХ век във Виена и в Харвард, по-специално от Карл Менгер. Менгер дефинира проблема, разглежда очевидния алгоритъм на грубата сила и наблюдава неоптималността на евристиката на най-близкия съсед:

Със задачата за пощальона (тъй като на практика този въпрос трябва да се решава от всеки пощальон, но и от много пътници) обозначаваме задачата да се намери за fiнално много точки, чиито разстояния по двойки са известни, най-краткият маршрут, свързващ точките. Разбира се, тази задача е решима чрез крайно много опити. Не са известни правила, които биха намалили броя на опитите под броя на пермутациите на дадените точки. Правилото, че първо трябва да се отиде от началната точка до най-близката точка, след това до най-близката до нея точка и т.н., по принцип не води до най-краткия маршрут.

Скоро след това Хаслер Уитни от Принстънския университет въвежда името "проблем на пътуващия търговец". Оттогава проблемът се превръща в едно от най-важните и изучавани предизвикателства в комбинаторната оптимизация.

Сложност и теоретични свойства

  • TSP е труден проблем: оптимизационната версия е NP-трудна, а решението на въпрос "има ли тур с дължина ≤ K?" (решимият/решаемият вариант) е NP-пълен.
  • Бруталното (изчерпателно) търсене изброява всички пермутации и има сложност O(n!), което става невъзможно при по-големи n.
  • Има динамичен програмeн алгоритъм (класическият Bellman–Held–Karp), който решава проблема за време от порядъка O(n^2 2^n) и използва O(n 2^n) памет — значително по-добър от n!, но все още експоненциален.
  • За метричния симетричен TSP съществува полиномиален алгоритъм за апроксимация с фактор 1.5 (алгоритъм на Christofides), докато в общия (несиметричен, не метричен) случай аппроксимации с постоянно ограничение не са възможни, освен ако P = NP.

Методи за решаване

Подходите за решаване на TSP могат да се групират в две големи категории: точни алгоритми (дават оптимално решение) и эвристики/метаевристики (дават близки до оптималното решения за по-кратко време).

Точни методи

  • Брутална сила: проба на всички пермутации (само за много малки n).
  • Динамично програмиране: Bellman–Held–Karp — O(n^2 2^n) време.
  • Branch and bound: изрязване на част от дървото на решенията чрез граници за най-добрия възможен маршрут.
  • Branch-and-cut / Integer programming: формулиране като цялочислено линейно програмиране и използване на разделяне по разрези (cutting planes). Съвременните имплементации успяват да решат много големи практически инстанции.
  • Concorde: един от водещите точни решатели на TSP на практика, използва комбинация от cutting planes, branch-and-bound и други техники.

Евристики и метаевристики

  • Най-близък съсед (Nearest Neighbor): бърз, но с лоши гаранции в най-лошия случай.
  • 2-opt, 3-opt и k-opt: локални подобрения, които разбиват и пренареждат сегменти от тура, широко използвани за бързо усъвършенстване на решения.
  • Lin–Kernighan: мощна и практично ефективна превъплътена k-opt стратегия.
  • Критофидес (Christofides): дава гаранция 1.5 за метричния симетричен TSP.
  • Метaевристики: генетични алгоритми, simulated annealing (симулирано отгряване), ant colony optimization (оптимизация чрез имитация на мравки) и др. — подходящи за големи практически инстанции, където точните методи са твърде бавни.

Приложения

Въпреки че формулировката на проблема е абстрактна, TSP има много практически приложения и служи като модел за по-сложни задачи:

  • Планиране на маршрути и логистика (доставка, маршрутизация на камиони, пощенски услуги).
  • Проектиране на печатни платки (оптимизиране на реда на пробиване на дупки).
  • Оптимизация в производство и сглобяване.
  • Биоинформатика — подзадачи в подравняване и реконструкция на ДНК (неколкократни подобни формулировки).
  • Комуникационни мрежи и планиране на тестове.

Разширения и общи случаи

От TSP са произлезли и са изучени много разширения и по-общи проблеми, например:

  • Vehicle Routing Problem (VRP): множество превозни средства, капацитети и ограничения на времето.
  • Prize-collecting TSP, Orienteering: комбиниране на печалби и разходи при избор кои възли да бъдат посетени.
  • Time-dependent TSP: разходите между градове зависят от времето на деня.

Защо TSP е важен

Проблемът на пътуващия търговец е важен както от теоретична, така и от приложна гледна точка: той е класическо доказателство за трудността на комбинаторните оптимизационни задачи и едновременно с това е практичен модел, който мотивира разработването на мощни алгоритми и софтуерни решения, използвани в индустрията. Усъвършенстването на техники за TSP често води до методи, приложими и за други трудни задачи в оптимизацията.

Търговец иска да посети всички градове - A, B, C и D. Кой е най-добрият начин да го направи (най-евтини самолетни билети и минимално време за пътуване)?Zoom
Търговец иска да посети всички градове - A, B, C и D. Кой е най-добрият начин да го направи (най-евтини самолетни билети и минимално време за пътуване)?

Оптимален маршрут на търговец, който посещава 15-те най-големи града в Германия. Показаният маршрут е най-краткият от 43 589 145 600 възможни маршрута.Zoom
Оптимален маршрут на търговец, който посещава 15-те най-големи града в Германия. Показаният маршрут е най-краткият от 43 589 145 600 възможни маршрута.

Уилям Роуън ХамилтънZoom
Уилям Роуън Хамилтън

Поставяне на проблема

Задачата за пътуващия търговец описва търговец, който трябва да пътува между N града. Редът, в който го прави, не го интересува, стига да посети всеки от тях по веднъж по време на пътуването си и да завърши там, където е бил в началото. Всеки град е свързан с други близки градове, или възли, чрез самолети, пътища или железници. Към всяка от тези връзки между градовете са прикрепени една или повече тежести (или разходи). Цената описва колко "трудно" е да се премине през това ребро на графа и може да бъде дадена например чрез цената на самолетен или железопътен билет, или може би чрез дължината на реброто, или времето, необходимо за извършване на обхода. Търговецът иска да поддържа възможно най-ниски разходи за пътуване, както и разстоянието, което изминава.

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

Трудност

По принцип задачата за пътуващия търговец е трудна за решаване. Ако има начин тази задача да се разбие на по-малки съставни задачи, компонентите ще бъдат поне толкова сложни, колкото и първоначалната задача. Това е, което компютърните специалисти наричат NP-трудни проблеми.

Много хора са изследвали този проблем. Най-лесното (и най-скъпото решение) е просто да се опитат всички възможности. Проблемът с това е, че за N града имате (N-1) факторни възможности. Това означава, че само за 10 града има над 180 хил. комбинации за изпробване (тъй като началният град е определен, може да има пермутации на останалите девет). Отчитаме само половината, тъй като всеки маршрут има равен маршрут в обратна посока със същата дължина или цена. 9! / 2 = 181 440

  • Точните решения на задачата могат да бъдат намерени с помощта на алгоритми с разклонения и граници. В момента това е възможно за до 85 900 града.
  • Евристичните подходи използват набор от водещи правила за избор на следващия възел. Но тъй като евристиките водят до приближения, те невинаги дават оптималното решение, въпреки че висококачествените допустими евристики могат да намерят полезно решение за част от времето, необходимо за пълно грубо решаване на проблема. Пример за евристика за възел би било сумиране на това колко непосещавани възела са "близо" до свързан възел. Това би могло да насърчи търговеца да посети група близки възли, групирани заедно, преди да премине към друг естествен клъстер в графа. Вижте Алгоритми Монте Карло и Алгоритми Лас Вегас

Въпроси и отговори

В: Какво представлява проблемът за пътуващия търговец?


О: Проблемът за пътуващия продавач (TSP) е класически алгоритмичен проблем в областта на компютърните науки и изследването на операциите. Той се фокусира върху оптимизацията, като по-добрите решения често означават по-евтини, по-кратки или по-бързи решения.

Въпрос: Как се изразява TSP?


О: TSP се изразява най-лесно като граф, описващ местоположението на набор от възли.

В: Кой пръв дефинира TSP?


О: Проблемът за пътуващия търговец е дефиниран през XIX век от ирландския математик У. Р. Хамилтън и от британския математик Томас Къркман.

В: Кой го е изучавал допълнително през 30-те години на ХХ век?


О: През 30-те години на ХХ в. математиците Карл Менгер от Виена и Харвард го изучават допълнително.

В: Какво въвежда Хаслер Уитни скоро след това?


О: Хаслер Уитни от Принстънския университет въвежда името "проблем на пътуващия търговец" скоро след дефинирането му.

В: Какво означава "по-добро решение" в този контекст?


О: В този контекст "по-добро решение" често означава решение, което е по-евтино, по-кратко или по-бързо.

Въпрос: Кой алгоритъм е бил смятан за очевиден от Менгер при изучаването на TSP?


О: Менгер е смятал за очевиден алгоритъм за груба сила, когато е изучавал TSP, и е забелязал, че използването на евристиката на най-близкия съсед не винаги дава оптимални резултати.


обискирам
AlegsaOnline.com - 2020 / 2025 - License CC3