Комбинаторная оптимизация
Материал из MachineLearning.
| | Статья подготовлена с использованием модели OpenAI GPT‑5.6 Sol с уровнем рассуждений High и проверена участником Д.О. Кистанов 22:20, 18 июля 2026 (MSK)
Промпт приводится полностью в Обсуждение:Комбинаторная оптимизация |
|
Комбинаторная оптимизация (англ. combinatorial optimization; также дискретная оптимизация) — раздел математической оптимизации, изучающий поиск наилучшего элемента в конечном или счётном дискретном множестве допустимых решений. Решение обычно представляет собой подмножество, перестановку, разбиение, маршрут, расписание, паросочетание или целочисленный вектор, а качество решения задаётся целевой функцией. К классическим задачам относятся задача коммивояжёра, задача о рюкзаке, поиск кратчайшего пути, максимального потока, минимального остовного дерева, паросочетания и разреза графа.[1]
Главная трудность состоит не в конечности пространства поиска, а в его быстром росте: число подмножеств множества из элементов равно
, а число перестановок —
. Поэтому полный перебор быстро становится непрактичным. Вместе с тем дискретность сама по себе не означает вычислительной неразрешимости: многие сетевые задачи решаются за полиномиальное время, тогда как для большинства общих постановок приходится сочетать точные экспоненциальные алгоритмы, аппроксимационные алгоритмы, параметризованные методы и эвристики.
История
Современная комбинаторная оптимизация сложилась на пересечении дискретной математики, исследования операций, теории графов и математического программирования. В 1930—1940-х годах задачи планирования производства, транспорта и распределения ресурсов стимулировали развитие линейного программирования. В 1947 году Джордж Данциг разработал симплекс-метод, после чего линейные модели стали универсальным языком для непрерывных и целочисленных задач.[1]
В 1950-х годах возникли специальные алгоритмы, использующие структуру конкретных задач. Гарольд Кун опубликовал венгерский метод для задачи о назначениях в 1955 году,[1] а Лестер Форд и Делберт Фалкерсон в 1956 году сформулировали алгоритмический подход к максимальному потоку и связь максимального потока с минимальным разрезом.[1] Работа Джека Эдмондса 1965 года о путях, деревьях и «цветках» дала полиномиальный алгоритм поиска максимального паросочетания в произвольном графе и сделала требование полиномиального времени центральным критерием эффективности комбинаторного алгоритма.[1]
Формирование теории вычислительной сложности в начале 1970-х годов изменило постановку вопроса: вместо поиска одного универсального быстрого метода стали различать классы задач по сложности. Теорема Кука 1971 года заложила основу теории NP-полноты,[1] а Ричард Карп в 1972 году показал NP-полноту 21 классической комбинаторной задачи посредством полиномиальных сведений.[1]
Параллельно развивалась полиэдральная комбинаторика. В 1979 году Леонид Хачиян доказал полиномиальную разрешимость линейного программирования методом эллипсоидов.[1] Мартин Грётшель, Ласло Ловас и Александр Шрайвер перенесли этот результат на задачи с неявно заданными многогранниками и установили фундаментальную связь между задачами оптимизации и отделения.[1] С 1980-х годов методы ветвей и границ, секущих плоскостей и их объединение в метод ветвей и отсечений стали основой точного решения больших целочисленных моделей.[1]
В 1990-х годах оформилась современная теория аппроксимации. В частности, алгоритм Гёманса — Уильямсона для максимального разреза использовал полуопределённую релаксацию и случайное округление, обеспечив коэффициент не менее по математическому ожиданию.[1] В XXI веке развитие универсальных решателей, параметризованной сложности, параллельных вычислений и машинного обучения усилило практическую сторону области, не устранив различия между доказуемой сложностью в худшем случае и поведением на прикладных распределениях задач.
Основная идея
Задача комбинаторной оптимизации задаётся множеством допустимых решений и целевой функцией
. Для задачи минимизации требуется найти
Интуитивно алгоритм должен исследовать лишь малую часть огромного пространства , используя структуру задачи. Такой структурой могут быть:
- локальность ограничений в графе;
- оптимальная подструктура и перекрывающиеся подзадачи;
- обменное свойство допустимых множеств;
- выпуклая оболочка целочисленных решений и сильные линейные неравенства;
- малая ширина графа, малое число целочисленных переменных или иной параметр;
- возможность получить нижнюю и верхнюю оценки оптимума без полного перебора.
Одна и та же прикладная задача часто допускает несколько представлений. Например, расписание можно описать как перестановку работ, как раскраску конфликтного графа, как задачу удовлетворения ограничений или как смешанную целочисленную линейную программу. Выбор представления определяет доступные алгоритмы и нередко важнее выбора конкретной реализации метода.
Математические основы
Представления допустимых решений
Если решение является подмножеством конечного базового множества , ему сопоставляют вектор инцидентности
, где
означает выбор элемента
. При линейной целевой функции и линейных ограничениях возникает задача целочисленного линейного программирования:
Если часть переменных непрерывна, говорят о смешанном целочисленном программировании (англ. mixed-integer programming, MIP). Логические условия, взаимоисключение, фиксированные затраты и выбор объектов обычно кодируются бинарными переменными. Качество модели зависит не только от числа переменных и ограничений, но и от силы её непрерывной релаксации.
Для графовых задач допустимые решения могут быть путями, деревьями, потоками, разрезами или паросочетаниями. Для задач упорядочения естественны перестановки, а для разбиения — семейства непересекающихся подмножеств. Иногда множество решений задаётся не явным списком, а оракулом, который проверяет допустимость или решает вспомогательную задачу отделения.
Оптимизационная и распознающая постановки
Задаче минимизации соответствует распознающая версия: по порогу определить, существует ли
такое, что
. Для рациональных входных данных размер экземпляра измеряют длиной его двоичной записи, а не только числом объектов. Это различие существенно: алгоритм, полиномиальный по числовому значению ёмкости рюкзака, может быть экспоненциальным по числу битов, нужных для её записи.
Класс P содержит задачи распознавания, решаемые детерминированно за полиномиальное время; класс NP — задачи, для положительного ответа которых существует полиномиально проверяемый сертификат. Если распознающая версия задачи NP-полна, то её точная оптимизационная версия NP-трудна. Это утверждение описывает худший случай и не означает, что каждый практический экземпляр труден или что для него нельзя доказать оптимальность.
Различают слабую и сильную NP-трудность. Для слабо NP-трудных задач возможны псевдополиномиальные алгоритмы; классический пример — динамическое программирование для рюкзака. Сильная NP-трудность сохраняется и при полиномиально ограниченных числовых данных и обычно исключает полностью полиномиальную схему аппроксимации при стандартном предположении .
Многогранники и релаксации
Для введём комбинаторный многогранник — выпуклую оболочку векторов решений:
Для линейной цели оптимизация по дискретному множеству и по его выпуклой оболочке эквивалентна:
Однако полное описание линейными неравенствами может иметь экспоненциальный размер. Поэтому используют релаксацию
, которую легче оптимизировать. В задаче минимизации значение линейной релаксации даёт нижнюю оценку, а любое допустимое дискретное решение — верхнюю. Чем ближе
к
, тем обычно эффективнее точный поиск, но тем дороже построение и решение релаксации.[1]
Интегральный разрыв (англ. integrality gap) измеряет в худшем случае отношение целочисленного оптимума к значению релаксации для семейства задач минимизации с неотрицательными значениями:
Он одновременно характеризует силу формулировки и предел некоторых схем округления. Двойственность линейного программирования позволяет строить проверяемые оценки: допустимое двойственное решение служит сертификатом границы для прямой задачи.
Теорема об эквивалентности отделения и оптимизации утверждает, что при подходящих рациональности и ограниченности полиномиальный оракул отделения для выпуклого множества позволяет полиномиально оптимизировать над ним методом эллипсоидов, и наоборот.[1] Практически метод эллипсоидов редко конкурирует с симплекс-методом или методами внутренней точки, но эта теорема является одним из основных теоретических инструментов полиэдральной комбинаторики.
Структуры, обеспечивающие разрешимость
Некоторые дискретные ограничения приводят к целочисленным вершинам линейной релаксации. Если матрица ограничений вполне унимодулярна, а правая часть целочисленна, соответствующий многогранник при стандартных условиях интегрален; отсюда следуют линейно-программные решения ряда задач о потоках и двудольных паросочетаниях.[1]
Матроид абстрагирует наследственность и обменное свойство линейной независимости. Для любой системы независимости жадный алгоритм не обязан быть точным, но для матроида последовательный выбор допустимого элемента наибольшего веса строит базу максимального веса. Эдмондс показал, что это свойство фактически характеризует матроиды среди наследственных систем.[1]
Множественная функция называется субмодулярной, если
для любых . Это условие выражает убывающую предельную полезность. Субмодулярная минимизация разрешима за полиномиальное время, тогда как максимизация обычно NP-трудна. Для неотрицательной монотонной субмодулярной функции при ограничении
простой жадный алгоритм гарантирует долю не менее
от оптимума.[1]
Трудность может быть локализована параметром. Целочисленное линейное программирование при фиксированном числе переменных разрешимо за время, полиномиальное по длине входа, хотя степень и константы зависят от размерности.[1] Многие графовые задачи допускают динамическое программирование по древесной декомпозиции и становятся эффективно разрешимыми при малой древесной ширине; для каждого фиксированного древесную декомпозицию ширины не более
можно найти за линейное время.[1]
Классические задачи
| Задача | Объект решения | Типичный статус | Основные методы |
|---|---|---|---|
| Кратчайший путь | Путь минимального веса в графе | Полиномиальная при стандартных условиях | Алгоритмы Дейкстры, Беллмана — Форда; линейное программирование потоков |
| Минимальное остовное дерево | Дерево, соединяющее все вершины | Полиномиальная | Алгоритмы Краскала и Прима; жадный алгоритм на графическом матроиде |
| Задача о назначениях | Совершенное паросочетание минимального веса в двудольном графе | Полиномиальная | Венгерский и прямодвойственные алгоритмы |
| Максимальный поток | Поток между истоком и стоком | Полиномиальная | Увеличивающие пути, масштабирование, проталкивание предпотока |
| Максимальное паросочетание | Набор попарно несмежных рёбер | Полиномиальная | Алгоритм цветков Эдмондса и его улучшения |
| Рюкзак | Подмножество предметов при ограничении ёмкости | Слабо NP-трудная | Динамическое программирование, ветви и границы, полностью полиномиальная схема аппроксимации |
| Коммивояжёр | Гамильтонов цикл минимального веса | NP-трудная; свойства аппроксимации зависят от метрики | Динамическое программирование, ветви и отсечения, алгоритм Кристофидеса, локальный поиск |
| Максимальный разрез | Разбиение вершин на две части | NP-трудная | Полуопределённая релаксация, случайное округление, локальный поиск |
Соседство названий в таблице не означает одинаковой сложности. Например, минимальный разрез и максимальный поток имеют точные полиномиальные алгоритмы, а максимальный разрез NP-труден. Аналогично, двудольное и произвольное паросочетания полиномиальны, но добавление некоторых боковых ограничений способно сделать задачу NP-трудной.[1]
Методы решения
Специализированные точные алгоритмы
Жадный алгоритм на каждом шаге делает локально лучший допустимый выбор. Его корректность требует доказательства обменного свойства, свойства разреза или иной структуры; без такого доказательства жадная процедура является лишь эвристикой. Точными примерами служат алгоритмы минимального остовного дерева и оптимизация линейного веса на матроиде.
Динамическое программирование разбивает задачу на состояния с общей оптимальной подструктурой. Оно даёт точные алгоритмы для кратчайших путей, рюкзака, задач на последовательностях и графах ограниченной ширины. Цена метода — число состояний: оно может быть псевдополиномиальным или экспоненциальным. Для задачи коммивояжёра алгоритм Беллмана — Хелда — Карпа использует состояния «подмножество посещённых вершин и последняя вершина» и работает за время порядка , что существенно лучше полного перебора, но всё ещё экспоненциально.
Сетевые и графовые алгоритмы используют пути, разрезы, потоки, потенциалы и чередующиеся цепи. Их преимущество — сильные структурные теоремы и специализированные структуры данных. Формулировка в виде общей MIP-модели может быть удобнее для расширений, но часто уступает специализированному алгоритму на базовой задаче.
Ветви, границы и отсечения
Метод ветвей и границ поддерживает дерево подзадач. В каждом узле вычисляется релаксационная граница; если она не лучше уже найденного допустимого решения, ветвь отсекается. В противном случае выбирается дискретное решение о ветвлении, например фиксируется значение бинарной переменной. Метод точен при полном исчерпании дерева, но в худшем случае дерево имеет экспоненциальный размер.
Метод секущих плоскостей добавляет допустимые неравенства, нарушенные текущим дробным решением релаксации. На практике ищут разрезы известных семейств или решают задачу отделения приближённо. Объединение ветвления и динамического добавления разрезов называется методом ветвей и отсечений (англ. branch-and-cut). Современные MIP-решатели также применяют предварительную обработку, распространение границ, эвристики поиска допустимых решений, повторную оптимизацию и параллельное исследование дерева.
Генерация столбцов применяется, когда переменных потенциально экспоненциально много, но релаксацию можно решать, добавляя переменные с выгодной приведённой стоимостью. В сочетании с ветвлением она образует метод ветвей и цен (англ. branch-and-price). Декомпозиции Данцига — Вулфа и Бендерса отделяют связывающие ограничения от структурированных подзадач.
Удовлетворение ограничений и логические методы
В программировании в ограничениях задача задаётся доменами переменных и глобальными ограничениями. Алгоритм чередует распространение ограничений и поиск с возвратом. Для булевых и псевдобулевых моделей применяются SAT- и MaxSAT-решатели, использующие обучение конфликтным дизъюнктам, возврат не по хронологии и перезапуски. Эти подходы особенно полезны для логически насыщенных задач; MIP чаще удобнее при сильной линейной числовой структуре. Гибридные решатели объединяют оба типа рассуждений.
Аппроксимационные алгоритмы
Аппроксимационный алгоритм работает за полиномиальное время и имеет доказанную границу качества. Для задачи минимизации с неотрицательной целью коэффициент означает
для любого экземпляра . Для максимизации обычно используют
и неравенство
Основные конструкции включают округление линейных и полуопределённых релаксаций, прямодвойственный метод, локальный поиск, случайную выборку и динамическое программирование с округлением данных.[1]
Для метрической задачи коммивояжёра алгоритм Кристофидеса строит маршрут стоимости не более оптимума. Для евклидовой задачи коммивояжёра в фиксированной размерности существует полиномиальная схема аппроксимации: при любом фиксированном
она даёт коэффициент
за полиномиальное по размеру входа время.[1] Зависимость времени от
отличает полиномиальную схему аппроксимации от полностью полиномиальной: в последней время полиномиально и по размеру входа, и по
.
Параметризованные алгоритмы
В параметризованном анализе вместе с размером входа выделяют параметр
. Алгоритм является фиксированно-параметрическим, если его время имеет вид
где произвольная сверхполиномиальная зависимость сосредоточена в . Параметром может быть размер искомого решения, древесная ширина, число нарушений, число машин или число целочисленных переменных. Ядеризация предварительно преобразует экземпляр к эквивалентному экземпляру размера, ограниченного функцией от
. Такой анализ объясняет практическую разрешимость некоторых NP-трудных задач при малом структурном параметре.
Эвристики и метаэвристики
Эвристика быстро строит допустимое решение без универсальной гарантии близости к оптимуму. Локальный поиск переходит между соседними решениями; выбор окрестности определяет компромисс между стоимостью шага и способностью выходить из плохих локальных минимумов. К метаэвристикам относят имитацию отжига, поиск с запретами, генетические алгоритмы, поиск с переменными окрестностями и муравьиные алгоритмы.
Эвристики особенно полезны для получения начальной верхней границы внутри точного решателя или для задач, где строгая гарантия отсутствует. Результат на нескольких наборах данных не заменяет теоретической гарантии: качество зависит от распределения экземпляров, настройки параметров и бюджета вычислений.
Оценка качества решения
Для точного метода важны не только найденное значение, но и доказательство его оптимальности. В задаче минимизации пусть — значение лучшего известного допустимого решения, а
— доказанная нижняя граница. Тогда
, а абсолютный разрыв равен
. Одна из распространённых нормировок относительного разрыва имеет вид
Конкретные решатели используют разные нормировки и допуски, поэтому при сравнении необходимо указывать определение разрыва. Нулевой разрыв при точной арифметике является сертификатом оптимальности; при вычислениях с плавающей точкой дополнительно учитывают допуски допустимости и целочисленности.
Для аппроксимационного алгоритма оценивают доказанный коэффициент в худшем случае и эмпирический разрыв на тестах. Для случайного алгоритма указывают, относится ли гарантия к математическому ожиданию, высокой вероятности или каждой реализации. Для эвристики следует сообщать как минимум:
- значение цели и отклонение от лучшей известной границы;
- долю допустимых решений и величину нарушений, если метод может выдавать недопустимые решения;
- время, память, аппаратную платформу и число потоков;
- число запусков, случайные начальные состояния и распределение результатов;
- правила остановки, настройку гиперпараметров и источник тестовых экземпляров.
Стандартные библиотеки позволяют отделять улучшение алгоритма от удачного выбора примеров. MIPLIB 2017 содержит большую коллекцию смешанных целочисленных моделей и специально отобранный тестовый набор; его состав формировался с учётом разнообразия признаков экземпляров и профилей производительности решателей.[1]
Применения
Комбинаторные модели возникают всякий раз, когда решение включает выбор, назначение, порядок или конфигурацию объектов.
- Транспорт и логистика: маршрутизация транспорта, комплектование заказов, размещение складов, составление расписаний экипажей и загрузка контейнеров.
- Производство и энергетика: календарное планирование, раскрой материалов, конфигурация производственных линий, включение генерирующих мощностей и проектирование сетей.
- Телекоммуникации и вычислительные системы: маршрутизация пакетов, размещение виртуальных машин, распределение частот, планирование заданий, построение отказоустойчивых сетей.
- Проектирование электронных схем: размещение компонентов, трассировка соединений, логический синтез и разбиение схем.
- Биоинформатика и вычислительная химия: выравнивание последовательностей, сборка генома, поиск структур, выбор праймеров и анализ молекулярных сетей.
- Экономика и общественные системы: аукционы, сопоставление участников, распределение ресурсов, формирование избирательных округов и планирование служб.
Машинное обучение
В машинном обучении комбинаторная оптимизация встречается на нескольких уровнях. Выбор признаков, разреженная регрессия с ограничением числа ненулевых коэффициентов, построение деревьев решений и поиск архитектуры модели содержат дискретные переменные. Кластеризация, задача о центрах и выбор репрезентативного подмножества являются задачами разбиения или размещения. В вероятностных графических моделях поиск наиболее вероятной конфигурации дискретных скрытых переменных сводится к MAP-выводу; на деревьях он решается передачей сообщений, а на общих графах часто NP-труден.
В структурированном предсказании оптимизационный алгоритм используется при декодировании и нередко внутри обучения. Задачи ранжирования, сопоставления, построения маршрутов и формирования наборов рекомендаций требуют оптимизировать качество всего структурированного решения, а не отдельных меток. Обратная связь также направлена от машинного обучения к оптимизации: модели учатся выбирать переменную ветвления, разрез, эвристику или порядок обработки подзадач.[1]
Трудности и ограничения
Комбинаторный взрыв. Даже умеренное увеличение размера входа может сделать полный поиск невозможным. Полиномиальная разрешимость релаксации сама по себе не гарантирует быстрого решения целочисленной задачи: слабая релаксация создаёт большое дерево поиска.
Чувствительность к формулировке. Две эквивалентные модели могут различаться на порядки по времени решения. Большие коэффициенты, симметрии, избыточные бинарные переменные и слабые константы в ограничениях типа «большое » ухудшают границы и численную устойчивость.
Разрыв между худшим и типичным случаем. Экспоненциальная нижняя оценка в худшем случае совместима с быстрым решением многих промышленных экземпляров. И наоборот, полиномиальный алгоритм с высокой степенью или большой константой может уступать экспоненциальной эвристике на доступных размерах.
Многокритериальность и неопределённость. В приложениях часто существуют конфликтующие цели, неизвестные будущие данные и мягкие ограничения. Сведение всего к одной взвешенной сумме может скрыть структуру предпочтений. Используют многокритериальную, робастную и стохастическую оптимизацию, но они обычно увеличивают размер и сложность модели.
Отсутствие сертификата у эвристик. Хорошее допустимое решение не показывает, насколько оно далеко от оптимума. Поэтому практические системы по возможности сочетают эвристику с релаксационной границей, двойственным сертификатом или доказанным коэффициентом аппроксимации.
Обобщение обучаемых методов. ML-компонент оптимизатора обучается на распределении экземпляров и может деградировать при изменении масштаба, структуры или коэффициентов. Сравнение требует отделять время обучения от времени решения, исключать утечку между обучающей и тестовой выборками и сохранять корректный резервный алгоритм.
Современные направления исследований
Усиление точных решателей
Исследуются новые семейства допустимых неравенств, быстрые алгоритмы отделения, автоматический выбор декомпозиции, симметрийные сокращения, параллельные деревья поиска и точная рациональная проверка сертификатов. Отдельная задача — предсказать, какие из множества дорогостоящих процедур решателя полезны для данного экземпляра, не нарушая его корректности.
Тонкая и параметризованная сложность
Помимо деления на полиномиальные и NP-трудные задачи изучаются точные показатели экспоненты, условные нижние оценки, ядра и зависимость от структурных параметров. Такой анализ позволяет формулировать гарантии для разреженных графов, малой древесной ширины, ограниченного алфавита или малого числа «трудных» переменных.
Машинное обучение внутри оптимизатора
Обучаемые правила применяют для ветвления, выбора узлов, генерации разрезов, построения начальных решений и конфигурирования портфеля алгоритмов. Графовые нейронные сети естественно представляют MIP как двудольный граф переменных и ограничений. В работе Gasse и соавторов нейронная политика обучалась имитировать сильное ветвление и затем использовалась внутри точного метода ветвей и границ.[1] Здесь слово «точный» относится к внешнему алгоритму, который сохраняет допустимые границы и исчерпывающий поиск; сама обученная политика не является доказательством оптимальности.
Оптимизация, ориентированная на решение
В конвейере «предсказать, затем оптимизировать» параметры задачи сначала оцениваются статистической моделью, а затем подставляются в оптимизатор. Минимальная ошибка прогноза не обязательно даёт лучшее последующее решение. В обучении, ориентированном на решение (англ. decision-focused learning), функцию потерь строят по качеству конечного дискретного решения; для передачи градиента используют непрерывные релаксации, сглаживание или дифференцируемые суррогаты.[1] Основные ограничения этого направления — неединственность оптимума, разрывность отображения параметров в решение, стоимость многократных вызовов оптимизатора и зависимость результата от распределения данных.
Нейронные конструктивные методы
Для маршрутизации, раскроя, размещения и других задач обучают модели, непосредственно строящие решение последовательностью действий; используются обучение с учителем, обучение с подкреплением, графовые сети и механизмы внимания. Такие методы способны быстро выдавать решения на похожих экземплярах после дорогого обучения, но обычно не имеют универсальной гарантии качества и должны сравниваться с сильными специализированными эвристиками при одинаковом вычислительном бюджете.[1]
См. также
- Математическая оптимизация
- Дискретное программирование
- Целочисленное программирование
- Линейное программирование
- Теория графов
- Алгоритм аппроксимации
- NP-полная задача
- Метод ветвей и границ
- Динамическое программирование
- Жадный алгоритм
- Субмодулярная функция
- Задача коммивояжёра
Примечания
Литература
- Korte, B.; Vygen, J. Combinatorial Optimization: Theory and Algorithms. — 6-е изд.. — Berlin; Heidelberg: Springer, 2018. — ISBN 978-3-662-56038-9
- Schrijver, A. Combinatorial Optimization: Polyhedra and Efficiency. — Berlin; Heidelberg: Springer, 2003. — ISBN 978-3-540-44389-6
- Nemhauser, G. L.; Wolsey, L. A. Integer and Combinatorial Optimization. — New York: Wiley, 1988. — ISBN 978-0-471-82819-8
- Williamson, D. P.; Shmoys, D. B. The Design of Approximation Algorithms. — Cambridge: Cambridge University Press, 2011. — ISBN 978-0-521-19527-0
- Papadimitriou, C. H.; Steiglitz, K. Combinatorial Optimization: Algorithms and Complexity. — Mineola: Dover Publications, 1998. — ISBN 978-0-486-40258-1
- Edmonds, J. Paths, Trees, and Flowers // Canadian Journal of Mathematics. — 1965. — Т. 17. — С. 449—467.
- Karp, R. M. Reducibility among Combinatorial Problems // Complexity of Computer Computations. — 1972. — С. 85—103.
- Goemans, M. X.; Williamson, D. P. Improved Approximation Algorithms for Maximum Cut and Satisfiability Problems Using Semidefinite Programming // Journal of the ACM. — 1995. — Т. 42. — № 6. — С. 1115—1145.
- Bengio, Y.; Lodi, A.; Prouvost, A. Machine Learning for Combinatorial Optimization: A Methodological Tour d’Horizon // European Journal of Operational Research. — 2021. — Т. 290. — № 2. — С. 405—421.
Ссылки
- MIPLIB 2017 — библиотека тестовых задач смешанного целочисленного программирования.
- The Traveling Salesman Problem — материалы проекта Concorde и данные по задаче коммивояжёра.
- DIMACS Implementation Challenges — серии воспроизводимых вычислительных соревнований по дискретным алгоритмам.

