Метод эллипсоидов
Метод эллипсоидов — алгоритм нахождения точки, лежащей в пересечении выпуклых множеств.
Описание алгоритма
В начале выбирается большой шар, содержащий пересечение выпуклых множеств. Способ построения этого шара зависит от задачи. Далее на каждом шаге имеется эллипсоид, заданный центром и векторами . Эллипсоиду принадлежат точки для которых . Отметим, что один и тот же эллипсоид можно задать несколькими способами. Если центр этого эллипсоида принадлежит всем выпуклым множествам, то искомая точка найдена. Иначе существует гиперплоскость , проходящая через точку , такая, что одно из множеств целиком лежит по одну сторону от неё. Тогда можно перейти от исходного базиса к другому базису такому, что параллельны , а направлен в сторону множества. Положим теперь , , при . Этот новый эллипсоид содержит половину старого и имеет меньший объём. Таким образом, объём эллипсоида уменьшается экспоненциально с ростом числа шагов и искомая точка будет найдена за шагов, где — объем исходного шара, а — объем области пересечения. Общее время работы алгоритма получается равным , где — число множеств, — время проверки принадлежности точки множеству.
Применение к задаче линейного программирования
Если в задаче линейного программирования удалось построить шар, содержащий искомое решение, то она может быть решена методом эллипсоидов. Для этого вначале находим какую-нибудь точку внутри шара, удовлетворяющую ограничениям задачи. Проводим через неё гиперплоскость , где — целевая функция, и находим точку в пересечении исходных и новой гиперплоскостей (начиная с текущего эллипсоида). С новой найденной точкой проделываем то же самое. Процесс сходится к оптимальному решению с экспоненциальной скоростью (поскольку с этой скоростью убывает объём эллипсоида).
Эффективность метода
Казалось бы, радость практиков должна быть беспредельной: полиномиальный алгоритм мог бы стать новым стандартом программирования. Однако алгоритм Хачияна не просто плох, он безнадежен на практике. Существуют задачи размером в 50 переменных, для которых требуются более 24 тысяч (отнюдь не простых) итераций метода Хачияна, количество же (существенно более простых) итераций симплекс-метода в таких случаях исчисляется сотнями, если не десятками [1][2].
Примечания
- ↑ Николенко, 2005.
- ↑ Схрейвер, 1991, с. 264.
Литература
- С.А. Ашманов. Линейное программирование. — М.: Главная редакция физико-математической лиетратуры, 1981. — С. 288-289.
- А. Схрейвер. Теория линейного и целочисленного программирования, т1. — М.: «Мир», 1991. — ISBN 5-03-002754-8.
- С. Николенко. Теория и практика сложности // Компьютерра. — М.: ООО Журнал «Компьютерра», 2005. — Вып. 31.
В статье не хватает ссылок на источники (см. рекомендации по поиску). |