Некоторые применения вычислительной геометрии к задачам линейного программирования

Вестник Сыктывкарского университета. Сер Л. Вып. 10. 2009

УДК 514+519.67

НЕКОТОРЫЕ ПРИМЕНЕНИЯ ВЫЧИСЛИТЕЛЬНОЙ ГЕОМЕТРИИ К ЗАДАЧАМ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ

А.А. Васильев, А.Н. Королёва

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

Вычислительная геометрия явилась синтезом различных областей математического знания. Систематическое изучение геометрических алгоритмов началось менее 40 лет назад. Термин «вычислительная геометрия» впервые появляется в статье М. Шеймоса 1975 г. Предметом исследования вычислительной геометрии является сложность решения геометрических задач в области теории анализа алгоритмов. В рамках данной дисциплины изучаются выпуклые оболочки, комбинаторная оптимизация, решаются задачи нахождения ближайших точек, задачи нахождения пересечения геометрических фигур, рассматриваются методы геометрического поиска. Алгоритмы, построенные с помощью методов вычислительной геометрии, позволяют уменьшить временную сложность решения задач.

Данная область остается постоянным источником научных и прикладных задач. Каждый день появляются новые геометрические задачи, для которых необходимо создавать эффективные алгоритмы. К числу таковых относятся и задачи линейного программирования, рассматриваемые в данной статье. Такого рода задачи могут быть реализованы с помощью методов вычислительной геометрии.

Васильев А.А., Королёва А.Н., 2009.

Рассмотрим следующую задачу:

{/(я, у) = ах + Ъу —>> тт,

< 0, (1) г = 1,2,.., п.

Допустимой областью задачи линейного программирования является множество точек (х, у), удовлетворяющих ограничениям (1), которые определяют множество на плоскости, являющееся пересечением п полуплоскостей. Целевая функция задачи /(х,у) определяет семейство параллельных прямых ах + Ъу + Л, Л Е М. Те прямые этого семейства, которые являются опорными для допустимой области, проходят через ее вершины, в которых достигаются минимальные и максимальные значения целевой функции.

Данный подход можно использовать к несколько отличающейся ситуации, а именно к вычислению наименьшей окружности, охватывающей множество 5 = Р1,Р2тчРт СОСТОЯЩее ИЗ ТОЧеК ^ = (Хг,2/г),& = 1,2,..,п. В исследовании операций задача об охватывающей окружности известна под названием « минимаксная задача о размещении центра обслуживания». В этой задаче требуется найти точку (центр окружности) , для которой наибольшее из расстояний до точек заданного множества минимально. Наименьшая охватывающая окружность единственна, и, кроме того, она либо является описанной окружностью для некоторой тройки точек заданного множества, либо некоторая пара точек заданного множества служит диаметром этой окружности. Из определения наименьшей охватывающей окружности легко заметить, что необходимо вычислить:

Заметим, что значение г в точке минимакса равно квадрату радиуса этой окружности. Задача (3) не является задачей линейного программирования, поскольку ее ограничения являются квадратичными.

шт тах(х^ — х)2 + (г/{ — у)2

X, у 1 = 1..71

Сведём эту задачу к задаче линейного программирования.

г 111111.

(ж* - х)2 + (Уг -у)2 < г, г = 1, 2,п

Перепишем исходное ограничение в виде:

2 > ~2ХгХ ~ 2угу + С* +

Положив = х2 + у2, легко заметить, что правая часть

7.

Рис. 2. Сечения поверхностей z = /

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

существенное различие с задачей линейного программирования с двумя переменными заключается в том, что вершина ъо , доставляющая минимальное значение г , может не совпадать с точкой искомого минимума (хотя в случае линейного программирования эти минимумы всегда совпадают). Поэтому поиск завершается проверкой тех «ребер», которые инцидентны вершине т , и, если это необходимо, локализацией минимума на одном из этих ребер.

Кратко сформулируем алгоритм решения задачи (3):

1. Формируем систему ограничений (3), которая определяет многогранник в М3 (в общем случае в Мп).

2. Находим вершину, которая доставляет минимальное значение целевой функции.

3. Выполняем построение наименьшей охватывающей окружности по найденному радиусу.

Двумерная иллюстрация решения задачи (5) о наименьшей охватывающей окружности изображена на рис.З:

Ах2 + 5 + х — у ^ тт, б х — у < 11,

Их + 2у < О,

—х < 4,

Рис. 3. Геометрическая интерпретация задачи

Литература

1. Ф. Препарата, М. Шеймос Вычислительная геометрия: Введение. М.: Мир, 1989. 478 с.

2. Jianer Chen Computational Geometry: Methods and Applications. Texas A&M University, 1996. 228 c.

Summary

Vasilyev A.A., Koroleva A.N. Some applications of computational geometry to linear programming problems

The work considers one of the approaches to the solution of linear-programming problem with two variables: the one of computational geometry and its generalization on the problem of the least covering circle. Numerical approbation of the given method is carried out, the algorithm of the decision is constructed.

Сыктывкарский университет

Поступила 02.04-09