Министерство образования республики беларусь белорусский государственный университет гуманитарный факультет Кафедра информационных технологий





НазваниеМинистерство образования республики беларусь белорусский государственный университет гуманитарный факультет Кафедра информационных технологий
страница6/11
Дата публикации30.08.2013
Размер0.49 Mb.
ТипДоклад
100-bal.ru > Математика > Доклад
1   2   3   4   5   6   7   8   9   10   11

6 Динамическое программирование


Динамическое программирование — способ решения сложных задач путём разбиения их на более простые подзадачи. 

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

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

Пусть, например, процесс управления некоторой системой состоит из m шагов (этапов), на i-м шагу управление i переводит систему из состояния xi-1 в новое состояние xi, которое зависит от xi-1 и yi:
xi = xi(yi, xi-1).


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


(k = 2, ..., m - 1)
f1(x0) = F*,
где

(k = 1, ..., m).

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

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

Динамическое программирование обычно придерживается двух подходов к решению задач:

  • Нисходящее динамическое программирование: задача разбивается на подзадачи меньшего размера, они решаются и затем комбинируются для решения исходной задачи. Используется запоминание для решений часто встречающихся подзадач.

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

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

  1. Разбиение задачи на подзадачи меньшего размера.

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

  3. Использование полученного решения подзадач для конструирования решения исходной задачи.

Подзадачи решаются делением их на подзадачи ещё меньшего размера и т. д., пока не приходят к тривиальному случаю задачи, решаемой за константное время (ответ можно сказать сразу). К примеру, если нам нужно найти n!, то тривиальной задачей будет 1! = 1 (или 0! = 1).

Перекрывающиеся подзадачи в динамическом программировании означают подзадачи, которые используются для решения некоторого количества задач (не одной) большего размера (то есть мы несколько раз проделываем одно и то же). Ярким примером является вычисление последовательности Фибоначчи,  и  — даже в таком тривиальном случае вычисления всего двух чисел Фибоначчи мы уже посчитали дважды. Если продолжать дальше и посчитать , то посчитается ещё два раза, так как для вычисления будут нужны опять и . Получается следующее: простой рекурсивный подход будет расходовать время на вычисление решение для задач, которые он уже решал.

Чтобы избежать такого хода событий мы будем сохранять решения подзадач, которые мы уже решали, и когда нам снова потребуется решение подзадачи, мы вместо того, чтобы вычислять его заново, просто достанем его из памяти. Этот подход называется кэширование. Можно проделывать и дальнейшие оптимизации — например, если мы точно уверены, что решение подзадачи нам больше не потребуется, можно выкинуть его из памяти, освободив её для других нужд, или если процессор простаивает и мы знаем, что решение некоторых, ещё не посчитанных подзадач, нам понадобится в дальнейшем, мы можем решить их заранее.

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

  • перекрывающиеся подзадачи;

  • оптимальная подструктура;

  • возможность запоминания решения часто встречающихся подзадач.

Пример задач динамического программирования смотрите в приложении 4.
1   2   3   4   5   6   7   8   9   10   11

Похожие:

Министерство образования республики беларусь белорусский государственный университет гуманитарный факультет Кафедра информационных технологий iconРеспублики Беларусь Белорусский государственный университет Юридический факультет
Принятие решения по акту проверки и порядок его обжалования в Республике Беларусь 3
Министерство образования республики беларусь белорусский государственный университет гуманитарный факультет Кафедра информационных технологий iconРеспублики Беларусь Белорусский Государственный Университет
Интересный факт из истории создания Java-технологии, или удар по «пакету Windows» 29
Министерство образования республики беларусь белорусский государственный университет гуманитарный факультет Кафедра информационных технологий iconРеспублики Беларусь Учреждение образования «Белорусский государственный...
Составители: В. А. Овсянкин, кандидат педагогических наук, доцент, Г. Н. Сущенко, старший преподаватель
Министерство образования республики беларусь белорусский государственный университет гуманитарный факультет Кафедра информационных технологий iconМинистерство образования и науки РФ новосибирский государственный...
Когда появляется изображение цепи ордена Андрея Первоз­ванного на российском гербе
Министерство образования республики беларусь белорусский государственный университет гуманитарный факультет Кафедра информационных технологий iconРеспублики Беларусь Белорусский государственный университет Управляющие...
Если необходимо обеспечить выполнение цикла хотя бы один раз, то удобно использовать оператор цикла с постусловием: 20
Министерство образования республики беларусь белорусский государственный университет гуманитарный факультет Кафедра информационных технологий iconДмитрий Олегович Роль информационных технологий в обеспечении деятельности...
Роль информационных технологий в обеспечении деятельности банковской системы Республики Беларусь на примере сэд «Канцлер»
Министерство образования республики беларусь белорусский государственный университет гуманитарный факультет Кафедра информационных технологий iconСовершенствование правового регулирования таможенных процедур переработки...
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Московский государственный...
Министерство образования республики беларусь белорусский государственный университет гуманитарный факультет Кафедра информационных технологий iconГосударственный образовательный стандарт высшего профессионального...
На основании статьи 35 Закона Республики Беларусь от 20 июля 2007 года "Об обращении с отходами" Министерство природных ресурсов...
Министерство образования республики беларусь белорусский государственный университет гуманитарный факультет Кафедра информационных технологий iconКлассификация и кодирование информации; системы классификации; методы кодирования
Министерство образования республики беларусь учреждение оразования «мозырский государственный педагогический университет имени И....
Министерство образования республики беларусь белорусский государственный университет гуманитарный факультет Кафедра информационных технологий iconРеспублики Беларусь Учреждение образования «Белорусский государственный...
Контрольная работа предназначена для самостоятельного выполнения студентами с целью проверки качества освоения ими теоретического...
Министерство образования республики беларусь белорусский государственный университет гуманитарный факультет Кафедра информационных технологий iconПояснительная записка программа интернатуры по оториноларингологии...
Заведующая кафедрой болезней уха, горла, носа учреждения образования «Белорусский государственный медицинский университет», кандидат...
Министерство образования республики беларусь белорусский государственный университет гуманитарный факультет Кафедра информационных технологий iconРеспублики Беларусь Учреждение образования «Белорусский государственный...
Дневник здоровья предназначен для определения физического состояния студентов бгпу, записи заданий преподавателя для самостоятельных...
Министерство образования республики беларусь белорусский государственный университет гуманитарный факультет Кафедра информационных технологий icon«московский психолого-социальный университет» факультет информационных технологий утверждаю
Рабочая программа предназначена для бакалавров кафедр Информатики и математики и Информационных технологий очной и заочной формы...
Министерство образования республики беларусь белорусский государственный университет гуманитарный факультет Кафедра информационных технологий iconМинистерство образования и науки российской федерации правительство...
Правила определяют основные требования технической эксплуатации железной дороги
Министерство образования республики беларусь белорусский государственный университет гуманитарный факультет Кафедра информационных технологий iconПрименение технологий olap и Data Mining для поддержки принятия стратегических решений в вузе
Дагестанский государственный университет, факультет информатики и информационных технологий, Махачкала, Россия
Министерство образования республики беларусь белорусский государственный университет гуманитарный факультет Кафедра информационных технологий iconУчебно-методический комплекс по модулю «астрономия» (б кв ) Факультет...
...


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск