makrushin-evgenii
@makrushin-evgenii
Школьник

Как решать подобные задачи (поиск максимальной прибыли)?

Требуется составить оптимальный план и вычислить максимальную прибыль.
Дано T единиц времени и n задач
последующие n строк содержат два натуральных числа (xi, yi) - время, необходимое на выполнение задачи, и прибыль, которую можно получить, выполнив её.

Оптимальный план обладает двумя свойствами:
  • Суммарное время, затраченное на выполнение задач, включённых в план, не превышает T.
  • Суммарная прибыль от выполнения этих задач была максимальна.


Например при входных данных:
10 3
8 100
3 10
3 10
Максимальная прибыль:
100 (задача 1)

Пример 2:
10 4
5 10
5 20
2 5
2 6
Максимальная прибыль:
31 (задачи 2,3,4)

Подтолкните к решению, посоветуйте что почитать (но не целиком книгу, а отдельную тему, Shen'я с Виртом я уже копаю в поисках подобных задач). Я просто ещё не сталкивался с подобными задачами и хочу её решить, просто для себя.
  • Вопрос задан
  • 884 просмотра
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 2
Vestail
@Vestail
Software Engineer
Самая обычная задача целочисленного программирования(вообще не связано с обычным программированием).
Любая такая задача сводится к целевой функции, которую нужно максимизировать или минимизировать и ограничениям которые должны выполнятся.
В вашем случае(пример 1) целевая функция:
100х1 + 10х2+10х3 -> max (т.е. нужно максимизировать сумму, хi в данном случае - сколько рас выполняется задача).
А ограничение:
1 + 3х2+3х3 <= 10;
хi - целые;
//если одна задача может выполнятся только один рас, то дополнительное ограничение: хi = {1, 0}.
Для нахождения решения в ручную есть несколько методов, наиболее универсальный - симплекс метод.
Можно посчитать в экселе с помощью "поиска решений". Для серьезных задач с большим кол-вом переменных существуют специальные solver, например Gurobi.
Ответ написан
Комментировать
@kazmiruk
Помнится в универе нас гоняли подобными задачами. Предмер теория игр, тема максимальные и минимальные стратегии
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы