Рассмотрим следующую задачу линейного программирования:
Задача 1.
,
|
(1) |
.
Здесь линейный оператор действует из
в
,
,
. Считаем что
, и ранг матрицы
равен
.▄
Предположим
теперь, что допустимый элемент задачи доставляет ей решение, т.е., для любого
, такого что
,
справедливо:
. Постараемся выяснить, что следует из такого предположения.
Так как
, то некоторые компоненты вектора
нулевые, а некоторые – строго положительны. Пусть
- строго положительные компоненты вектора
. Им соответствуют столбцы
матрицы
, такие что в силу (1),
|
(2) |
Предположим, что эти столбцы линейно зависимы. Тогда один из них, например,
можно выразить через остальные, т.е. найдутся числа
, такие что
. Числа
можно трактовать как компоненты некоторого вектора
, число ненулевых компонент которого на одну, (
), меньше чем число ненулевых компонент вектора
. Про знаки ненулевых компонент вектора
ничего определенного сказать нельзя. Тогда последнее
равенство можно записать как
. Подставим это равенство в (2). Тогда, если обозначить через
вектор, отличающийся от
лишь тем, что
-я его компонента нулевая, получаем:
и
. Положим
, и еще определим
-ю компоненту
как
. Вектор
удовлетворяет уравнению
, про знаки же его компонент нам ничего не известно. Однако,
т.к., номера ненулевых компонент вектора те же что и номера строго
положительных компонент вектора
, можно заключить, что при
достаточно малых
, будет справедливо
|
(3) |
Соотношение
(3) означает, что точка лежит внутри отрезка прямой, концы которого
и
принадлежат области допустимых значений нашей задачи.
Отсюда и из
нашего предположения об оптимальности вектора , следует заключить, что векторы
и
ортогональны, т.к. в противном случае, выполнялось бы либо
, либо
.
Далее, вектор
имеет строго отрицательные компоненты (например,
-ю), компоненты же
вектора
строго положительны, и номера нулевых компонент векторов
и
совпадают. Выберем из отрицательных компонент вектора
ту или те, для которых отношение
минимально. Положим
|
(4) |
Тогда вектор обладает следующими свойствами:
Так как число
ненулевых компонент вектора меньше, чем число ненулевых компонент исходного вектора,
возможно, соответствующие им столбцы матрицы
окажутся линейно независимыми. В противном случае, мы можем
повторить наши рассуждения, взяв в качестве исходной, точку
. Поскольку при каждой итерации число ненулевых компонент
получаемого вектора уменьшается, рано или поздно, мы получим вектор
, доставляющий максимум нашей задаче и такой, что столбцы
матрицы
, соответствующие его ненулевым компонентам, линейно
независимы.
Сформулируем теперь полученные результаты в виде следующих утверждений:
Лемма 1. Если задача 1 имеет решение,
то найдется такое ее решение , что столбцы матрицы
, соответствующие его ненулевым компонентам, будут линейно
независимы. ▄
Лемма 2. Если - допустимый элемент задачи 1, а столбцы матрицы
, соответствующие его ненулевым компонентам, линейно
зависимы, то найдутся такие допустимые элементы задачи 1,
и
,
, что точка
лежит внутри отрезка с концами
и
.▄
Дадим теперь необходимые для дальнейших рассуждений определения.
Определение 1. Точка выпуклого множества
называется простой, если найдутся
,
и
, такие что
.▄
Определение 2. Точки выпуклого множества, не являющиеся простыми, называются вершинами этого выпуклого множества. ▄
Например, все точки треугольника, кроме трех вершин – простые; все точки круга, кроме лежащих на окружности – простые.
Теорема 1. Пусть допустимый элемент задачи 1 таков, что столбцы матрицы
, соответствующие его ненулевым компонентам, линейно
независимы, тогда
- вершина области допустимых значений задачи.
Доказательство.
Предположим противное. Пусть найдутся допустимые векторы и
, такие что
|
(5) |
Из того что (5) выполняется покомпонентно, из и
, заключаем, что у векторов
и
те компоненты, которые нулевые у
,- тоже нулевые. Далее,
,
, откуда
,
причем
, но это означает линейную зависимость столбцов матрицы
, соответствующих ненулевым компонентам вектора
, что противоречит исходным предположениям. Полученное
противоречие и доказывает теорему. ▄
Теорема 2. Пусть задача 1 имеет решение, тогда ее решение достигается также и в одной из вершин области ее допустимых значений.
Доказательство. Утверждение теоремы есть прямое следствие леммы 1 и теоремы 1. ▄
Замечание 1. Если в рассуждении, которое
привело нас к доказательству леммы 1 и леммы 2, считать точку просто допустимой точкой задачи (т.е. не требовать ее
оптимальности), можно заключить во-первых, что если
множество допустимых значений задачи непусто, то и
множество вершин области допустимых значений задачи также непусто.
И, во-вторых, получить конструктивный способ достижения одной из вершин из
любой допустимой точки задачи. ▄
Замечание 2. Отметим, что область
допустимых значений задачи линейного программирования может, вообще говоря,
быть шире множества выпуклых комбинаций ее вершин. Так, например, конус имеет всего лишь одну вершину
.▄
Теорема 3. Пусть - вершина области допустимых значений задачи 1, тогда столбцы
матрицы
, соответствующие ненулевым компонентам
линейно независимы.
Доказательство. Утверждение теоремы есть прямое следствие леммы 2. ▄
Пусть теперь - одна из вершин области допустимых значений задачи 1. В силу
теоремы 3, у вектора
может быть не более
ненулевых компонент, и соответствующие им столбцы матрицы
линейно независимы. Чтобы не заслонять суть метода
второстепенными деталями, будем предполагать, что любые
столбцов из расширенной матрицы
линейно независимы, тогда вершина
невырожденная, т.е. ненулевых компонент
ровно
, и соответствующие им столбцы
матрицы
образуют базис в
.
Вектор удовлетворяет уравнению (1). Как известно, любое решение
уравнения (1) представимо в виде:
, где
,
- ядро оператора
, т.е., удовлетворяет уравнению
. Ядро оператора
в нашем случае – это
-мерное подпространство пространства
. Найдем его базис. Пусть столбец
не входит в набор столбцов
матрицы
, соответствующих ненулевым компонентам
. Тогда его можно представить в виде линейной комбинации этих
столбцов, т.е., найдется вектор
, у которого нулевые все те компоненты, которые нулевые у
, такой что
. Теперь каждому столбцу
матрицы
соответствующему одной из нулевых компонент
, поставим в соответствие вектор
с компонентами:
;
; остальные
компонент векторов
- нулевые. Семейство векторов
обладает следующими свойствами:
Отсюда можно заключить, что
система векторов есть базис подпространства
(ядра оператора
).
Заметим, что
для любого , и любого
, соответствующего одной из нулевых компонент
, вектор
не принадлежит ОДЗ задачи, т.к. его
-я компонента строго отрицательна. С другой стороны,
при достаточно малых
, все векторы
принадлежат, т.к. компоненты
строго положительны.
Мы видим, что
вершина является крайней точкой множества ОДЗ задачи в том смысле,
что двигаться из нее по любому из базисных векторов подпространства, в котором
лежит ОДЗ, не выходя из ОДЗ, можно лишь по одному направлению.
Предположим
теперь, что точка не доставляет максимума нашей задаче. Тогда найдется
допустимый элемент
, такой что
. Поскольку
удовлетворяет (1), он представим в виде:
, причем из
и свойств базиса
следует
. Тогда получаем:
, или
. Отсюда следует, что хотя бы один член суммы должен быть
строго положительным, т.е., найдется
, соответствующий одной из нулевых компонент
, такой что
. Отсюда следует
Теорема 4. Пусть вершина не доставляет максимума задаче 1, Тогда найдется вектор
из базиса
подпространства нулей матрицы
такой что
, и при достаточно малых
векторы
допустимы. ▄
Попробуем
теперь сделать движение по одному из векторов базиса подпространства
и подсчитать, какое изменение значения функционала это
принесет.
Имеем: , где, напомним,
- это разложение столбца
по базису столбцов
, соответствующих ненулевым компонентам
, т.е., ненулевых компонент у
не больше чем у
, и они имеют те же номера, и выполняется
.
Мы видим, что
направление изменения функционала зависит от знака величины . Если
- функционал убывает, если
- возрастает, если
,- не меняется.
Таким образом, приходим с следующему алгоритму, который известен как симплекс-метод решения задач линейного программирования.
Так как число вершин конечно, повторяя приведенные выше действия
для вершины , затем
, и т.д., за конечное число шагов мы придем либо к случаю,
когда все
, т.е., найдем решение задачи, либо, при
окажется, что
, т.е., убедимся, что задача решений не имеет. ▄