Теорема двойственности линейного программирования: суть и применение

Любую задачу линейного программирования можно записать в двух взаимосвязанных формах: прямой и двойственной. Теорема двойственности линейного программирования утверждает, что эти две задачи неразрывно связаны - их оптимальные значения совпадают, а решение одной несёт полную информацию о решении другой. Это не формальный трюк, а мощный инструмент: двойственная задача даёт оценку качества решения, объясняет экономический смысл ограничений (теневые цены) и нередко решается проще исходной. Разберём, как строится двойственная задача, что именно гарантируют слабая и сильная теоремы двойственности и как применять условия дополняющей нежёсткости на практике.
Прямая и двойственная задачи: как они связаны
Возьмём прямую задачу линейного программирования в стандартной форме на максимум:
Здесь - вектор переменных, - матрица ограничений размера , - вектор правых частей, - вектор коэффициентов цели. Каждому ограничению прямой задачи ставится в соответствие двойственная переменная , и двойственная задача формулируется так:
Получается красивая симметрия: число переменных двойственной задачи равно числу ограничений прямой, и наоборот. Прямая максимизирует - двойственная минимизирует; матрица ограничений транспонируется; векторы и меняются ролями. Прежде чем строить двойственную задачу вручную, удобно проверить себя через инструмент ниже - он соберёт корректную постановку по вашим данным.
Правила построения двойственной задачи
Чтобы быстро и без ошибок переходить к двойственной задаче, удобно держать в голове таблицу соответствий. Для прямой задачи на максимум (с ограничениями-неравенствами) правила такие:
- ограничению-неравенству в прямой задаче соответствует переменная в двойственной;
- ограничению соответствует ;
- ограничению-равенству соответствует свободная переменная (любого знака);
- неотрицательной переменной соответствует двойственное ограничение ;
- свободной переменной соответствует двойственное ограничение-равенство .
Для прямой задачи на минимум знаки симметрично меняются. Эти правила удобно запоминать через мнемонику: «знаковое» ограничение порождает знаковую переменную, а равенство - свободную. Если запутались, всегда можно привести задачу к канонической форме (все ограничения одного типа) и применить базовое правило, а затем учесть, что двойная двойственность возвращает исходную задачу: двойственная к двойственной - это прямая.
Слабая теорема двойственности
Слабая теорема двойственности - фундамент всей теории. Она утверждает: для любого допустимого решения прямой задачи (на максимум) и любого допустимого решения двойственной задачи (на минимум) выполняется неравенство
Иными словами, значение целевой функции прямой задачи никогда не превышает значения двойственной. Доказательство одностраничное: из , следует , а из , следует . Объединяя цепочку, получаем .
Практические следствия слабой теоремы:
- любое допустимое даёт верхнюю оценку оптимума прямой задачи, а любое допустимое - нижнюю;
- если для некоторых и оказалось , то оба они оптимальны (зазора больше быть не может);
- если прямая задача не ограничена сверху (), то двойственная не имеет допустимых решений.
Сильная теорема двойственности
Слабая теорема гарантирует лишь неравенство; сильная теорема двойственности замыкает разрыв. Её формулировка: если прямая задача имеет конечное оптимальное решение , то и двойственная имеет конечное оптимальное решение , причём их оптимальные значения точно совпадают:
Разность называют зазором двойственности (duality gap), и для линейного программирования в оптимуме он строго равен нулю. Это ключевое отличие от выпуклого нелинейного программирования, где зазор может быть положительным. Сильная теорема означает, что задачу можно решать с любой из двух сторон - результат идентичен. Симплекс-метод фактически решает обе задачи одновременно: финальная симплекс-таблица содержит оптимальное в столбце решения и оптимальное в строке оценок (коэффициентах при базисных переменных). Связь с условной оптимизацией глубже, чем кажется: тот же аппарат двойственных оценок возникает и в методе штрафных функций, где множители Лагранжа восстанавливаются предельным переходом.
Теорема о дополняющей нежёсткости
Третий столп теории - теорема о дополняющей нежёсткости (complementary slackness). Она даёт точную алгебраическую связь между оптимальными решениями прямой и двойственной задач. Пусть и - оптимальные решения. Тогда для каждой пары «ограничение - переменная» выполнено:
Смысл такой: если двойственная переменная (ресурс «ценен»), то соответствующее ограничение прямой задачи выполнено как равенство - ресурс исчерпан до конца. И наоборот: если ограничение выполнено строго (, ресурс в избытке), то его двойственная цена . Аналогично для переменных: если (продукт производится), то соответствующее двойственное ограничение активно. Эти условия позволяют по решению одной задачи восстановить решение другой без полного перерешивания: достаточно записать, какие ограничения активны, и решить получившуюся систему линейных уравнений.
Экономический смысл: теневые цены
Двойственные переменные имеют прозрачную экономическую интерпретацию - это теневые цены (shadow prices), или предельная ценность ресурсов. Величина показывает, на сколько вырастет оптимум прямой задачи при увеличении -го ресурса на единицу (в пределах, пока структура решения не меняется):
Если завод максимизирует прибыль при ограничениях на сырьё, рабочее время и оборудование, то двойственные оценки скажут, какой именно ресурс «узкое место»: у дефицитного ресурса теневая цена положительна, у избыточного - равна нулю (что прямо следует из дополняющей нежёсткости). Это превращает теорему двойственности из абстрактной математики в инструмент принятия решений: куда вкладывать средства, какой ресурс докупать, сколько максимум стоит дополнительная единица сырья. Именно поэтому двойственные оценки активно используют в экономическом анализе, логистике и планировании производства.
Когда двойственность нарушается
Сильная теорема предполагает, что прямая задача имеет конечный оптимум. Возможны и вырожденные случаи, описываемые так:
- прямая задача не ограничена () двойственная несовместна (нет допустимых );
- прямая задача несовместна (нет допустимых ) двойственная либо несовместна, либо не ограничена;
- обе задачи могут оказаться несовместными одновременно - редкий, но возможный случай.
Эти соотношения тоже следствие слабой теоремы и удобны для диагностики: если при решении симплекс-методом обнаружилась неограниченность, можно сразу заключить, что двойственная задача не имеет допустимых точек, и наоборот.
Частые ошибки
- Путают направление оптимизации. Двойственная к задаче на максимум - это задача на минимум, и наоборот. Если оставить тот же тип цели, все знаки и оценки получатся бессмысленными.
- Неверно сопоставляют знаки переменных и ограничений. Ограничению в задаче на максимум соответствует , а не . Лучше один раз привести к канонической форме, чем угадывать.
- Забывают про дополняющую нежёсткость при восстановлении решения. Нельзя просто приравнять все ограничения к равенствам - активны лишь те, у которых двойственная цена положительна.
- Считают зазор двойственности ненулевым. Для линейного программирования в оптимуме всегда. Положительный зазор - признак ошибки в расчётах.
- Трактуют теневую цену глобально. Оценка показывает прирост оптимума лишь локально - пока изменение не меняет набор активных ограничений (базис).
FAQ
Зачем вообще нужна двойственная задача, если есть прямая? По трём причинам: она даёт оценку оптимума (верхнюю или нижнюю границу) ещё до завершения расчётов, нередко решается проще исходной (например, если ограничений меньше, чем переменных), и придаёт переменным экономический смысл теневых цен. В теории это ещё и основа доказательств сходимости методов.
В чём разница между слабой и сильной теоремами двойственности? Слабая теорема утверждает неравенство для любых допустимых решений и работает всегда. Сильная теорема утверждает точное равенство в оптимуме, но требует, чтобы прямая задача имела конечное решение. Слабая ограничивает, сильная - гарантирует совпадение.
Как по решению прямой задачи найти решение двойственной? Используя условия дополняющей нежёсткости. По оптимальному определяют, какие ограничения прямой задачи активны и какие переменные положительны, выписывают соответствующие равенства для и решают полученную систему. Альтернатива - взять двойственные оценки прямо из финальной симплекс-таблицы.
Коротко
Теорема двойственности линейного программирования связывает прямую задачу с двойственной, где переменные и ограничения меняются ролями, а матрица транспонируется. Слабая теорема даёт оценку для любых допустимых решений; сильная теорема гарантирует точное равенство оптимумов при конечном решении. Теорема о дополняющей нежёсткости связывает активность ограничений с положительностью двойственных переменных, а сами эти переменные имеют смысл теневых цен - предельной ценности ресурсов. Вместе эти результаты делают двойственность не формальным приёмом, а рабочим инструментом оценки решений и экономического анализа.
Читайте также

Алгоритм Рабина-Карпа: поиск подстроки за O(n+m)
Разбираем алгоритм Рабина-Карпа: как полиномиальный хеш и скользящее окно ускоряют поиск подстроки до O(n+m) в среднем, почему бывают ложные совпадения и при чём тут плагиат.

Распределение Фишера критические значения: как искать F-квантили
Распределение Фишера и его критические значения: что такое F-распределение, как читать таблицу критических значений по двум степеням свободы, как применять F-квантили в F-тесте на равенство дисперсий и в дисперсионном анализе.

Модель Гордона: рост дивидендов и цена акции
Модель Гордона (Gordon Growth Model) оценивает справедливую стоимость акции через дивиденды с постоянным темпом роста. Формула, вывод, расчёт, ставка дисконтирования и ошибки.