Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MEGAPACK_version_final.doc
Скачиваний:
8
Добавлен:
15.09.2019
Размер:
2.34 Mб
Скачать

46. Общая задача линейного программирования

Z=C1 x1+C2 x2+…+Cn xn и система линейных ограничений

a11x1+a12x2+…+a1jxj+…+a1nxn=b1,

a21x1+a22x2+…+a2jxj+…+a2nxn=b2,

ai1x1+ai2x2+…+aijxj+…+ainxn=bi,

am1x1+am2x2+…+amjxj+…+amnxn=bm, xj≥0

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

Запись с помощью знаков суммирования. Минимизировать линейную функцию

Z= при ограничениях =bj, xj≥0

Определение 1. Планом или допустимым решением называется вектор Х = (х1, х2,…, хп), удовлетворяющий условиям

Определение 2. План X = (хъ х2, ..., хп) называется опорным, если векторы Аi (i = 1, 2, ..., т), входящие в разложение с положительными коэффициентами хi, являются линейно независи­мыми.

Определение 3. Опорный план называется невырожденным, если он содержит т положительных компонент, в противном случае опорный план называется вырожденным.

Определение 4. Оптимальным план, до­ставляющий наименьшее (наибольшее) значение линейной функции.

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

Геометрическая интерпретация

Совокупность чисел х1, х2,…, хп , удовлетворяющих ограничениям называется решением. Если в системе ограничений n=3, то каждое неравенство представляет полупространство трехмерного пространства, граничная плоскость которого ai1 x1+ ai2 x2 +ai3 x3=bi (i=1,2,m). Если система ограничений имеет решение (совместна), то эти полупространства, как выпуклые множества, пересекаясь, образуют в трехмерном пространстве общую часть–многогранник решений (точка, отрезок, многоугольник).

Таким образом, геометрически задача лин.прогр. представляет собой отыскание такой точки многогранника решений, координаты которой доставляют линейной функции минимальное значение, причем допустимыми решениями служат все точки многогранника решений. Выпуклые множества Пусть на плоскости х1Ох2 заданы две точки: А1 (x 11; x 12) и А2 (х 21; x2 2), определяющие прямолинейный направленный отрезок А1 А2 (рис. 1.1). Найдем координаты произвольной внутренней точки А (х1; х2)

данного отрезка через координаты его начала и конца.

В екгоры А1А =(x1-x 11; х2 — x 12 ) и A1A2 =( x 12- x 11; x2 2- x 12 ) параллельны и оди наково направлены, поэтому А1А = t (А1А2), где 0 < t < 1, ил x1-x 11=t(х 21 -x 11).Отсюда х1=(1-t) x 11+t х 21 .

Полагая 1-t= 1,t= 2 получаем

x1= 1 x 11+ 2 x 21, (1)

x2= 1 x 12+ 2 x 22,

Учитывая, что в (1) координаты точки А являются суммами одноименных координат точек Ах и Аа, умноженными соответственно на числа 1 и 2 окончательно имеем: A= 1A1+ 2A2, 1+ 2=1 (2)

Точка А, для которой выполняются условия (2), назы­вается выпуклой линейной комбинацией точек А1 и А2. При 1= 1 и 2 =0 точка А совпадает с концом отрезка А1, при 1 — 0 и 2 =1 — с концом отрезка А2, Таким образом, если пробегает все значения от 0 до 1, то точка А описывает отрезок А1А2. Точки А1 и А2 называются угловыми или крайними точками отрезка А1А2.

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

Пусть имеется п точек А1, А2, ..., Аn. Точка А — выпуклая линей­ная комбинация, если ыполняются

A= 1A1+ 2A2+…+ n An

Множество точек называется выпуклым, если оно вместе с любыми двумя точками содержит и их произвольную выпуклую линейную комбинацию. Геометрический смысл этого определения состоит в том, что множеству вместе с его двумя произвольными точками полностью принадлежит и прямолинейный отрезок, их соединяющий. Примерами выпуклых множеств служат прямолинейный отрезок, прямая, полу­плоскость, круг, шар, куб, полупространство и др. На рис. 1.2 множе­ства а, б, в, г — выпуклые, множество д выпуклым не является, так как отрезок А1 A2 полностью этому множеству не принадлежит.

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

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

Выпуклым многоугольником называется выпуклое замкнутое ог­раниченное множество на плоскости, имеющее конечное число угловых точек.

47.Машина Поста. Машина Поста (МП) - абстрактна обчислювальна машина, запропонована Емілем Леоном постів (Emil L. Post), яка відрізняється від машини Тьюрінга більшою простотою. Обидві машини «еквівалентні» і були створені для уточнення поняття «алгоритм». МП складається з каретки (або зчитує і записує головки) і розбитою на секції нескінченної в обидві сторони стрічки (див. приклад нижче). Кожна секція стрічки може бути або порожній - 0, або позначений міткою 1. За один крок каретка може зрушитися на одну позицію вліво або вправо, вважати, поставити або знищити символ в тому місці, де вона стоїть. Робота МП визначається програмою, що складається з кінцевого числа рядків. Всього шість команд: N. → J зсув вправо N. ← J зсув вліво N. 1 J запис мітки N. 0 J видалення позначки N. ? J1, J0 умовний перехід по мітці N. Stop зупинка де N. - Номер рядка, J - рядок на яку переходить управління далі. Для роботи машини потрібно задати програму та її початковий стан (тобто стан стрічки і позицію каретки). Після запуску можливі варіанти: • робота може закінчитися невиконаною командою (стирання неіснуючій позначки або запис в помережені поле); • робота може закінчитися командою Stop; • робота ніколи не закінчиться.

48Структура динам.даних.Дерева.    Незважаючи на те, що терміни тип даних та структура даних звучать дещо схоже, проте вони мають різний підтекст. Як говорилося раніше, тип даних - це множина значень, які може приймати змінна деякого типу. А структури даних представляють собою набір даних, можливо різних типів, що об'єднані певним чином.       Базовим елементом структури даних є елемент (вузол), який призначений для зберігання певного типу даних. Якщо елементи зв'язані між собою за допомогою покажчиків, то такий спосіб організації даних називається динамічними структурами даних, так як їх розмір динамічно змінюється під час виконання програми. З динамічних структур даних найчастіше використовуються лінійні списки, стеки, черги та бінарні дерева.

      Лінійний список - це скінченна послідовність однотипних елементів (вузлів).

     Стек - динамічна структура даних, яка представляє собою впорядкований набір елементів, в якому додавання нових елементів і видалення існуючих проходить з одного кінця, який називається вершиною стека. Черга - це лінійний список, де елементи вилучаються з початку списку, а додаються в кінець (як звичайна черга в магазині). Двійкові дерева      Бінарне дерево - це динамічна структура даних, що складається з вузлів (елементів), кожен з яких містить, окрім даних, не більше двох посилань на інші бінарні дерева. На кожен вузол припадає рівно одне посилання. Початковий вузол називається коренем дерева (рис 1.23.).      Якщо дерево організоване таким чином, що для кожного вузла всі ключі його лівого піддерева менші за ключ цього вузла, а всі ключі його правого піддерева - більші, воно називається деревом пошуку. Однакові ключі в деревах пошуку не допускаються.      В дереві пошуку можна знайти елемент за ключем, рухаючись від кореня і переходячи на ліве або праве піддерево в залежності від значення ключа в кожному вузлі. Такий спосіб набагато ефективніший пошуку по списку, так як час виконання операції пошуку визначається висотою дерева.      Дерево є рекурсивною структурою даних, так як кожне піддерево є також деревом. Дії з такими структурами даних простіше всього описувати за допомогою рекурсивних алгоритмів.

     Наприклад, функцію обходу всіх вузлів дерева в загальному вигляді можна описати так : function way(дерево) {      way(ліве піддерево);      обробка кореня;      way(праве піддерево); };      Можна обходити дерево і в іншому порядку, наприклад, спочатку корінь, а потім піддерева. Але наведена модель функції дозволяє отримати на виході відсортовану послідовність ключів, так як спочатку відвідуються вершини з меншими ключами, що розташовані в лівому піддереві.      Таким чином, дерева пошуку можна використовувати для сортування значень. При обході дерева вузли не видаляються.      Для бінарних дерев визначені наступні операції :       • включення вузла у дерево;       • пошук по дереву;       • обхід дерева;       • видалення вузла.      Для кожного рекурсивного алгоритму можна створити його нерекурсивний еквівалент.      Вузол бінарного дерева можна визначити як : typedef struct sbtree {      int val;      struct sbtree *left,*right; } btree;

     Реалізація деяких операцій з бінарними деревами. 1). Рекурсивний пошук в бінарному дереві. Функція повертає покажчик на знайдений вузол.: 2). Включення значення в двійкове дерево (рис 1.33.): 3). Рекурсивний обхід двійкового дерева :

49.Формы задачи линейного программирования. В общем виде задача линейного программирования (в дальней­шем ЗЛП) может быть сформулирована как задача нахождения наибольшего значения линейной функции

(1.1)

на некотором множестве D Rn ,где x D удовлетворяют сис­теме ограничений

(1.2)

и, возможно, ограничениям

(1.3)

He умаляя общности, можно считать, что в системе (1.2) пер­вые т ограничений являются неравенствами, а последующие — l-уравнениями. Очевидно, этого всегда можно добиться за счет простого переупорядочения ограничений. Относительно направ­ления знака неравенства будем предполагать, что левая часть меньше или равна правой. Добиться этого можно, умножив на (-1) обе части тех неравенств, которые имеют противопо­ложный знак. Ограничения (1.3), вообще говоря, могут быть рассмотрены как частный случай ограничений в форме нера­венств, но в силу особой структуры их обычно выделяют от­дельно и называют условиями неотрицательности (или три­виальными ограничениями).

Дополнительно следует заметить, что выбор типа искомого экстремума (максимума или минимума) также носит относитель­ный характер. Так, задача поиска максимума функции

(1.4)

эквивалентна задаче поиска минимума функции

(1.5)

Часто условия задачи (1.1) - (1.3), содержащей ограничения только типа неравенств, бывает удобно записывать в сокращен­ной матричной форме

(1.6)

где с и xвекторы из пространства Rn, bвектор из простран­ства Rm, a А — матрица размерности mп.

Задачу линейного программирования, записанную в форме (1.1) - (1.3), называют общей задачей линейного програм­мирования (ОЗЛП).

Если все ограничения в задаче линейного программирования являются уравнениями и на все переменные xj наложены усло­вия неотрицательности, то она называется задачей линейного программирования в канонической форме, или канонической задачей линейного программирования (КЗЛП). В матрич­ной форме КЗЛП можно записать в следующем виде:

(1.7)

Поскольку любая оптимизационная задача однозначно оп­ределяется целевой функцией f и областью D, на которой отыс­кивается оптимум (максимум), будем обозначать эту задачу парой (D, f).

Условимся относительно терминологии, которая использу­ется в дальнейшем и является общепринятой в теории линейно­го программирования.

Планом ЗЛП называется всякий вектор х из пространства Rn.

Допустимым планом называется такой план ЗЛП, кото­рый удовлетворяет ограничениям (1.2)-(1.3), т. е. содержится в области D. Сама область D называется при этом областью допустимых планов. Оптимальным планом х* называется такой допустимый план, при котором целевая функция достига­ет оптимального (в нашем случае — максимального) значения, т. е. план, удовлетворяющий условию

max f(x) = f(x*).

Величина f* = f(x*) называется оптимальным значением целевой функции.

Решением задачи называется пара *, f*), состоящая из оптимального плана и оптимального значения целевой функ­ции, а процесс решения заключается в отыскании множества всех решений ЗЛП.

1.1.2. Переход к канонической форме. Подавляющее боль­шинство известных методов решения задач линейного програм­мирования предназначены для канонических задач. Поэтому начальный этап решения всякой общей задачи линейного программирования обычно связан с приведением ее к некоторой эквивалентной канонической задаче.

Общая идея перехода от ОЗЛП к КЗЛП достаточно проста:

  • ограничения в виде неравенств преобразуются в уравне­ния за счет добавления фиктивных неотрицательных переменных , которые одновременно входят в целевую функцию с коэффициентом 0, т. е. не оказывают влияния на ее значение;

  • переменные, на которые не наложено условие неотрица­тельности, представляются в виде разности двух новых неотрицательных переменных:

Проиллюстрируем применение описанных выше рекоменда­ций на примере. Пусть задана задача линейного программирова­ния (D, f) в общей форме с целевой функцией

и множеством допустимых планов D, определенным системой уравнений и неравенств,

Тогда в соответствии со сформулированными правилами эк­вивалентная каноническая задача будет иметь вид , где:

а множество определено как:

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

Векторная форма записи КЗЛП и ее примене­ние. Рассмотрим каноническую задачу линейного программи­рования

f(x)=cxmax, D=x RnAx = b, x 0

Обозначим через aj столбцы матрицы А и будем рассматри­вать их как векторы пространства Rm. Тогда каждому допусти­мому плану КЗЛП — n-мерному вектору х — соответствует неотрицательная линейная комбинация столбцов aj, равная столбцу b Rm :

x1 a1 + x2 a2 +…+xn an = b, xi 0, i1:n (1.14)

Такое представление ограничений КЗЛП обычно называют векторной формой записи.

Векторы aj, j1:n будем называть векторами требований задачи (D, f), а вектор b — вектором ограничений. Множе­ство всех неотрицательных линейных комбинаций столбцов аj с геометрической точки зрения может быть представлено как многогранный выпуклый конус, натянутый на систему векто­ров аj в пространстве Rm (рис. 1.3).

Соответственно, вопрос о существовании допустимого пла­на задачи (D, f) равнозначен вопросу о принадлежности векто­ра b данному конусу, а компоненты хj некоторого допустимого плана x D являются не чем иным, как коэффициентами раз­ложения вектора ограничений задачи b по векторам требо­ваний аj.

Такое представление КЗЛП получило название второй гео­метрической интерпретации.

В дальнейшем без ограничения общности можем предпола­гать, что число уравнений, задающих множество D, меньше или равно числу переменных задачи п). Действительно, если это не так, то либо система уравнений Ах = b несовместна (и, зна­чит, множество D пустое), либо содержит избыточные (линейно зависимые) уравнения.

Если некоторые т столбцов матрицы А явля­ются линейно независимыми, то они образуют базис в простран­стве Rm, и их, вообще говоря, будет достаточно для представ­ления вектора b в виде линейной комбинации указанных столбцов. Это означает, что остальные столбцы войдут в дан­ное разложение с нулевыми коэффициентами. Если к тому же коэффициенты линейной комбинации окажутся неотрицатель­ными, то мы получаем так называемый базисный допустимый план х, у которого не более т компонентов отличны от нуля. Сформулируем определение базисного плана более строго, так как это одно из фундаментальных понятий теории линейного программирования.

Рис. 1.3

Пусть задана некоторая каноническая ЗЛП (D,f), А — матрица системы ограничений задачи, и = 11, а12,..., аjm} — линейно независимая система столбцов матрицы А, образующая базис Rm. Обозначим множе­ство номеров столбцов, входящих в систему , через N() = {j1, j2,…, jm} . План х называется базисным планом задачи (D,f), если его компоненты, соответствующие базисным столбцам и называемые базисными компонен­тами, больше или равны нулю (хj 0, jN()), а все остальные компоненты (небазисные) равны нулю (xj=0, j N())

Базисный план х называется невырожденным, если все его базисные компоненты строго положительны, и вы­рожденным в противном случае.

1.3.2. Свойства базисных планов. Следующая теорема трактует понятие базисного плана в терминах первой геометри­ческой интерпретации ЗЛП.

Теорема 1.3. Каждый допустимый базисный план яв­ляется угловой точкой множества допустимых пла­нов D.

Доказательство.

Ради простоты положим, что базисными векторами являют­ся первые т столбцов матрицы А, т. е. = {a1,a2,...,am}. Тогда утверждение теоремы 1.3 может быть переформулировано сле­дующим образом:

Если существует такой п-мерный вектор

xj 0, j 1:k, (k m)

что x1a1 +x2a2 +... + xkak =b, то х есть угловая точка множе­стваD.

Проведем доказательство от противного, т. е. предположим, что рассматриваемый базисный план х не является угловой точ­кой множества D. Тогда ее можно представить в виде выпуклой комбинации некоторых двух различных допустимых планов х1 их2:

x = x1 + (1-)x2, 0 1

В координатной форме последнее утверждение означает

0  1, j 1: n

Поскольку последние (п - k) компоненты вектора х по пред­положению равны 0, а числа , и , (1-)>0, то эти же компоненты в векторах х1 и х2 также равны 0. Поэтому, с учетом допустимости планов х1 и х2, можно утверждать, что

(1.15)

(1.16)

Вычитая из (1.15) (1.16), получим

(1.17)

Так как векторы а12,...,аk — линейно независимы, то коэф­фициенты , из чего следует, что х1 = х2 . Это противоречит предположению, что х1 и я2 являются раз­личными угловыми точками множества D. Следовательно, х не может быть представлен в виде выпуклой комбинации двух точек D и по определению является угловой точкой данного множества.

Интересно отметить, что справедливо и обратное утвержде­ние, которое приведем без доказательства:

Если х — угловая точка множества D, то она являет­ся допустимым базисным планом задачи (D, f).

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]