- 08, Jun 2020
- #1
Основной принцип динамического программирования.
Решение задач, относящихся к программированию, зачастую может потребовать множества системных ресурсов, которые неоправданно будут заняты в течение долгого времени.
Как показывает опыт различных наук, применение аналитического подхода к решению сложных задач обеспечивает их решение в более короткие сроки, чем попытки решения сложной задачи в комплексе.
Именно этот опыт был использован при разработке теории динамического программирования.
Итак, основной целью динамического программирования является создание оптимальной подструктуры, которая позволит выделить оптимальное решение малых задач, являющихся неотъемлемыми элементами сложной задачи.
Решение будет считаться оптимальным в том случае, если оно сможет обеспечить решение исходной задачи.
Если привести в качестве примера ситуацию из жизни, то при раздумьях туриста, в какие места поехать на Кипре, эта задача трансформируется в подзадачи «свобода в использовании видами транспорта», «богатство культурного фонда города», «возможность посещения магазинов».
При решении этих подзадач выделяются основные значимые моменты для туриста в посещении Кипра в целом, после чего формируется решение относительно маршрута поездки.
Динамическое программирование задача которого состоит в решении сложных проблем, включает в себя несколько этапов выделения оптимальной подструктуры.
Первым этапом является разбиение большой задачи на несколько подзадач размером значительно меньше.
На втором этапе, если решение подзадачи будет сложным, то рекурсивно проходим все три этапа с подзадачей.
Третий этап заключается в использовании решения, которое мы нашли для подзадачи, с целью окончательного решения сложной задачи, с которой начинался первый этап.