Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мат. мет. исл. оп Погорелов / Лекции по мат. мет. ИО.doc
Скачиваний:
67
Добавлен:
26.03.2015
Размер:
3.62 Mб
Скачать

Лекции по дисциплине

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

Лекция 1. МЕТОД ЛАГРАНЖА

    1. Метод Лагранжа

Пусть обозначает следующуюзадачу оптимизации (optimization problem): минимизироватьпри условии, что.

При этом: . Мы говорим, что вектор х является допустимым, если . Определим Лагранжиан (Lagrangian – функцию Лагранжа) следующим образом: .

Обычно , и . Вектор называется множителем Лагранжа (Lugrangian multiplier).

Верхняя грань упорядоченного множества А обозначается как (читается:супремум А). Нижняя грань упорядоченного множества А обозначается как (читается:инфимум А).

Теорема 1.1 (Теорема достаточности Лагранжа). Если вектор является допустимым для и существует такое что

,

то является оптимальным решением для.

Доказательство ТДЛ. Для всех x X(b) и λ мы имеем

.

Теперь принимаем , и в соответствии с исходным допущением

для всех .

Таким образом является оптимальным для оптимизационной задачи .

Пример 1.1. Минимизировать при условии , причем. Предположим, что коэффициенты ,, иb все неотрицательные.

Лагранжиан равен: . Рассмотрим задачу

.

Точку экстремума находим из уравнений: , (). Это дает нам следующие координаты стационарной точки: . Выберем так, чтобы выполнялось: , это обеспечивается при . Мы получили минимум, так как . Таким образом, при принятом значении λ условия ТДЛ выполнены и оптимальное значение есть в точке.

    1. Двойственная задача

Пусть заданы выражения

и .

Тогда для всех

(1.1)

Таким образом является нижней границей, т.е. нижней границей решения задачи . Так как это верно для всех , то заманчиво сделать эту нижнюю границу как можно больше (чтобы удовлетворялось условие ). Конечно, мы можем ограничить себя вектором , для которого . Эти рассуждения стимулируют изучение двойственной задачи (dual problem), определяемой так: максимизировать при условии , где .

В (1.1) содержится доказательство так называемой теоремы слабой двойственности (weak duality theorem):

. (1.2)

Левая часть (1.2) представляет собой формулировку прямой задачи (primal problem).

    1. Сильный Лагранжиан

Мы говорим, что P(b) – сильный Лагранжиан (Strong Lagrangian), если существует вектор λ такой, что

. (1.3)

Другими словами, оптимизационная задача P(b) является сильным Лагранжианом в том случае, если она может быть решена с помощью метода Лагранжа. Но когда это происходит? Обычно мы просто пробуем метод и смотрим, что получится. Если нам повезет, как в примере 1.1, то сможем установить, что существует вектор λ (в частном случае – скалярная переменная), который позволяет нам решить P(b) таким образом. Однако, есть важные классы задач, для которых мы можем гарантировать, что методы Лагранжа работают всегда.

Обратите внимание: формула (1.3) утверждает, что существует вектор λ такой, что . Комбинируя это с (1.2), мы видим, что если задача является сильным Лагранжианом, то . То есть неравенство в выражении (1.2) на самом деле есть равенство.

    1. Гиперплоскости

Пусть гиперплоскость () задается выражением

.

Она пересекает вертикальную ось в точке c=b на уровне β, и имеет наклон(ы) λ. Рассмотрим следующее приближение для определения :

1. Для каждого λ найдем такое, чтобы гиперплоскость целиком лежала ниже графика .

2. Затем выберем λ, которое максимизирует .

На рис. 1.1 показаны графики двух функций , иллюстрирующие два принципиально различных случая. Методы Лагранжа работают только в первом случае из-за существования касательной к поверхности(или кривой в одномерном случае) в точкеb.

Рис. 1.1. Графики функций

Определим опорную гиперплоскость () наb как

,

где для всех.

Имеет место равенство: . Его можно доказать следующим образом:

Отсюда следует, что двойственную задачу можно переформулировать следующим образом: . Теперь мы можем записатьтеорему слабой двойственности в новом виде: – с равенством, если задача является сильным Лагранжианом.

Теорема 1.2. Следующие условия эквивалентны:

а) существует (не вертикальная) опорная гиперплоскость к на b;

б) задача является сильным Лагранжианом.

Это важно, поскольку (не вертикальная) опорная гиперплоскость существует, если – это выпуклая функция b. Мы можем найти условия, которые делают функцию выпуклой.

Доказательство. Предположим, что существует (не вертикальная) опорная гиперплоскость к на b. Это означает, что существует вектор λ, такой что

для всех .

Это подразумевает следующее

Однако у нас есть противоположное неравенство в (1.1). Следовательно . Это означает, что задача оптимизацииP(b) является сильным Лагранжианом, то есть может быть решена путем минимизации Лагранжиана L(x, λ) в отношении x. И наоборот, если задача является сильным Лагранжианом, то существует вектор λ такой что для всех

.

Представим задачу минимизации правой стороны предыдущего неравенства при условии , где. Это дает

.

Это верно для всех с, и, следовательно

для всех .

Таким образом, имеет (не вертикальную) опорную гиперплоскость на b.

    1. Выпуклые функции и методы Лагранжа

  1. Множество S есть выпуклое множество, если для всех

.

  1. Вещественная функция f является выпуклой функцией (convex function), если для всех и

.

  1. Точка х является экстремальной точкой (extreme point) множества S, если всякий раз, когда бы ни выполнялось равенство

для некоторых и , имело место:.

Теорема 1.3. (Теорема опорной гиперплоскости). Пусть функция выпукла и b лежит во внутренней части множества точек, где принимает конечные значения. Тогда существует (не вертикальная) опорная гиперплоскость к на b.

Итак, мы заинтересованы в условиях задачи, которые делают функцию выпуклой.

Теорема 1.4. Рассмотрим задачу P(b), определяемую как

при условии h(x) ≤ b.

Если X является выпуклым множеством, а функции f и h – выпуклые, то также является выпуклой функцией.

Доказательство. Возьмем ,идляс,, такими что функция является определенной. Возьмем вектордопустимым длядляи рассмотрим . Если множество Х выпуклое, , то отсюда следует, что . Кроме того выпуклость h дает

Таким образом, вектор x является допустимым для P(b). Следовательно, если f выпукла

.

Это верно для всех и, поэтому принятый инфимум дает

,

так что функция выпукла.

Пример 1.2. Покажем, что в задаче, рассмотренной в примере 1.1, функции функции f и h – выпуклые. График функции представляет собой поверхность, обладающую круговой симметрией. Поэтому мы можем упростить задачу, рассматривая сечение функцииплоскостью, проходяшей через ось симметрии (для простоты выберем плоскость с). Таким образом теперь нам нужно доказать выпуклость функции одного аргумента:. Условие выпуклости функции:

. (1.4)

Введем новую переменную , такую что, и зафиксируем. Теперь обе части неравенства (1.4) будут зависеть от одной переменной:

. (1.5)

,

.

Поскольку при условии , то неравенство (1.5) выполняется и функцияf является выпуклой. Функция описывает плоскость. Мы также можем упростить задачу, рассматриявая более простую функцию. Условие выпуклости функции:

. (1.6)

Очевидно, что (1.6) представляет собой равенство. Значит условие выпуклости функции h выполняется.

Замечание: линейные функции всегда выпуклые.

Лекция 2. ЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ

    1. Линейные программы

Задачи линейного программирования (ЛП) – это задачи вида:

минимизировать ,

где х и с – являются n-векторами, b есть m-вектор и А есть матрица. Задачи ЛП также могут записываться и в развернутом виде:

минимизировать при условии.

Пример 2.1. при условии:

Рис. 2.1. Геометрическое представление задачи ЛП

    1. Практический пример

Рассмотрим применение метода линейного программирования на практическом примере. Пусть изготовление двух видов продукции П1 и П2 требует использования четырех видов сырья С1, С2, С3, С4. Запасы каждого вида сырья на производстве ограничены (см. табл. 2.1).

Во втором столбце приведены запасы сырья, в третьем – доля каждого вида сырья в первом виде продукции П1, в четвертом – доля каждого вида сырья во втором виде продукции – П2. В последней строке приведен доход (в гривнах) предприятия от реализации одной единицы каждого вида продукции.

Требуется составить такой план выпуска продукции, при котором доход предприятия оказался бы максимальным.

Таблица 2.1

Виды сырья

Запасы сырья

Виды продукции

П1

П2

С1

С2

С3

С4

19

13

15

18

2

2

0

3

3

1

3

0

Доход

7

5

Сформулируем данную задачу на языке математики. Если принять, что предприятие выпускает единиц продукции вида П1 и– вида П2, то для этого требуется сырья:

С1: единиц,

С2: единиц,

С3: единиц,

С4: единиц.

Очевидно, что расход сырья не должен превышать имеющихся запасов, значит

(2.1)

При этих условиях доход предприятия (в гривнах) составит

. (2.2)

Теперь задачу можно сформулировать так: дана система неравенств (2.1) и линейная форма (2.2). Требуется среди неотрицательных решений () системы линейных неравенств (2.1) найти такое, при котором линейная форма (целевая функция) имеет наибольшее значение.

Преобразуем ограничения-неравенства (2.1), добавив к ним условия: (количество выпускаемой продукции не может быть отрицательным).

(2.3)

Решим задачу геометрическим способом. Введем прямоугольную систему координат и построим выпуклый многоугольник, соответствующий ограничениям-неравенствам (2.3). Согласно условиям задачи, допустимые решения будут находиться внутри многоугольника (или на его границе).

Рис. 2.1. Выпуклый многоугольник, ограничивающий множество

допустимых решений задачи

Попробуем решить задачу оптимизации методом проб и ошибок. Присвоим целевой функции (2.2) произвольное значение

. (2.4)

Выражение (2.4) представляет собой уравнение прямой линии, и его можно преобразовать к следующему виду

. (2.5)

Уравнение (2.5) это линейная функция, обратная линейная зависимость. Ее график представляет собой линию, которая пересекает ось в точке, а осьв точке.

Меняя , мы будем получать различные, но параллельные между собой прямые, соответствующие фиксированным значениям(,, …,). Нас интересует такое положение прямой, при котором она еще пересекает многоугольник допустимых значений и при этомпринимает самое максимальное значение. Совершенно очевидно, что своего наибольшего значения функцияможет достигнуть только на границе области. Это произойдет в точке. Этой точкой и определяется оптимальное решение. Наибольшее значение линейной формыбудет.

Таким образом, в соответствии с требованием задачи для наиболее рационального плана использования сырья, гарантирующего предприятию наибольший доход, следует выпускать 5 единиц продукции вида П1 и 3 единицы продукции вида П2. Максимальный доход при этом будет: гривен.

    1. Двойственность линейных программ

Сформулируем прямые задачи линейного программирования (ЛП):

(ЛП = ) : ;

(ЛП ) : .

В дополнение к ним имеются соответствующие двойственные задачи:

Dual (ЛП = ) : ;

Dual (ЛП ) : .

    1. Происхождение двойственной задачи ЛП

Рассмотрим (ЛП ), и введем дополнительную переменную z , изменив вид задачи: минимизировать , при условии,,.

Таким образом множество теперь имеет вид

.

Мы используем подход Лагранжа. Функция Лагранжа равна

с конечным минимумом по переменным тогда и только тогда, когда: .

Минимум функции Лагранжа при достигается, когда и , так что

.

Таким образом, формулируется двойственная задача ЛП.

    1. Скрытые цены

Множители Лагранжа играют роль цены, поскольку мы имеем

.

На возможность такой интерпретации впервые указал русский математик и экономист академик Леонид Витальевич Канторович (1912-1986). Он является одним из создателей линейного программирования и за свои работы в этой области в 1975 году получил Нобелевскую премию по экономике (вместе с американским ученым Тьяллингом Купмансом).

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

    1. Условия оптимальности

Для задачи (ЛП ) векторы х и λ являются прямыми и двойственными векторами соответственно, тогда и только тогда, вектор х является прямым допустимым, а вектор λ является двойственным допустимым и, кроме того, для любого и

.

Эти равенства известны как дополнительные условия оптимальности.

    1. Понимание на интуитивном уровне

Если задача ЛП имеет конечный оптимум, то она имеет оптимум в экстремальной точке допустимого множества.

Имеется конечное число экстремальных точек, так что алгоритм для решения задачи ЛП должен быть следующим:

  • Обойти все вершины допустимого множества.

  • Выбрать наилучший вариант.

В примере 2.1. оптимальное решение находится в точке С. Всего в допустимом множестве имеется вершин, так что этот алгоритм при большихn и m может выполняться достаточно долго!

    1. Базисные решения

Базисное решение для – это решение с по крайней меренулевыми переменными. Решение является невырожденным, если точнопеременных равны нулю. Выбранные ненулевыми переменные (в количестве) составляютбазис. Входящие в базис переменые называются базисными, а все остальные – не базисными.

Если базисное решение удовлетворяет условию , то оно называетсябазисным допустимым решением (БДР). Справедлива следующая теорема.

Базисные допустимые решения являются крайними точками допустимого множества.

В примере 2.1 вершины A, B, C, D, E, F являются базисными решениями (причем – невырожденными), а A, B, C, D являются базисными допустимыми решениями.

Лекция 3. СИМПЛЕКС-АЛГОРИТМ

    1. Предварительная формулировка

Симплекс-алгоритм применяется для решения оптимизационной задачи линейного программирования. Он заключается в переборе вершин выпуклого многогранника в многомерном пространстве. Метод был разработан американским математиком Джорджем Данцигом (George Dantzig) в 1947 году. Коротко симплекс-алгоритм можно описать следующим образом:

  1. Начинаем с любого БДР.

  2. Проверяем его на оптимальность.

  3. Если ДА, то СТОП.

  4. Если НЕТ, то переходим к смежному БДР, которое лучше предыдущего. Возвращается к пункту 2.

    1. Алгебраическая точка зрения

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

,

где матрица (базисная матрица),матрица (небазисная матрица),иb – это m-векторы и – это ()-вектор.

Для базисного решения имеем: и , а для допустимого базисного решения имеем: , и .

Если существует конечный оптимум, тогда существует БДР, и, следовательно, задача линейного программирования имеет решение.

Будем полагать, что выполняются следующие допущения (если они не выполняются, то это можно исправить небольшим искажением исходных данных).

1. Матрица А имеет линейные независимые строки, т.е. .

2. Любая матрица , сформированная изm столбцов матрицы A является невырожденной.

3. Все базисные решения , имеют ровноm ненулевых переменных, т.е. для.

Если допущения 1-3 выполняются, то говорят, что задача линейного программирования является невырожденной.

    1. Симплекс-таблицы

Теперь для любого х, удовлетворяющего ограничениям , у нас есть: . Отсюда следует:

Мы можем свести эту информацию в таблицу.

Таблица 3.1

    1. Тест на оптимальность

Предположим, что мы хотим максимизировать и на каком-то этапе поиска оптимального решения мы найдем:

и

Тогда для всех допустимых х (так как ):

Но для БДР с и имеем . Таким образом, векторявляется оптимальным. Это дает нам простой метод для определения, является ли БДР оптимальным.

    1. Выбор нового БДР

В противном случае, если какая-либо из компонент принимает положительное значение, мы можем увеличить значение целевой функции увеличением от нуля значения .

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

    1. Уточненная формулировка симплекс-алгоритма

1. Находим начальное БДР с базисом В.

2. Проверяем знак при i N. Все компоненты этого вектора неположительные?

3. Если ДА, то мы находимся в оптимальной точке. Стоп.

4. Если НЕТ, так что сi N, увеличиваем как можно больше.

Либо мы можем делать это неограниченно долго, что означает – максимум неограниченный. Стоп.

Либо одна из компонент обращается в ноль, что дает новое БДР. Тогда повторяем все, начиная с шага 2.

    1. Симплекс-алгоритм: изменения в таблице

  1. Находим начальное базисное допустимое решение.

В самом простом случае ограничения имеют вид:

, .

Мы можем записать это так:

, .

И принять первоначальное базисное допустимое решение:

, .

Таким образом, мы расширяем х до (x, z), а затем устанавливаем

.

Первоначальные данные записываем в таблицу (табл. 3.2).

Таблица 3.2

  1. Выбираем переменную для ввода в базис.

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

  1. Находим переменную для удаления из базиса.

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

Вернемся к примеру 2.1, и на его основе построим исходную таблицу симплекс-алгоритма (табл. 3.3). Стержневой элемент выделен скобками.

Таблица 3.3.

1

2

1

0

6

0

1

3

1

1

0

0

0

  1. Изменения в таблице

Цель этого шага – получить систему уравнений в подходящей форме для нового базисного допустимого решения.

  • Умножаем строку i на .

  • Добавляем к каждой строке, включая строку целевой функции.

Новая форма таблицы (после изменения строк и столбцов) показана в табл. 3.4. Выделен новый стержневой элемент.

Таблица 3.4.

0

1

3

1

0

1

3

0

2

0

Затем снова возвращаемся к Шагу 1. Еще одна итерация приводит к оптимальному решению (табл. 3.5).

Таблица 3.5.

0

1

1

1

0

4

0

0

Это соответствует БДР: 4,1,, т.е. вершинеС на рис. 2.1.

Лекция 4. УСОВЕРШЕНСТВОВАННЫЕ СИМПЛЕКС ПРОЦЕДУРЫ

    1. Двухфазный симплекс-метод

Допустим, что у нас нет очевидного базисного допустимого решения. Рассмотрим следующую задачу:

К сожалению, базисное решение

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

Теперь мы можем взять следующее начальное БДР:

.

На первом этапе (фаза 1) минимизируем (относясь к этой сумме как к целевой функции), начиная си. (Заметьте, что нам не нужна искусственная переменная в третьем уравнении). По окончании первого этапа должно выполняться:. Значения остальных переменных, полученные в ходе выполнения первой фазы, используются в качестве БДР для решения основной задачи.

На втором этапе (фаза 2) решаем основную задачу, используя текущие значения переменных в качестве исходного БДР.

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

Мы начинаем с данных, представленных в табл. 4.1.

Таблица 4.1.

1

1

0

0

1

0

1

2

0

0

0

1

1

0

3

0

0

1

0

0

2

0

0

0

0

0

0

0

0

0

0

0

0

Предварительный этап. Целевая функция первой фазы должна быть выражена через небазисные переменные. Это достигается добавлением к нижней строке строк 1 и 2, что дает (табл. 4.2).

Таблица 4.2.

1

1

0

0

1

0

1

0

0

0

1

1

0

3

0

0

1

0

0

2

0

0

0

0

0

0

3

0

0

0

0

2

Начало первой фазы. Используя в качестве стержневого элемента , получим (табл. 4.3).

Таблица 4.3.

0

0

1

1

0

0

0

0

3

0

0

1

0

0

2

0

0

0

0

3

3

0

0

0

Стержневой элемент дает (табл. 4.4).

Таблица 4.4.

0

3

1

0

2

1

1

1

0

0

1

0

1

0

3

0

0

1

0

0

2

0

3

0

0

6

0

6

0

0

0

0

0

0

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

Начало второй фазы.

Таблица 4.5.

0

1

0

1

1

1

0

0

1

0

3

0

0

1

2

0

3

0

0

6

В один шаг мы достигнем оптимума, выбрав в качестве стержня .

Таблица 4.6.

0

1

0

1

0

0

0

0

2

1

1

0

0

0

5

В общем случае, искусственные переменные нужны, когда имеются ограничения вида

, или 1, или =1.

Если целевая функция первой фазы не может быть минимизирована до нуля, то исходная задача не имеет решения.

    1. Прямой и двойственный алгоритмы

Рассмотрим задачу (LP = ): минимизировать . Ей соответствует двойственная задача: максимизировать . На каждом шаге основного симплекс-алгоритма мы получаем следующую таблицу (табл. 4.7).

Таблица 4.7.

Для прямой задачи мы имеем базисное допустимое решение , а для двойственной – базисное (хотя и не обязательно допустимое) решение . Мы также можем использовать дополнительное условие оптимальности:. Эта информация обеспечивает возможность оптимального решения задачи (Рис. 4.1).

+

+

Рис. 4.1. Составляющие оптимального решения

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

    1. Двойственный симплекс-алгоритм

После запуска двойственный симплекс-алгоритм сохраняет прямое/двойственное базисное решение, которое является допустимым для двойственной задачи и удовлетворяет дополнительному условию оптимальности, стремясь к допустимости прямой задачи. Это может оказаться полезным. Иногда легче найти двойственное допустимое решение. Рассмотрим следующий пример.

Принимаем во внимание, что для всехi. Добавим дополнительные переменные для получения

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

Таблица 4.8.

1

0

1

3

0

1

2

3

4

0

0

0

Правило: для строк с выбираем столбец с , чтобы минимизировать. Возьмем в качестве стержневого элементаи получим (табл. 4.9).

Таблица 4.9.

0

1

1

0

2

0

4

7

0

1

Затем выберем , что дает (табл. 4.10).

Таблица 4.10.

0

1

1

1

0

0

0

3

Оптимум равен: с. Заметим, что для задач вида мы можем написать:

, ,

.

Следовательно:

.

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

Мы можем добавить новые ограничения, изменив таким образом начальные условия задачи. Предположим, что мы решили задачу ЛП и имеем на финальном этапе следующую таблицу.

Таблица 4.11.

non-basic

basic

0

Теперь мы хотим добавить новое ограничение

Если полученное оптимальное решение удовлетворяет этому ограничению, решение остается оптимальным и для новой задачи. В противном случае, мы добавим его в таблицу (табл. 4.12).

Таблица 4.12

1

b

0

1

0

0

0

0

Заметим, что мы до сих пор имеем дело с двойственным допустимым решением. Прямая задача может его не иметь. Тем не менее, можно применить двойственный симплекс-алгоритм, чтобы найти новый оптимум с учетом дополнительного ограничения.

    1. Метод сечений Гомори

Добавление новых ограничений полезно при использовании метода сечений Гомори в целочисленном линейном программировании. Вернемся к заключительной таблице двойственного симплекс-алгоритма (табл. 4.10). Выберем строку, в которой крайний правый элемент не является целым числом, скажем строку 1. Она соответствует уравнению

.

Примем, что – неотрицательные целые числа. Тогда должно выполняться

Это происходит потому, что и мы заменилиицелыми числами, которые меньше по величине первоначальных. Итак, решение в целых числах должно удовлетворять

Однако представленное решение не удовлетворяет этому уравнению, так как ,. Таким образом, мы можем добавить это новое ограничение (или сечение), что дает (табл. 4.13).

Таблица 4.13.

0

1

1

0

1

0

0

0

1

1

0

1

0

0

0

3

0

Вычитая из третьей строки первую строку, получим стандартный вид.

Таблица 4.14.

0

1

1

0

1

0

0

0

0

0

1

0

0

3

0

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

Таблица 4.15.

0

1

1

0

0

0

1

0

1

0

3

0

0

0

3

1

2

0

0

3

1

0

0

Лекция 5. СЛОЖНОСТЬ АЛГОРИТМОВ

    1. Теория алгоритмической сложности

Каждый экземпляр оптимизационной задачи определяется своими исходными данными. Например, задача линейного программирования с n переменными и m ограничениями описывается исходными данными: A, b и c. Есть чисел и все они могут быть выражены не более чем вk битах, задача может быть описана в строке из (mn + m+ n)k бит. Это размер экземпляра задачи.

Задача оптимизации решается с помощью вычислительного алгоритма, время работы которого зависит от качества программы и от скорости компьютера. Иногда задачу большого размера можно быстро решить, например, задачу ЛП с A = I. Однако, в целом, мы ожидаем, что время работы алгоритма увеличится с ростом размера экземпляра задачи.

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

Одним из упрощенных видов анализа, используемых на практике, является асимптотический анализ алгоритмов. Целью асимптотического анализа является сравнение затрат времени и других ресурсов различными алгоритмами, предназначенными для решения одной и той же задачи, при больших объемах входных данных. Используемая в асимптотическом анализе оценка функции трудоёмкости, называемая сложностью алгоритма, позволяет определить, как быстро растет трудоёмкость алгоритма с увеличением объема данных. В асимптотическом анализе алгоритмов используются обозначения, принятые в математическом асимптотическом анализе. Ниже перечислены основные оценки сложности.

  • , если существует такое число с, что для всех n;

  • , если существует такое число с, что для всех n;

  • , если есть одновременно и.

Игнорируя детали реализации, можно считать, что время работы алгоритма зависит от числа включенных в него арифметических операций. Например, линейная система Ax = b, с матрицей А размером n×n может быть решена с помощью алгоритма Гаусса, использующего операций сложения, вычитания, умножения и деления.

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

Когда на вход ДМТ поступает сигнал х, она начинает работать и через некоторое число шагов выдает выходной сигнал f(x). Это число шагов является временем его работы. Есть много машин Тьюринга. Пусть есть наихудшее время работы некоторой машины Тьюринга, скажемМ, для входа х размером |x| = n. Мы говорим, что функция f(x) является вычислимой за полиномиальное время, если существует некоторая машина Тьюринга, которая способна вычислить f(x) за шагов (при некотором фиксированномk). Определение является надежным, так как разные машины Тьюринга могут симулировать работу друг друга и используют эффективные модели вычислений с не более чем квадратным или кубическим временем вычисления. Напротив, если для всехМ, то f(x) называется вычислимой за экспоненциальное время.

    1. Задача коммивояжера

Пусть задано конечное множество точек в плоскости: . В задаче коммивояжера (ЗК) требуется найти кратчайший цикл, который охватывает все точкиS по одному разу. Этот цикл определяется перестановкой , которая минимизирует сумму расстояний:

,

где является расстоянием между точками и .

В общем, трудно доказать, что задача не имеет алгоритма с полиномиальным временем. Неизвестен ни один алгоритм с полиномиальным временем для ЗК. Но нет и доказательств того, что такой алгоритм для ЗК не существует. В дальнейшем мы узнаем, что симплекс-алгоритм для задачи ЛП является алгоритмом с экспоненциальным временем исполнения. Однако еще в 70-х годах двадцатого века алгоритм с полиномиальным временем был открыт для ЛП.

    1. Задача распознавания

Задача распознавания принимает форму вопроса с ответом да или нет. Например, задача распознавания ЗК:

Заданы точки S и цикл L. Существует ли цикл длинною ≤ L? (5.1)

Как можно видеть, она отличается от задачи оптимизации ЗК: «найти самый короткий цикл» или от оценки ЗК: «найти длину кратчайшего цикла». Конечно, три типа рассмотренных задач тесно связаны между собой. Мы сфокусируем внимание на задаче распознавания. Это позволит исключить задачи, в которых размер входных или выходных данных приводит к не полиномиальному времени исполнения.

    1. P и NP задачи

Задача распознавания принадлежит классу P, если ее ответ вычисляется за полиномиальное время. Это означает, что существует детерминированная машина Тьюринга, которая для любого экземпляра задачи с входными данными x может вычислить ответ за не более чем шагов (при некотором фиксированномk).

Задача распознавания принадлежит классу NP, если существует проверочная функция r(x, y) такая, что ответ на задачу решения есть да, если существует y (так называемый сертификат) такой, что r(x, y) = 1 и r(x, y) вычисляется за полиномиальное время. Например, если ответ на вопрос 5.1 есть да, то y может означать порядок посещения точек. Требуется только время O(n), чтобы сложить длину этого цикла и проверить, меньше ли оно чем L (что является вычислением r(x, y)).

NP – это класс задач распознавания, ответы на которые могут быть вычислены за полиномиальное время на недетерминированной машине Тьюринга (НДМТ). НДМТ состоит из многих ДМТ, работающих параллельно, каждая из которых может ответить да за полиномиальное время без консультации с другими. По существу, эти компьютеры осуществляют параллельные вычисления r(x, y) для всех возможных y. Либо одна из них производит ответы да в пределах времени , либо ответ будетнет. НДМТ для 5.1 может состоять из ДМТ, каждая из которых проверяет один из возможных циклов, чтобы узнать, является ли его длина меньше, чемL. Ясно, что PNP. Считается, что PNP (то есть, есть задачи в NP, которых нет в P). Тем не менее, это не доказано точно.

    1. Сведение одной задачи к другой

Зададим себе следующий вопрос: когда задача не труднее чем другая задача? Мы говорим, чтосводится к, если можно построить алгоритмследующим образом.

  1. Преобразовываем (за полиномиальное время) экземпляр задачи в экземпляр задачи.

  2. Применяем некоторый алгоритм для решения задачи .

  3. Преобразовываем (за полиномиальное время) решение задачи обратно в решение задачи.

Идея заключается в том, что можно использовать алгоритм, который решает задачу , для решения задачис дополнительной работой в шагах 1 и 3, что требует самое большее полиномиального времени. Таким образом,действительно не труднее, чем.

    1. Полнота NP

Теперь мы можем говорить о наиболее трудных задачах в NP. Задача называетсяNP-трудной (NP-hard), если все задачи в NP могут быть сведены к ней. Она называется NP-полной (NP-complete), если кроме того NP. Таким образом, все NP-полные задачи могут быть сведены одна к другой и являются настолько же трудными, как и все задачи в NP.

Рис. 5.1. Множества NP-полных и NP-трудных задач

Существует много NP-полных задач. Задача ЛП, в которой все переменные могут принимать значения только 0 или 1, является NP-полной. ЗК является NP-полной. Так что все задачи в NP не труднее, чем любая из этих задач. Если вы сможете найти алгоритм с полиномиальным временем для ЗК, то вы найдете такой алгоритм для всех задач в NP и докажете, что . Как мы уже говорили, поскольку еще никто не нашел алгоритм с полиномиальным временем для любойNP-полной задачи, то считается, что . Чтобы показать, что новая задачаявляетсяNP-полной. мы должны (i) показать, что , и (ii) показать, что известная NP-полная задача сводится к .

    1. Примеры NP-полных задач

Задача выполнимости (Кук, 1971). Задана пропозициональная формула с логическими переменными: , например

.

Существуют ли такие значения истинности переменных (True или False), которые делают формулу истинной? В приведенном выше примере они существуют: .

Гамильтонов цикл. Задан граф G, в котором есть n вершин. Нужно определить, существует ли множество ребер, с помощью которых можно сформировать цикл, включающий все вершины графа? Чтобы убедиться в том, что экземпляр этой задачи не труднее, чем ЗК, представим экземпляр ЗК с , если есть ребро отi к j и , если нет. Теперь можно задать вопрос: «есть ли цикл, длинною≤ n

Изоморфизм подграфа. Заданы два графа G, G′. Содержит ли G подграф, изоморфный графу G′? Известно, что задача изоморфизма графов («Графы G и G′ изоморфны?») принадлежит классу NP. Однако есть подозрение, что она не принадлежит ни к классу Р, ни к классу NP-полных задач.

Задача о клике. Задан граф G и число k. Содержит ли G клику размером k? Кликой в неориентированном графе называется подмножество k вершин, каждые две из которых соединены ребром графа. Например, для графа, изображенного на рис. 5.2 (слева): k=3, да, k=4, нет.

Рис. 5.2. Примеры графов

Задача о вершинном покрытии. Задан граф G и число k. Существует ли множество вершин k таких, что каждое ребро графа G начинается или заканчивается в одной из них? Такое множество вершин называется вершинным покрытием. Например, для графа, изображенного на рис. 5.2 (справа): k = 2, нет, k = 3, да.

Лекция 6. ВЫЧИСЛИТЕЛЬНАЯ СЛОЖНОСТЬ ЛП

6.1. Продолжительность симплекс-алгоритма

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

,

и мы стремимся максимизировать . Вd-мерном кубе существует вершин. Показанный ниже маршрут проходит через все вершины и заканчивается в точке (0, 0, . . . , 1) (рис. 6.1).

Рис. 6.1. Маршруты в двухмерном и трехмерном кубах

Рис. 6.2. Возмущенный единичный куб для d = 2

Пусть задано , рассмотрим возмущенный единичный куб, заданный ограничениями: .Можно показать, что целевая функция строго возрастает с каждым движением вдоль пути. На рис. 6.2 показан маршрут движения дляd = 2. Как можно видеть, увеличивается вдоль маршрутаABCD.

Так что, если мы используем стержневое правило: всегда двигаться к смежному БДР, для которого вводимая переменная имеет наименьший индекс (так называемое правило Бланда), то симплекс-алгоритм потребует стержневых шагов до полного завершения. С этим стержневым правилом симплекс-алгоритм имеет в наихудшем случае экспоненциальное время вычислений. Заметим, что начальная и конечная вершины являются смежными, и поэтому другое стержневое правило может обеспечить достижение оптимума только в один шаг. Тем не менее для всех стержневых правил, которые были изучены, существуют экземпляры задач, для которых число шагов до завершения является экспоненциальным. Неизвестно, есть ли стержневое правило, которое могло бы сделать симплекс-алгоритм более эффективным. Вопрос существования подобного правила связан с гипотезой Хирша (1957) о том, что диаметр многогранника размерностиd и с n гранями не может быть больше чем nd. Эта гипотеза была опровергнута в 2010 году Франсиско Сантосом, который построил 43-мерный многогранник с 86-ю гранями и диаметром более 43. Тем не менее, до сих пор неизвестно, может ли диаметр быть ограничен некоторой полиномиальной функцией от n и d.

Тот факт, что алгоритм выглядит плохо при наихудшем раскладе данных, не означает, что он действительно плох на практике. Фактически в среднем время работы симплекс-алгоритма линейно зависит от размера задачи. Однако определить, что означает эта фраза «в среднем» довольно трудно.

6.2. Размер экземпляра задачи лп

Итак, мы убедились, что симплекс-алгоритм – это не полиномиальный алгоритм. Однако существуют другие алгоритмы решения задач ЛП. Если мы сумеем найти алгоритм с полиномиальным временем для ЛП, то задача ЛП принадлежит классу P. Существует два класса методов решения задач ЛП: граничные методы (boundary value methods) и методы внутренней точки (interior point methods) (рис. 6.3).

а б

Рис. 6.3. Два класса методов решения задач ЛП:

граничные методы (а) и методы внутренней точки (б)

Любое неотрицательное целое число r, (r ≤ U) можно записать в двоичной форме

,

где – это либо 0, либо 1. Число k имеет величину не более . Таким образом, используя дополнительный бит для знака мы можем представить любое целое числоr, где |r| ≤ U, в виде не более чем (+2) бит.

Экземпляр задачи ЛП задается матрицей А,m-вектором b и n-вектором с. Таким образом, предполагая, что наибольшая величина любой компоненты (векторов или матрицы) равна U, экземпляр задачи ЛП имеет размер в битах:

.