- •1, 4, 7. Решение нелинейных уравнений
- •2.Транспортная задача линейного программирования
- •9. Файловый ввод-вывод
- •12. Системный анализ
- •17.Смешанные, стратегии в матричных играх. Основная теорема матричных игр.
- •18. Моделювання випадкових факторів.
- •19. Первая интерполяционная формула Ньютона.
- •20. Числові характеристики випадкових величин.
- •21. Моделирование параллельных процессов.
- •22(19,25). Наближення функцій. Задача інтерполяції.
- •23. Математичне сподівання випадкової величини, його властивості та формули для обчислювання.
- •26. Булева алгебра
- •27. Класифікація моделей.
- •28. Численное дифференцирование .
- •30. Полиморфизм
- •31. Численное интегрирование.
- •32. Канонічні форми булевих функцій, способи побудови канонічних форм
- •33. Наследование
- •36.Об'єктно - орієнтоване програмування та його головні принципи
- •40. Методи розв'язування задачі Коші системи звичайних диференціальних рівнянь. Метод Ейлера. Методи типу Рунге-Кутта. Методи з вибором кроку інтегрування.
- •Розв’язування систем однорідних рівнянь з сталими коефіцієнтами методом Ейлера.
- •41. Методи спрощення булевих функцій
- •42. Процедури та функції. Призначення процедур та функцій. Формальні та фактичні параметри. Глобальні та локальні дані. Параметри значення і параметри змінні.
- •43. Методи розв'язування крайових задач системи звичайних диференціальних рівнянь. Різницеві схеми для рівнянь другого порядку. Методи прогонки.
- •44. Повні системи булевих функцій та базиси.
- •45. Використання стеку для організації рекурсивних обчислень.
- •46. Общая задача линейного программирования
- •50. Двійковий пошук на впорядкованій множині.
- •51. Динамічні структури даних. Стеки. Черги.
- •52. Симплекс-перeтворення. Симплекс-метод.
- •53. Алгоритми сортування.
- •54. Динамічні структури даних. Списки.
- •55. Теорема двоїстості. Двоїстий критерій оптимальності. Двоїстий симплекс-метод.
- •56. Керування подіями. Програмування обробки подій.
- •Виды событий.
- •События от мышки.
- •События от клавиатуры.
- •События сообщений.
- •"Пустые" события.
- •Передача событий.
- •57. Вказівники. Розподіл динамічної пам’яті.
- •58. Транспортна задача лінійного програмування. Методи знаходження початкового базисного розв'язку.
- •6.2. Умова існування розв'язку транспортної задачі
- •59. Математичне моделювання і диференціальні рівняння.
- •60. Мови програмування та їх класифікація
- •61. Транспортна задача лінійного програмування. Метод потенціалів.
- •6.2. Умова існування розв'язку транспортної задачі
- •6.3. Метод потенціалів
- •6.3.1. Алгоритм методу потенціалів складається з таких етапів.
- •6.3.2. Методи побудови опорного плану тз
- •Метод північно-західного кута
- •62.Задачі і методи математичного моделювання і системного аналізу. Приклади математичних моделей для детермінованих і випадкових процесів(див. 18).
- •63. Реляційна модель бази даних.
- •65. Моделювання процесів керування у живій природі біологічних, екологічних, процесів автоматизованого керування.
- •66. Інформаційна модель концептуального рівня. Основні поняття. Еволюція концепції бази даних. Типи запитів.
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)=cx → max, 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)
Так
как векторы а1,а2,...,аk
— линейно независимы, то коэффициенты
,
из чего следует, что х1
= х2
. Это противоречит
предположению, что х1
и я2
являются различными угловыми точками
множества D.
Следовательно, х
не может быть представлен
в виде выпуклой комбинации двух точек
D
и по определению
является угловой точкой данного
множества. ▲
Интересно отметить, что справедливо и обратное утверждение, которое приведем без доказательства:
Если х — угловая точка множества D, то она является допустимым базисным планом задачи (D, f).
В завершение параграфа необходимо отметить практическое значение установленной связи между угловыми точками и допустимыми базисными решениями: она позволяет формализовать (и тем самым существенно упростить) процесс перехода от одной угловой точки к другой
