Автор: Пользователь скрыл имя, 13 Декабря 2011 в 17:15, курсовая работа
Работа над данным курсовым проектом позволяет закрепить знания по предмету «Математические методы исследования операций».
В наше время наука уделяет все большое внимание вопросам организации и управления, это приводит к необходимости анализа сложных целенаправленных процессов под углом зрения их структуры и организации. Потребности практики вызвали к жизни специальные методы, которые удобно объединять под названием «исследование операций». Под этим термином понимается применение математических, количественных методов для обоснования решений во всех областях целенаправленной человеческой деятельности.
Далее мы будем о говорить об одномерном, двумерном и многомерном динамическом программировании при k = 1, k = 2, k > 2, соответственно.
Следующая задача одномерного
динамического
Задача
1. Посчитать число
При n < 32 полный перебор потребует
нескольких секунд, а при n = 64 полный
перебор не осуществим в
При n = 1, n = 2 ответ очевиден. Допустим, что мы уже нашли Kn – 1, Kn – 2 — число таких последовательностей длины n – 1 и n – 2.
Посмотрим, какой может быть последовательность длины n. Если последний ее символ равен 0, то первые n – 1 — любая правильная последовательность длины
n – 1 (не важно, заканчивается она нулем или единицей — следом идет 0). Таких последовательностей всего Kn – 1. Если последний символ равен 1, то предпоследний символ обязательно должен быть равен 0 (иначе будет две единицы подряд), а первые n – 2 символа — любая правильная последовательность длины n – 2, число таких последовательностей равно Kn – 2.
.
Таким образом, K1 = 2, K2 = 3, Kn = Kn – 1 + Kn – 2 при n > 2. То есть данная задача фактически сводится к нахождению чисел Фибоначчи.
5 Двумерное динамическое программирование.
Классической задачей
В разных формулировках
Приведем пару формулировок
Задача
2. Дано прямоугольное поле размером
n*m клеток. Можно совершать шаги длиной
в одну клетку вправо или вниз. Посчитать,
сколькими способами можно
Задача 3. Дано прямоугольное поле размером n*m клеток. Можно совершать шаги длиной в одну клетку вправо, вниз или по диагонали вправо-вниз. В каждой клетке записано некоторое натуральное число. Необходимо попасть из верхней левой клетки в правую нижнюю. Вес маршрута вычисляется как сумма чисел со всех посещенных клеток. Необходимо найти маршрут с минимальным весом.
Для всех таких задач
Рассмотрим более подробно
.
Таким образом, для клетки (i, j) число маршрутов A[i][j] будет равно
A[i – 1][j] + A[i][j – 1], то есть задача сводится к двум подзадачам. В данной реализации используется два параметра — i и j — поэтому применительно к данной задаче мы говорим о двумерном динамическом программировании.
Теперь мы можем пройти
В задаче 3 в клетку с координатами (i, j) мы можем попасть из клеток с координатами (i – 1, j), (i, j – 1) и (i – 1, j – 1). Допустим, что для каждой из этих трех клеток мы уже нашли маршрут минимального веса, а сами веса поместили в W[i – 1][j], W[i][j – 1],
W[i – 1][j – 1]. Чтобы найти минимальный вес для (i, j), необходимо выбрать минимальный из весов W[i – 1][j], W[i][j – 1], W[i – 1][j – 1] и прибавить к нему число, записанное в текущей клетке:
W[i][j] = min(W[i–1][j], W[i][j – 1], W[i – 1][j – 1]) + A[i][j];
Данная задача осложнена тем, что необходимо найти не только минимальный вес, но и сам маршрут. Поэтому в другой массив мы дополнительно для каждой клетки будем записывать, с какой стороны в нее надо попасть.
На следующем рисунке приведен
пример исходных данных и
.
В каждую из уже пройденных клеток ведет ровно одна стрелка. Эта стрелка показывает, с какой стороны необходимо прийти в эту клетку, чтобы получить минимальный вес, записанный в клетке.
После прохождения всего
Раздел 2. Практическая часть.
Заключение.
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
Интернет-ресурсы:
1) Bestreferat.ru
1. Таха Х.
Введение в исследование
2. Кузнецов
Ю. Н. Математическое
3. Вентцель Е. С. Исследование операций. –М.: Наука,1976.
4. Вентцель Е. С. Элементы динамического программирования. –М.: Наука,1987.
5. Акоф Р., Сасиени
М. Основы исследования
6. Вентцель Е. С. Исследование операций: задачи, принципы, методология. –М.: Наука,1988.
7. Карманов
В. Т. Математическое
8. Зайченко Ю. П. Исследование операций. –К.: Высшая школа,1985.
9. Аоки М.
Введение в методы оптимизации.
10. Беллман
Р., Дрейфус С. Прикладные задачи
динамического
11. Муну
М. Математическое
2) Bankreferatov.ru
3) Wikipedia.ru