Статья:

МЕТОД ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ НА ПРИМЕРЕ ЗАДАЧИ О РЮКЗАКЕ

Конференция: CCXLIV Студенческая международная научно-практическая конференция «Молодежный научный форум»

Секция: Физико-математические науки

Выходные данные
Коновалова И.О. МЕТОД ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ НА ПРИМЕРЕ ЗАДАЧИ О РЮКЗАКЕ // Молодежный научный форум: электр. сб. ст. по мат. CCXLIV междунар. студ. науч.-практ. конф. № 12(244). URL: https://nauchforum.ru/archive/MNF_interdisciplinarity/12(244).pdf (дата обращения: 14.11.2024)
Лауреаты определены. Конференция завершена
Эта статья набрала 0 голосов
Мне нравится
Дипломы
лауреатов
Сертификаты
участников
Дипломы
лауреатов
Сертификаты
участников
на печатьскачать .pdfподелиться

МЕТОД ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ НА ПРИМЕРЕ ЗАДАЧИ О РЮКЗАКЕ

Коновалова Ирина Олеговна
магистрант, Тольяттинский государственный университет, РФ, г. Тольятти
Лелонд Ольга Владимировна
научный руководитель, канд. физ.-мат. наук, доцент, Тольяттинский государственный университет, РФ, г. Тольятти

 

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

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

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

Методика решения задачи оптимизации с использованием принципа ДП включает в себя несколько шагов:

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

2. Формулировка циклического соотношения, которое связывает оптимальные решения полной задачи и ее подзадач. Это соотношение обычно построено на принципе оптимальности.

3. Разработка алгоритма для решения задачи, основанного на рекурсивном соотношении.

4. Реализация алгоритма и проведение расчетов с применением ДП.

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

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

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

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

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

Входные данные задачи о рюкзаке:

– список предметов, каждый из которых имеет определенный вес и стоимость;

– вес рюкзака, который ограничивает общий вес выбранных предметов.

Выходные данные задачи о рюкзаке:

– максимальная стоимость предметов, которые можно положить в рюкзак.

Основная идея решения задачи о рюкзаке состоит в применении метода ДП.

Шаги алгоритма решения задачи ДП:

1. Разработать двумерный массив dp[n+1][w+1],

где n – количество предметов, имеющих вес a1, …, an;

ci – стоимость конкретного предмета;

w – вместимость рюкзака.

dp[i][j] будет представлять максимальную стоимость выбранных предметов среди первых i предметов при ограничении по весу j.

2. Заполнить первую строку и первый столбец массива dp нулями, так как без выбранных предметов стоимость всегда равна нулю.

3. Для каждого предмета i от 1 до n и для каждой вместимости рюкзака j от 1 до w:

– если вес предмета i больше, чем текущая вместимость рюкзака j, то dp[i][j] = dp[i-1][j] - не берем текущий предмет;

- иначе, dp[i][j] = max(dp[i][j], dp[i - 1][j - a[i]] + c[i]) - можем выбрать текущий предмет или не выбирать его.

4. Максимальная стоимость выбранных предметов будет находиться в dp[n][w].

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

 

Список литературы:
1. Беллман Р. Динамическое программирование. // М.: Иностранная литература, 1960. 395 с.
2. Кремер Н. Ш., Путко Б. А., Тришин И. М. Исследование операций в экономике // учеб. пос. для вузов. М.: Банки и биржи, ЮНИТИ, 1997. 407 с.