Зада́ча комівояже́ра (комівояжер — бродячий торговець; англ.Travelling Salesman Problem, TSP; нім.Problem des Handlungsreisenden) полягає у знаходженні найвигіднішого маршруту, що проходить через вказані міста хоча б по одному разу. В умовах завдання вказуються критерій вигідності маршруту (найкоротший, найдешевший, сукупний критерій тощо) і відповідні матриці відстаней, вартості тощо. Зазвичай задано, що маршрут повинен проходити через кожне місто тільки один раз, в такому випадку розв'язок знаходиться серед гамільтонових циклів.
Існує маса різновидів узагальненої постановки задачі, зокрема геометрична задача комівояжера (коли матриця відстаней відображає відстані між точками на площині), трикутна задача комівояжера (коли на матриці вартостей виконується нерівність трикутника), симетрична та асиметрична задачі комівояжера.
Всі ефективні (такі, що скорочують повний перебір) методи розв'язання задачі комівояжера — евристичні. У більшості евристичних методів знаходиться не найефективніший маршрут, а наближений розв'язок. Користуються популярністю так звані any-time алгоритми, тобто алгоритми, що поступово покращують деякий поточний наближений розв'язок.
Задача комівояжера — NP-повна. Часто на ній проводять випробування нових підходів до евристичного скорочення повного перебору.
Історія
Невідомо, коли проблему комівояжера було досліджено вперше. Однак, відома видана в 1832 році книжка з назвою «Комівояжер — як він має поводитись і що має робити для того, аби доставляти товар та мати успіх в своїх справах — поради старого Кур'єра» (нім.Der Handlungsreisende – wie er sein soll und was er zu thun hat, um Aufträge zu erhalten und eines glücklichen Erfolgs in seinen Geschäften gewiß zu sein – von einem alten Commis-Voyageur), в якій описано проблему, але математичний апарат для її розв'язання не застосовується. Натомість, в ній запропоновано приклади маршрутів для деяких регіонів Німеччини та Швейцарії.
Раннім варіантом задачі є гра «Ікосіан»Вільяма ГамільтонаXIX століття, яка полягала в тому, щоб знайти маршрути на графі з 20 вузлами. Перші згадки як математичної задачі на оптимізацію належать Карлу Менґеру[en] (нім.Karl Menger), який сформулював її в математичному колоквіумі в 1930 році так:
Ми називаємо проблемою гінця (оскільки це питання виникає в кожного листоноші, зокрема, її вирішують багато мандрівників) завдання віднайти найкоротший шлях між скінченною множиною місць, відстань між якими відома.
у оригиналі
Wir bezeichnen als Botenproblem (weil diese Frage in der Praxis von jedem Postboten, übrigens auch von vielen Reisenden zu lösen ist) die Aufgabe, für endlich viele Punkte, deren paarweise Abstände bekannt sind, den kürzesten die Punkte verbindenden Weg zu finden. Dieses Problem ist natürlich stets durch endlich viele Versuche lösbar. Regeln, welche die Anzahl der Versuche unter die Anzahl der Permutationen der gegebenen Punkte herunterdrücken würden, sind nicht bekannt. Die Regel, man solle vom Ausgangspunkt erst zum nächstgelegenen Punkt, dann zu dem diesem nächstgelegenen Punkt gehen usw., liefert im allgemeinen nicht den kürzesten Weg.[2]
Разом із простотою визначення та порівняною простотою знаходження гарних розв'язків задача комівояжера відрізняється тим, що визначення насправді оптимального шляху є досить складним завданням. Зважаючи на ці властивості, починаючи з другої половини 20-го століття, дослідження задачі комівояжера, має не так практичний сенс, як теоретичний у ролі моделі для розробки нових алгоритмів оптимізації.
Багато сучасних поширених методів дискретної оптимізації, таких як метод діленням площиною[джерело?], гілок та границь та різноманітні варіанти евристичних алгоритмів було розроблено на прикладі задачі комівояжера.
В 1950-ті та 1960-ті роки задача комівояжера привернула увагу науковців в США та Європі. Важливий внесок в дослідження задачі належить Джорджу Данцігу (англ.George Dantzig), Делберту Рею Фалкерсону (англ.Delbert Ray Fulkerson) та Селмеру Джонсону (англ.Selmer M. Johnson), котрі в 1954 році в інституті RAND Corportation сформулювали задачу у вигляді задачі дискретної оптимізації та розробили метод відсікаючої площини для її розв'язання. Використовуючи новий метод вони обчислили шлях для окремого набору вузлів (екземпляру проблеми) з 49 міст та довели, що не існує коротшого шляху. В 1960-ті та 1970-ті роки численні групи дослідників вивчали задачу з точки зору математики та її застосування, наприклад, в інформатиці, економіці, хімії та біології.
Річард Карп (англ.Richard M. Karp) в 1972 році довів NP-повноту задачі пошуку гамільтонових шляхів, із чого, через поліноміальну зводимість, випливала NP-повнота задачі комівояжера. На основі цих властивостей ним було наведено теоретичне обґрунтування складності пошуку розв'язків задачі на практиці.
Більших успіхів вдалося досягнути наприкінці 1970-х та 1980-х років, коли Мартін Ґрьотчел (нім.Martin Grötschel), Манфред Падберґ (нім.Manfred Padberg) та Ґіованні Рінальді (нім.Giovanni Rinaldi) та інші, із застосуванням нових методів відсікаючої площини, гілок та границь обчислили розв'язок для окремого екземпляру задачі з 2393 містами.
В 1990-ті роки Девід Аплгейт (англ.David Applegate), Роберт Біксбі (англ.Robert Bixby), Вашек Хватал та Вільям Кук (англ.William Cook) встановили рекорди з програмою Конкорд. Ґерхард Райнельт (нім.Gerhard Reinelt) створив TSPLIB — набір стандартизованих екземплярів задачі комівояжера різного ступеня складності для порівняння результатів роботи різних груп дослідників. В березні 2005 року задачу з 33 810 вузлами було розв'язано програмою Конкорд: було обчислено шлях завдовжки 66 048 945 та доведено відсутність коротших шляхів. В квітні 2006 було знайдено розв'язок для екземпляру з 85 900 вузлами. Використовуючи методи декомпозиції можливо обчислити розв'язки для екземплярів задачі з мільйонами вузлів довжина яких менш ніж на 1 % більша за оптимальний.
Формальне визначення
Подання у вигляді графа
Для можливості застосування математичного апарату для розв'язання проблеми, її слід представити у вигляді математичної моделі. Проблему комівояжера можна представити у вигляді моделі на графі, тобто, використовуючи вершини та ребра між ними. Таким чином, вершини графа (на мал.: від A до D) відповідають містам, а ребра між вершинами та сполучення між цими містами. У відповідність кожному ребру можна зіставити вагу (на мал.: 20, 42, …), яку можна розуміти як, наприклад, відстань між містами, час або вартість подорожі. Маршрутом (також гамільтоновим маршрутом) називається маршрут на цьому графі до якого входить по одному разу кожна вершина графа. Задача полягає у відшуканні найкоротшого маршруту.
З метою спрощення задачі та гарантії існування маршруту, зазвичай вважається, що модельний граф задачі є повним, тобто, що між довільною парою вершин існує ребро. Це можна досягти тим, що в тих випадках, коли між окремими містами не існує сполучення, вводити ребра з максимальною вагою (довжиною, вартістю тощо). Через велику довжину таке ребро ніколи не потрапить до оптимального маршруту, якщо він існує.
В залежності від того, що зіставляється вазі ребер, розрізняють різні варіанти задачі, найважливішими з яких є симетрична та метрична задачі.
Асиметрична та симетрична задачі
В загальному випадку, асиметрична задача комівояжера відрізняється тим, що ребра між вершинами можуть мати різну вагу в залежності від напряму, тобто, задача моделюється орієнтованим графом. Таким чином, окрім ваги ребер графа, слід також зважати і на те, в якому напрямку знаходяться ребра.
У випадку симетричної задачі всі пари ребер між одними й тими самими вершинами мають однакову вагу, тобто, для ребра ваги однакові . Як наслідок, всі маршрути мають однакову довжину в обидва напрямки. В симетричному випадку кількість можливих маршрутів вдвічі менша за асиметричний випадок. Симетрична задача моделюється неорієнтованим графом (як показано на малюнку).
Насправді, задача комівояжера у випадку реальних міст може бути як симетричною, так і асиметричною в залежності від тривалості або довжини маршрутів в залежності від напряму руху.
Метрична задача
Симетричну задачу комівояжера називають метричною, якщо відносно довжин ребер виконується нерівність трикутника. Умовно кажучи, в таких задачах обхідні шляхи довші за прямі, тобто, ребро від вершини до вершини j ніколи не довше за шлях через проміжну вершину k:
Така властивість довжини ребер визначає вимірний простір на множині ребер та міру віддалі, що задовольняє інтуїтивне розуміння відстані.
Поширені на практиці функції віддалі є також метриками і задовольняють нерівності трикутника:
Манхеттенська метрика (також квартальна метрика) прямокутної задачі комівояжера, в якій відстань між вершинами на ґратці дорівнює сумі відстаней вздовж осі ординат та абсцис,
Відстань Чебишова, яка визначає віддаль між вершинами решітчастого графа як максимальне значення відстані вздовж осі ординат та абсцис.
Дві останні метрики знаходять застосування, наприклад, під час свердління отворів в друкованих платах коли верстат має зробити якнайбільше отворів за найменший час і може пересувати свердло незалежно в обох напрямах для переходу від одного отвору до наступного. Манхеттенська метрика відповідає випадку, коли пересування в обох напрямах відбувається послідовно, а максимальна — випадку коли пересування в обох напрямах відбувається синхронно а загальний час дорівнює максимальному часу пересування вздовж осі ординат або абсцис.
Не-метрична задача комівояжера може виникати, наприклад, у випадку мінімізації тривалості подорожі за наявності вибору транспортних засобів в різних напрямах. В такому випадку обхідний шлях літаком може бути коротший за пряме сполучення автомобілем.
Якщо, на практиці, в умовах задачі дозволяється відвідувати міста декілька раз, то симетричну задачу можна звести до метричної. Для цього задачу розглядають на так званому графі відстаней. Цей граф має таку саму множину вершин як і вихідний та, на доданок, є повністю зв'язним. Вага ребер між вершинами та на графі відстаней відповідає вазі найліпшого сполучення між вершинами та у вихідному графі. Для визначених в такий спосіб ваг виконується нерівність трикутника, і кожному маршруту на графі відстаней завжди відповідає маршрут з можливими повтореннями вершин у вихідному графі.
Формулювання у вигляді задачі дискретної оптимізації
Одним з підходів до розв'язання задачі є формулювання її у вигляді задачі дискретної оптимізації, при цьому розв'язки представляються у вигляді змінних, а зв'язки у вигляді відношень нерівності між ними. Таким чином, можливо декілька варіантів. Наприклад, симетричну задачу можна представити у вигляді множини ребер . Кожному ребру зіставляється двійкова змінна , яка дорівнює 1 якщо ребро належить маршруту та 0 в протилежному випадку. Довільний маршрут можна представити у вигляді значень множини змінних приналежності, але не кожна така множина визначає маршрут. Умовою того, що значення множини змінних визначають маршрут є описані далі лінійні нерівності.
Кожна вершина має сполучатись через пару ребер з рештою вершин, тобто, через вхідне та вихідне ребро:
В сумі кожний доданок дорівнює або 1 (належить маршруту) або 0 (не належить). Тобто, отримана сума дорівнює кількості ребер в маршруті, таких що мають вершину на одному з кінців. Вона дорівнює 2, оскільки кожна вершина має вхідне та вихідне ребро. У наведеному поруч малюнку вершина показана з вхідним та вихідними ребрами, а ребра маршруту відмічено товстішими лініями. Поруч з ребрами вказано ваги що додаються до вказаної вище суми.
Описані раніше умови кратності виконуються не лише маршрутами, а й значеннями змінних, що відповідають відокремленим циклам, де кожна вершина належить лише одному циклу (див. малюнок). Аби уникнути подібні випадки, мають виконуватись так звані нерівності циклів (або умови усунення підмаршрутів), які було визначено Данциґом, Фалкерсоном та Джонсоном в 1954 році під назвою умови петель (англ.loop conditions). Цими нерівностями визначалась додаткова умова того, що кожна множина вершин , є або порожньою, або містить всі вершини, що сполучається з рештою вершин через щонайменше два ребра:
для всіх множин вершин де . Ця сума дорівнює сумі ваг ребер маршруту між вершиною та вершиною . Аби усунути зайві нерівності, можна обмежитись множинами вершин з щонайменше двома та щонайбільше вершинами. На малюнку поруч ребра з вагами відмічено товстішими лініями а решта ребер має вагу . Введення додаткових умов (2) для множини вершин , що складається з трьох лівих вершин, буде гарантувати, щоб сполучалась через щонайменше два ребра маршруту з трьома вершинами справа, аби усунути обидва цикли. Кількість нерівностей усунення циклів відповідно до Данциґа, Фалкерсона та Джонсона дорівнює .
В 1960 році Міллєр (англ.Miller), Такер (англ.Tucker) та Землін (англ.Zemlin) винайшли альтернативні умови усунення підшляхів шляхом введення нових змінних, що визначають порядок відвіданих міст, що потребує лише додаткових нерівностей. Більше того, через двійковість у формулюванні Міллєра, Такера та Земліна задача комівояжера залишається NP-складною.
Так, кожен вектор з елементами, що дорівнюють 0 та 1, що задовольняє всім нерівностям визначає коректний маршрут, що є розв'язком переформульованої задачі комівояжера: обчислити
Оскільки змінні мають значення лише 0 та 1, сума дорівнює загальній довжині ребер що належать маршруту.
Кількість нерівностей типу (2) зростає експоненційно разом зі збільшенням кількості міст, оскільки майже кожна з підмножин вузлів визначає одну нерівність. Цю проблему можна вирішити застосуванням методу відсічення площиною завдяки якому нерівності додаються лише тоді, коли ці нерівності дійсно необхідні. З геометричної точки зору, лінійні нерівності можна представити як гіперплощину в просторі змінних. Множина векторів, що задовольняють цим нерівностям утворюють в такому просторі політоп (багатовимірний багатогранник), або багатовимірний багатокутник, точна форма визначається вагами і є в основному невідомим. Однак, можна показати, що умови (1) та (2) визначають грані (фацети) політопа, тобто, бічні поверхні політопа з найвищою розмірністю. Тому вони належать до найсильніших лінійних нерівностей, що можуть описувати маршрут. Також існує багато різних граней, що визначаються нерівностями, відомими лише у небагатьох випадках. Хоча (1) та (2) разом з обмеженнями повністю моделюють проблему лише для двійкових векторів, ці нерівності можуть використовуватись в методі гілок і меж аби відкинути розв'язки методами лінійної оптимізації з не цілими координатами (див. розділ точні методи нижче).
Алгоритмічна складність
Оскільки комівояжер в кожному з міст постає перед вибором наступного міста з тих, що він ще не відвідав, існує маршрутів для асиметричної та маршрутів для симетричної задачі комівояжера. Таким чином, розмір простору пошуку залежить над-експоненційно від кількості міст.
Різні варіанти задачі комівояжера (метричний, симетричний та асиметричний) є NP-еквівалентними. Відповідно до поширеної але недоведеної гіпотези про нерівність класів складності P та NP не існує детермінованої машини Тюринга, здатної знаходити розв'язки екземплярів задачі за поліноміальний час в залежності від кількості міст.
Також відомо, що за умови не існує алгоритму, що для деякого поліному обчислював би такі розв'язки задачі комівояжера, що відрізнялись би від оптимального щонайбільше на коефіцієнт .[джерело?]
Однак, існують алгоритми пошуку наближених розв'язків для метричної задачі за поліноміальний час, і знайдений маршрут щонайбільше вдвічі (наприклад, 1.5 для алгоритму Христофіда, нім.Christofides) довший за оптимальний. Досі не відомий жоден алгоритм з поліноміальним часом, який би гарантував точність кращу за 1.5 від оптимального. За припущенням , існує (невідома) константа , така, що жоден алгоритм з поліноміальним часом не може гарантувати точність . Як було показано Арора, для евклідової задачі комівояжера існує схема пошуку приблизних розв'язків задачі (PTAS).
Методи розв'язання
Відомі методи розв'язання поділяють на дві групи, що можна комбінувати. Точні методи знаходять, маючи достатньо часу, гарантовано оптимальний шлях. Евристичні методи знаходять, часто за коротший час, гарні розв'язки, що, в загальному випадку, можуть бути гіршими за оптимальні. Для метричної задачі існують евристики, що знаходять за поліноміальний час розв'язки гірші за оптимальні у 1.5—2 рази.[джерело?]
Можна знайти точний розв'язок задачі комівояжера, тобто, обчислити довжини всіх можливих маршрутів та обрати маршрут з найменшою довжиною. Однак, навіть для невеликої кількості міст в такий спосіб задача практично нерозв'язна. Для простого варіанта, симетричної задачі з містами, існує можливих маршрутів, тобто, для 15 міст існує 43 мільярдів маршрутів та для 18 міст вже 177 більйонів. Те, як стрімко зростає тривалість обчислень можна показати в наступному прикладі. Якщо існував би пристрій, що знаходив би розв'язок для 30 міст за годину, то для двох додаткових міст в тисячу раз більше часу; тобто, більш ніж 40 діб.
Методи дискретної оптимізації, зокрема гілок і меж дозволяють знаходити оптимальні або приблизні розв'язки для достатньо великих задач.
В геометричній інтерпретації, ці методи розглядають задачу як опуклийполітоп, тобто, багатовимірний багатокутник в -вимірному одиничному кубі , де дорівнює кількості ребер в графі. Кожне ребро цього одиничного куба відповідає маршруту, тобто, вектору з елементами 0/1, що задовольняє описаним вище лінійним нерівностям. Гіперплощини, що описуються цими нерівностями відсікають такі ребра одиничного куба, що не відповідають жодному маршруту.
На малюнку поруч показано застосування методу для задачі з трьома вузлами. У відповідність трьом можливим ребрам між вершинами зіставляються бінарні змінні та . В цьому випадку існує лише один можливий маршрут, а саме той, що проходить через три вершини. Цей маршрут задовольняє нерівності , що стверджує, що маршрут повинен проходити через щонайменше дві вершини. Окрім цього маршруту, що відповідає вектору (1,1,1), задовольняють нерівності також всі точки у відміченому червоним регіоні цієї нерівності. Площини, що проходять через червоні лінії відсікають всі кути, що відповідають неіснуючим маршрутам із щонайбільше одним ребром, а саме, нуль-вектор (0, 0, 0), одиничні вектори (1, 0, 0), (0, 1, 0) та (0, 0, 1). Сильніша нерівність відсіче від одиничного куба все, окрім єдиної припустимої точки (1, 1, 1). В цьому окремому випадку можна досягти трьома нерівностями типу (1).
Для визначення припустимого ребра з найменшою вартістю слід розв'язати набори задач лінійної оптимізації, що відсікають січними площинами непотрібні частини одиничного куба (наприклад, типу (2), або нерівностями доміно-парності[3]) та спробувати поділити одиничний куб на менші політопи методом гілок і меж. Повніше описання цих методів можна знайти в статті про дискретну оптимізацію.
Застосування лише цього методу для швидкого пошуку маршрутів зазвичай недостатнє. Основна перевага точних методів полягає в тому, що маючи достатньо часу вони обчислюють найкоротший маршрут.
Маючи нижню границю для оптимальних розв'язків можна оцінити те, наскільки відрізняється знайдений маршрут від оптимального. Наприклад, маючи нижню границю на рівні 100, та після знаходження маршруту вартістю 102, оптимальний маршрут може знаходитись в межах від 100 до 102. Так званий інтервал оптимальності, або максимальна відносна відстань між вартістю оптимального маршруту та найдешевшим відомим маршрутом становитиме (102—100)/100 = 2 %, тобто вартість знайденого маршруту 102 щонайбільше на 2 % відрізняється від оптимальної. Коли вартість обчисленого маршруту дорівнює вартості попереднього, вважається, що знайдений розв'язок є оптимальним. Для пошуку маршрутів прийнятної довжини точні методи можуть комбінуватись з евристичними, деякі з них описано нижче.
Евристичні методи
Для пришвидшення пошуку прийнятних маршрутів можна використовувати евристики, що, в загальному випадку, не гарантують точності знайдених розв'язків. В залежності від того, чи обчислює евристика новий маршрут, чи намагається покращити вже існуючий, евристики поділяють на конструктивні та ітеративні евристики. Крім того, відрізняють дуальні евристики, та метаевристики.
Конструктивні евристики
Ітеративні евристики
Ітеративні евристики (також після оптимізаційні евристики) намагаються шляхом деяких змін скоротити вже обчислений маршрут. Прикладом такої евристики є k-opt-евристики, що систематично видаляють з маршруту групи з ребер і замінюють їх іншими ребрами отримуючи новий маршрут. Оскільки повний перебір можливих варіантів дорівнює кількості можливих маршрутів, на практиці обмежують щонайбільше до 5. При цьому, випробовуються всі варіанти заміни двох та трьох ребер, уникаючи перебору з більшою кількістю ребер через значні витрати часу.
На практиці, ефективність k-opt-евристики сильно залежить від вибору ребер для заміни та параметру , для вибору яких існують різні евристичні критерії. Однією з відомих, основаних на принципах k-opt, евристик є розроблена в 1973 році Брайаном Керніганом та С. Ліном евристика Ліна-Кернігана. Реалізація Кельда Гельсгауна[4] серед іншого була використана для пошуку оптимального розв'язку задачі комівояжера з 24 978 містами Швеції в 2004 році. Ця евристика полягає в тому, щоб перебрати можливі заміни з двома ребрами, потім з трьома, і так далі, поки не буде виконано один із багатьох критеріїв зупинки.
Метаевристичні методи
Метаевристичні методи комбінують методи пошуку локальних та глобальних розв'язків у абстрактні стратегії евристичної оптимізації задач. Багато методів цього типу базуються на методах пошуку локальних розв'язків, тобто, вони обчислюють деякий початковий розв'язок (наприклад, застосовуючи метод найближчого сусіда) та покращують його іншими методами, наприклад, методом k-opt-евристики, доти, поки неможливо буде знайти кращий маршрут. Використовуючи різні стратегії, такі, як, наприклад, табуйований пошук або симуляції відпалу, можна спробувати уникнути глухих кутів під час пошуку локальних мінімумів. Інші методи, такі як мурашиний алгоритм, генетичні алгоритми або штучні нейронні мережі (перш за все мережа Хопфілда) використовують як шаблон природні процеси. В принципі, цими методами можна знаходити як досить якісні розв'язки так і досить віддалені від оптимального. Якість результатів та тривалість обчислення залежать від визначення та реалізації окремих елементів.
Дуальні евристики
Огляд
Практичні методи обчислення
Варіанти та застосування
Задача комівояжера може застосовуватись для широкого спектра задач, в основі яких лежить проходження певного об'єкту через множину пунктів так, щоб закінчення шляху збігалося з початком.
Прикладами задач в яких доцільне застосування даного методу є:
В ході планування робіт для кур'єра з доставки товарів. Планування маршруту проходження кур'єром пунктів доставки товару.
В ході планування робіт для однієї машини. Планування маршруту від пункту початку(автостоянки) до пункту з запасами(складом) та подальше проходження всіх пунктів з потребами, з поверненням машини в кінці зміни на місце початку робіт.
Прикладом застосування розв'язку задачі комівояжера для 100 міст є синтез петльових та непетльових антенних вібраторів формату 10x10 за допомогою мурашиного алгоритму оптимізації.[5][6]
Декілька комівояжерів
Кластери міст
Варіанти критеріїв оптимальності
Додаткові умови
На практиці часто зустрічаються додаткові умови, що називаються часові обмеження і накладаються на час, коли має бути відвідано кожне місто. Наприклад, інженер служби підтримки домовляється з клієнтами про час візиту для ремонту побутової техніки. Ці часові рамки повинні братись до уваги в службі підтримки під час планування маршруту інженера.
Відповідно до он-лайн задачі, всі міста не відомі наперед, натомість, кожне наступне місто стає відомим тоді, коли комівояжер вже в дорозі. Комівояжер повинен на основі отриманих даних обчислювати свій маршрут, так, аби нові міста «якнайкраще» вписувались у вже запланований маршрут. Такий варіант може зустрічатись, наприклад, в службі планування ADAC (технічної допомоги автомобілістам), коли інформація про поламані авто стає відомою поступово, і центр керування повинен нові виклики якнайкраще розподіляти між ремонтними автомобілями. Оскільки на дорозі знаходиться декілька ремонтних автомобілів та центр керування має повідомити про приблизний час прибуття ремонтників, то така задача є он-лайн задачею декількох комівояжерів з часовими обмеженнями.
↑ абAlexander Schrijver. On the history of combinatorial optimization (till 1960). In: Handbook of Discrete Optimization (K. Aardal, G.L. Nemhauser, R. Weismantel, eds.), Elsevier, Amsterdam, 2005, pp. 1–68