Оптимизация запросов СУБД
- 1 year ago
- 0
- 0
Комбинаторная оптимизация — область теории оптимизации в прикладной математике , связанная с исследованием операций , теорией алгоритмов и теорией вычислительной сложности . Комбинаторная оптимизация заключается в поиске оптимального объекта в конечном множестве объектов , чем очень похожа на дискретное программирование . Некоторые источники под дискретным программированием понимают целочисленное программирование , противопоставляя ему комбинаторную оптимизацию, имеющую дело с графами , матроидами и похожими структурами. Однако оба термина очень близко связаны и в литературе часто переплетаются. Комбинаторная оптимизация часто сводится к определению эффективного распределения ресурсов, используемых для поиска оптимального решения.
Во многих задачах комбинаторной оптимизации полный перебор нереален. Комбинаторная оптимизация включает в себя задачи оптимизации, в которых множество допустимых решений дискретно или может быть сведено к дискретному множеству.
Комбинаторная оптимизация используется при:
Однако этими примерами приложение комбинаторной оптимизации не ограничивается.
Имеется большое число литературы по полиномиальным по времени алгоритмам, работающим на некоторых классах задач дискретного программирования и существенная часть этих алгоритмов принадлежит теории линейного программирования . Некоторые примеры комбинаторной оптимизации, попадающие в эту область — это задача поиска и , определение максимального потока , нахождение остовных деревьев , нахождение паросочетаний , задачи с матроидами .
Задачи комбинаторной оптимизации можно рассматривать как поиск лучшего элемента в некотором дискретном множестве, поэтому, в принципе, могут быть использованы любые или . Однако общие алгоритмы поиска не гарантируют ни оптимального решения, ни быстрого решения (за полиномиальное время). Поскольку некоторые задачи дискретной оптимизации NP-полны , как, например, задача о коммивояжёре, это же следует ожидать и для других задач (если не P=NP ).