Комбинаторная оптимизация

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Комбинаторная оптимизация — область теории оптимизации в прикладной математике, связанная с исследованием операций, теорией алгоритмов и теорией вычислительной сложности. Комбинаторная оптимизация заключается в поиске оптимального объекта в конечном множестве объектов[1], чем очень похожа на дискретное программирование. Некоторые источники [2] под дискретным программированием понимают целочисленное программирование, противопоставляя ему комбинаторную оптимизацию, имеющую дело с графами, матроидами и похожими структурами. Однако оба термина очень близко связаны и в литературе часто переплетаются. Комбинаторная оптимизация часто сводится к определению эффективного распределения ресурсов, используемых для поиска оптимального решения.

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

Приложения[править | править код]

Комбинаторная оптимизация используется при:

  • определении оптимальной сети аэрофлота;
  • определении, какая машина из парка такси подберёт пассажиров;
  • определении оптимального пути доставки посылок;
  • определении правильных атрибутов перед тестированием концепций.

Однако этими примерами приложение комбинаторной оптимизации не ограничивается.

Методы[править | править код]

Имеется большое число литературы по полиномиальным по времени алгоритмам, работающим на некоторых классах задач дискретного программирования и существенная часть этих алгоритмов принадлежит теории линейного программирования. Некоторые примеры комбинаторной оптимизации, попадающие в эту область — это задача поиска кратчайшего пути и дерева кратчайших путей, определение максимального потока, нахождение остовных деревьев, нахождение паросочетаний, задачи с матроидами.

Задачи комбинаторной оптимизации можно рассматривать как поиск лучшего элемента в некотором дискретном множестве, поэтому, в принципе, могут быть использованы любые алгоритмы поиска или метаэвристические алгоритмы. Однако общие алгоритмы поиска не гарантируют ни оптимального решения, ни быстрого решения (за полиномиальное время). Поскольку некоторые задачи дискретной оптимизации NP-полны, как, например, задача о коммивояжёре, это же следует ожидать и для других задач (если не P=NP).

Конкретные проблемы[править | править код]

Оптимальный путь коммивояжёра по 15 крупнейшим городам Германии. Это кратчайший путь из 14!/2 (43 589 145 600) возможных

См. также[править | править код]

Примечания[править | править код]

  1. Alexander Schrijver. Algorithms and Combinatorics // Combinatorial Optimization: Polyhedra and Efficiency. — Springer. — С. 1.
  2. Discrete Optimization. Elsevier. Дата обращения: 8 июня 2009. Архивировано 24 июня 2013 года.

Литература[править | править код]