Методическая разработка по курсу «системы принятия решений» Нижний Новгород, 2010 icon

Методическая разработка по курсу «системы принятия решений» Нижний Новгород, 2010


Смотрите также:
«Задачи по геометрии» (методическая разработка) Нижний Новгород...
Методические указания (сборник задач) по курсу «системы принятия решений»...
Конспект лекций по курсу «теория чисел» Методическая разработка...
Нижний Новгород 2005 г. Удк 517. 3 Ббк в167. 222 к-84 к-84 Несобственные интегралы первого рода...
Рабочая программа по курсу «Разработка управленческих решений» Специальность 080504...
Рабочая программа по курсу «теория принятия решения»...
Конкурс школьных сочинений «Нижегородский Кремль»...
Сборник статей по материалам Всероссийской научной конференции с международным участием...
Исследование операций построение...
Общие положения теории принятия решений Глава Задачи принятия решений...
Темы курсовых проектов по дисциплине «Теории принятия решений» Можаева Г. В...
Учебное пособие Нижний Новгород 2010 ббк к курникова М. В...



Загрузка...
страницы:   1   2
скачать



ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

Государственное образовательное учреждение

высшего профессионального образования


НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ

УНИВЕРСИТЕТ

им. Н.И.ЛОБАЧЕВСКОГО

НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ





Факультет вычислительной математики и кибернетики


Кафедра информатики и автоматизации научных исследований


МЕТОДИЧЕСКАЯ РАЗРАБОТКА ПО КУРСУ «СИСТЕМЫ ПРИНЯТИЯ РЕШЕНИЙ»


Нижний Новгород, 2010

Методическая разработка для самостоятельной работы студентов специальности «Прикладная информатика» факультета ВМК по курсу «Системы принятия решений» / Нижегородский государственный университет, 2010, с 30.


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


Методическая разработка подготовлена доцентом Коротченко А.Г., Сморяковой В.М., Кучиной О.М., Малаховской Д.А.


Рецензент: доцент Гришагин В.А.



  1. ^ Задачи поиска экстремума функций одной переменной


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

Необходимость отдельного рассмотрения численных методов поиска экстремума функций одной переменной объясняется следующими обстоятельствами.

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

, (1)

где мерное евклидово пространство, и для ее решения используется метод, задаваемый соотношением вида:

(2)

где числовой параметр.

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

, (3)

либо из условия

.

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

Во-вторых, решение задачи (1) можно находить с помощью так называемой схемы повторной оптимизации, основанной на том, что



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



а затем минимизировать эту функцию и тем самым находить решение задачи



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

О других способах сведения задачи поиска экстремума функций многих переменных к задаче поиска экстремума функций одной переменной можно прочитать в /1,2/.

В-третьих, одной из особенностей задач оптимального проектирования является то, что в систему ограничений, описывающих требования, которые накладываются на характеристики проектируемого устройства, могут входить характеристики , зависящие от вектора варьируемых параметров и параметра . Таким параметром может быть частота, время, температура и т.д., см. /3/. Например, при проектировании фильтров технические требования к частотным характеристикам связаны с выполнением условий

(4)

для всех значений частоты . Здесь компонентами вектора варьируемых параметров являются значения сопротивлений, емкостей, индуктивностей. Учет ограничений (4) приводит к анализу неравенств

(5)

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

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

Пусть решается задача

(6)

где функция принадлежит некоторому классу функций F, а алгоритм ее решения может быть выбран из некоторого класса алгоритмов А. Качество решения задачи (6) для некоторой функции при помощи алгоритма будем оценивать критерием эффективности



Отметим, что фиксация класса F вовсе не означает, что выбираемый алгоритм предназначен для минимизации многих функций. Даже если требуется минимизировать одну единственную функцию, на этапе предварительного исследования приходится устанавливать наличие или отсутствие свойств функции, важных с точки зрения выбора оптимизационного алгоритма. Установив свойства функции, которые будут приняты во внимание при выборе алгоритма, мы тем самым фиксируем класс F. Задание же класса А алгоритмов, из которого будет выбираться алгоритм , зависит от того, можно ли вычислять производную функции или только ее значения, от порядка поступления информации, получаемой в результате вычислений, возможностей по ее хранению, обработке и т.д. Величина служит мерой эффективности решения задачи минимизации функции алгоритмом . В качестве критерия может фигурировать, например, точность (погрешность) решения задачи при заданном объеме вычислений (числе шагов алгоритма) или число шагов алгоритма, требуемое для получения решения задачи с заданной точностью.

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



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

(7)

Алгоритм называется оптимальным на классе функций F, если

. (8)

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

Возможны и другие подходы к построению оптимальных алгоритмов, см. /1/.

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

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

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


  1. ^ Алгоритмы оптимизации унимодальных функций

Определение 1.

Функция называется унимодальной на D, если существует такая точка , что




На рис.1 приведены примеры унимодальных функций.

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

Свойство 1.

Пусть функция унимодальна на D, . Тогда если , то . При имеем .

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

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





Рис.1

Пусть N – число точек, в которых можно вычислить функцию . Качество работы конкретного алгоритма поиска минимума функции будем оценивать критерием эффективности, равным длине отрезка локализации точки минимума. В дальнейшем этот отрезок будем называть также отрезком локализации. При этом под отрезком локализации понимается такой отрезок, в котором с учетом результатов вычислений функции содержится точка минимума этой функции. Так, например, если функция вычислена в двух точках и сложилась ситуация, показанная на рис.2, то в силу свойства 1, точка




Рис.2

Определение 2.

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

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

^ Пассивный алгоритм поиска минимума .

В алгоритме точки вычисления функции задаются следующим образом:



где малое положительное число.

После вычисления функции в точках определим . Тогда, обозначив и , в силу свойства 1 находим, что , т.е. этот отрезок является отрезком локализации точки минимума функции . Центр этого отрезка принимается за аппроксимацию точки . В случае, когда = точка , и за аппроксимацию точки принимается центр отрезка . Гарантированное значение критерия эффективности на классе функций равно:


(9)


Погрешность же в определении не превышает половины длины отрезка .

Теорема 1.

Алгоритм при является оптимальным пассивным алгоритмом в классе функций Fu. При оптимального пассивного алгоритма в классе функций Fu не существует, но алгоритм -оптимален /4/.


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

Рассмотрим случай, когда N-нечетное. Тогда



.

Доказательство будем проводить методом от противного.

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

Тогда должна быть выполнена следующая система неравенств:



В результате сложения левых и правых частей этих неравенств получаем, что , то есть предположение, сделанное нами, не верно. Следовательно, при N - нечетом алгоритм оптимален.

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


(10)

Складывая левые и правые части неравенств (10), получаем, что или .

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

Следовательно, при N-четном алгоритм -оптимален.

Определение 3.

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

Метод дихотомии (половинного деления).

Для положим , , ε>0.

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

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

(11)

Алгоритм является блочным алгоритмом с блоками (при ), а в каждом блоке проводится по два вычисления функции. Подробнее о блочных алгоритмах можно прочитать в /4/.

Определение 4.

Алгоритм поиска минимума функции называется последовательным, если перед началом очередного вычисления функции становится известным результат предыдущего вычисления.

Метод Фибоначчи .

Пусть F0 = F1 = 1, Fi+1 = Fi + Fi-1, i=1,2,…. (12)

Числа, удовлетворяющие данному рекуррентному соотношению, называются числами Фибоначчи. Найдем решение рекуррентного уравнения (12). Будем искать его решение среди геометрических прогрессий с -ым членом равным . Тогда  или . Ненулевые корни последнего уравнения равны . Обозначив , получим  . Таким образом, последовательности  и удовлетворяют уравнению (12). Ему же удовлетворяет и любая линейная комбинация этих последовательностей: . Коэффициенты c1, c2 найдем из условия F0 = F1 = 1. Окончательно получим

,

откуда следует, что

. (13)

Отметим, что для вычисления чисел Фибоначчи удобнее переписать (12) в виде

где

после чего числа вычисляются с помощью возведения целочисленной матрицы C в i–ую степень, i=1,2,… /5/:





Будем считать, что . Это не ограничивает общности рассмотрений, т.к. заменой переменной , все результаты, полученные для отрезка [0,1] переносятся на случай . Проведем первые два вычисления функции в точках , , расположенных симметрично относительно середины отрезка [0, 1].

Если, то отрезком локализации точки минимума является отрезок , когда – отрезок , в случае же – отрезок .



Рис.3

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

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

, см. рис.4.

После -го шага точка  оказывается в середине отрезка локализации и ,. Ясно, что гарантированное значение критерия эффективности (длина отрезка локализации точки минимума после N вычислений) в случае равно


. (14)



Рис.4

Сказанное выше можно проиллюстрировать с помощью следующей таблицы, где i – число проведенных вычислений функции по алгоритму , li – длина отрезка локализации точки минимума [ai, bi] после i проведенных вычислений, - расстояние от точки [ai, bi] до ближнего конца этого отрезка, - расстояние от точки до дальнего конца отрезка [ai, bi]. Здесь начальным отрезком локализации является отрезок [0, 1].


i







2















i







i+1







N-1







N











Теорема 2.

Метод Фибоначчи является -оптимальным последовательным алгоритмом. Оптимального последовательного алгоритма в классе унимодальных функций, заданных на отрезке, не существует /4,6/.

Отметим, что на каждом шаге метода Фибоначчи, точка , лежащая внутри отрезка локализации, делит его в отношении двух последовательных чисел Фибоначчи, т.е. отношение длины всего отрезка локализации к большей из его частей, на которые он разбивается точкой , равно . В силу (13) Fj+1/Fjτ при j→∞.

Определим теперь алгоритм золотого сечения , в котором отрезок локализации точки минимума на каждом шаге за счет выбора новой точки вычисления функции будет поделен в отношении τ. Для этого в случае D=[0, 1], первые две точки следует задать в виде: , . Выбор же очередной точки вычисления осуществляется так же, как и в методе Фибоначчи. Очевидно, что в случае D=[a, b] после N вычислений функции имеем:

(15)

Сравнивая теперь значения критериев эффективности для (9), (11), (14), (15) отрезков локализации точки минимума после N вычислений при применении алгоритмов видим, что алгоритмы обеспечивают экспоненциальное уменьшение длины исходного отрезка [a, b] . Алгоритм же обеспечивает лишь линейное уменьшение. Однако следует учитывать, что в ряде случаев порядок поступления информации и условия для ее обработки позволяют применять только пассивные алгоритмы. Это связано, например, с постановкой и проведением физических экспериментов, результатом которых являются значения минимизируемой функции.

Учитывая (13), находим, что

,

т.е. при больших N длина отрезка локализации точки минимума после N вычислений в алгоритме золотого сечения примерно только на 17% больше, чем в методе Фибоначчи. Однако алгоритм α4 обладает тем существенным преимуществом, что в нем вычисления можно прекратить в любой момент, т.к. точки вычисления функции не зависят от общего числа вычислений N.

При практическом использовании методов Фибоначчи и золотого сечения следует иметь в виду, что выбор на каждом шаге точки очередного вычисления функции симметрично точке ранее проведенного вычисления приводит к быстрому накоплению вычислительной погрешности. Так, если применяется метод золотого сечения, то для определения точек x1, x2 следует задать приближенно значение числа . Поэтому точки x1, x2 будут заданы с некоторой погрешностью. Оказывается, что с ростом числа шагов алгоритма эта погрешность будет расти очень быстро, т.е. отрезок локализации [ai , bi] и очередная точка вычисления функции xi+1 уже не при очень большом значении i будет сильно отличаться от тех, которые получились бы при работе с точными данными. Данный факт подтверждается и численными экспериментами на ЭВМ. Убедимся в этом, рассмотрев следующий пример работы алгоритма золотого сечения α4.

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







1)


2) Отрезком локализации точки минимума является отрезок .







3) Отрезок локализации точки минимума







  1. Отрезок локализации точки минимума







  1. Отрезок локализации точки минимума







6) Отрезок локализации точки минимума







  1. Отрезок локализации точки минимума







8) Отрезок локализации точки минимума







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

Чтобы избежать этого неприятного факта, следует использовать алгоритмы  в модифицированных вариантах.

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



для метода Фибоначчи,  – для метода золотого сечения. В качестве же точки очередного вычисления функции следует выбирать ту из точек , которая наиболее удалена от точки и .

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

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

Определение 5.

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

Аналогично понятию, ε-оптимального алгоритма вводится понятие ε-последовательно-оптимального алгоритма.

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

Отметим здесь, что если на унимодальную функцию наложить дополнительное условие (условие Липшица)

, (16)

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

Рассмотрим теперь оптимальную процедуру поиска минимума унимодальной и дифференцируемой на отрезке [a,b] функции при условии, что в процессе поиска можно вычислять как значение функции , так и ее производную в любой точке отрезка [a,b] /7/.

Пусть r – число возможных вычислений функции, а p –число возможных вычислений ее производной. Заметим, что если производная вычислена в некоторой точке отрезка локализации точки минимума, то после этого вычисления отрезком локализации точки минимума будет отрезок , если , либо отрезок , когда .

Если же , то точка является искомой точкой минимума унимодальной функции. Максимальное гарантированное сокращение отрезка локализации минимума в результате вычисления производной достигается, если , т.е. при методе половинного деления. Метод же золотого сечения сокращает отрезок локализации минимума в τ раз за одно вычисление функции. Тогда начальный отрезок [a,b] при достаточно больших r, p в результате вычислений можно сократить в раз, где .

Такое сокращение получится, если сначала вычислить производную в p точках, применяя метод половинного деления, а затем вычислить функцию в r точках при помощи метода золотого сечения.

Примем трудоемкость или стоимость вычисления функции в одной точке за единицу и пусть трудоемкость вычисления производной  в одной точке равна q. Будем считать, что числа r, p не заданы, а суммарная трудоемкость вычислений ограничена неравенством:

 . (17)

Здесь N –заданная суммарная трудоемкость вычислений. Найдем величины r и p из условий максимального сокращения длины исходного отрезка [a, b], т.е. из условия максимизации величины при выполнении ограничения (17):

(18)

, . Ограничения на и должны быть дополнены условием их целочисленности.

Перейдём от задачи (18), используя монотонность функции и опуская условие целочисленности переменных, к вспомогательной задаче:



,

или к эквивалентной ей задаче:

(19)



.

Задача (19) является задачей линейного программирования.

Выпишем функцию Лагранжа этой задачи:

.

Тогда условия оптимальности в дифференциальной форме для задачи (19) будут иметь вид:

, , (20)

, , (21)

, (22)

. (23)

Решая систему (20) – (23) получим:





.

При достаточно большом приближенное решение задачи (18) будет иметь вид:



Квадратные скобки означают целую часть числа.

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

.

В данном случае поиск выгоднее вести, пользуясь лишь вычислением функции.




Скачать 362,18 Kb.
оставить комментарий
страница1/2
Дата29.09.2011
Размер362,18 Kb.
ТипМетодическая разработка, Образовательные материалы
Добавить документ в свой блог или на сайт

страницы:   1   2
Ваша оценка этого документа будет первой.
Ваша оценка:
Разместите кнопку на своём сайте или блоге:
rudocs.exdat.com

Загрузка...
База данных защищена авторским правом ©exdat 2000-2017
При копировании материала укажите ссылку
обратиться к администрации
Анализ
Справочники
Сценарии
Рефераты
Курсовые работы
Авторефераты
Программы
Методички
Документы
Понятия

опубликовать
Загрузка...
Документы

наверх