Рассмотрим следующую задачу линейного программирования:
Задача 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, Тогда найдется вектор из базиса подпространства нулей матрицы такой что , и при достаточно малых векторы допустимы. ▄
Попробуем теперь сделать движение по одному из векторов базиса подпространства и подсчитать, какое изменение значения функционала это принесет.
Имеем: , где, напомним, - это разложение столбца по базису столбцов , соответствующих ненулевым компонентам , т.е., ненулевых компонент у не больше чем у , и они имеют те же номера, и выполняется .
Мы видим, что направление изменения функционала зависит от знака величины . Если - функционал убывает, если - возрастает, если ,- не меняется.
Таким образом, приходим с следующему алгоритму, который известен как симплекс-метод решения задач линейного программирования.
Так как число вершин конечно, повторяя приведенные выше действия для вершины , затем , и т.д., за конечное число шагов мы придем либо к случаю, когда все , т.е., найдем решение задачи, либо, при окажется, что , т.е., убедимся, что задача решений не имеет. ▄