Динамическое программирование, Окулов С.М., Пестов О.А., 2015.
В данной книге систематизирован материал по одному из методов проектирования алгоритмов в информатике — динамическому программированию. Предлагаемые задачи решаются фактически по одной схеме, основанной на данном методе, однако понять, что задача решается этим методом, очень непросто. Для этого кроме знаний требуется усилие подготовленного к решению таких задач интеллекта. Именно этому способствуют содержание книги и стиль изложения материала в ней.
Разобраны задачи, предлагавшиеся школьникам на всероссийских олимпиадах по информатике разных лет, а также на турнирах и конкурсах.
Для учащихся старших классов, студентов и преподавателей информатики.

Граф зависимостей задач.
Итак, множество решаемых задач определено. Известна взаимосвязь задач — как получать новые решения на основе уже найденных. В неявном виде взаимосвязь задач, прописанная в рекуррентных соотношениях, говорит об очередности их решения. В методе динамического программирования действия по решению задачи выполняются шаг за шагом, и на каждом шаге решается определенная подзадача. Введем понятие: граф зависимостей задач G = (V,Е). У этого графа вершины соответствуют задачам, а ребра — зависимостям. Наличие ребра (u,v) означает, что решение задачи v зависит от решения задачи u.
Граф позволяет определить, каким образом организовать порядок вычислений. Пусть граф зависимостей задач имеет вид, представленный на рис. 2.2. Единственной задачей, не требующей решения других задач, является v3 — именно с нее необходимо начинать пошаговый процесс. Далее, зная решение u3, мы можем решить задачи v5 и v2.
ОГЛАВЛЕНИЕ.
Вместо предисловия.
Введение.
Глава 1. Простые задачи.
1.1. Числа Фибоначчи.
1.2. Биномиальные коэффициенты, или Нахождение числа сочетаний.
1.3. Наибольший квадрат.
1.4. Задача о Черепашке.
Глава 2. Основной принцип и метод реализации на основе рекуррентных соотношений.
2.1. Вводные замечания.
2.2. Множество решаемых задач, вычисляемая функция и рекуррентные соотношения.
2.3. Граф зависимостей задач.
2.4. Общая схема.
2.5. Пример решения задачи.
Глава 3. Типы задач по динамическому программированию.
3.1. Табличный метод решения.
3.2. Задачи на отрезках.
3.3. Задачи на деревьях.
3.4. Задачи на подмножествах.
3.5. Динамическое программирование по профилю.
Приложение I. Динамическое программирование как метод решения задач оптимизации.
Введение.
1. Метод динамического программирования: основные положения.
2. Примеры задач.
2.1. Задача о распределении ресурсов.
2.2. Задача о рюкзаке.
2.3. Задачи о критических путях в графе.
2.3.1. Перечисление путей в графе.
2.3.2. Кратчайший путь в графе.
2.3.3. Максимальный путь в графе.
Приложение II. Справочные данные о задачах динамического программирования.
Купить .
Теги: учебник по программированию :: программирование :: Окулов :: Пестов :: алгоритм :: числа Фибоначчи












