1rjpjpsumwjcjиsumtj — различия между версиями
Romanosov (обсуждение | вклад) м (→Алгоритм) |
Romanosov (обсуждение | вклад) м |
||
Строка 32: | Строка 32: | ||
for k = 1..n | for k = 1..n | ||
for s, e <tex>\in</tex> T : s <tex>\leq</tex> e | for s, e <tex>\in</tex> T : s <tex>\leq</tex> e | ||
− | if <tex>r_k | + | if <tex>r_k\notin [s - p, e)</tex> |
− | <tex>F_k | + | <tex>F_k(s,e) = F_{k-1}(s,e)</tex> |
else | else | ||
− | <tex>F'_k | + | <tex>F'_k(s,e) = F'(s,e)</tex>, где |
− | <tex>F'_k | + | <tex>F'_k(s,e) = \min(F_{k-1} (s, t_k) + F_{k-1} (t_k + p, e) + f_k(t_k + p) \mid t_k \in T, max(s, r_k) \leq t_k \leq e - p)</tex> |
− | return <tex>F_n($$\ | + | return <tex>F_n($$\min\limits_{i=1}^{n}r_i$$, max_{t \in T}t + p)</tex> |
==Время работы== | ==Время работы== |
Версия 23:32, 6 июня 2016
Задача: |
Дано n работ и 1 станок. Для каждой работы известны время появления r_i, вес w_i и дедлайн d_i. Время выполнения всех работ p_i равно p. Требуется выполнить все работы так, чтобы значение sum(w_iC_i), где C_i — время окончания работы, было минимальным. |
Задача: |
Дано n работ и 1 станок. Для каждой работы известны время появления r_i, вес w_i. Время выполнения всех работ p_i равно p. Требуется выполнить все работы так, чтобы значение sum(T_i) — суммарной медлительности работы(T_i = max(C_i - d_i), 0) — было минимальным. |
Содержание
Предисловие
Аналогично задаче , данные задачи решаются при помощи динамического программирования.
Вместо критериев оптимизации
и возьмём более общую для них функцию вида , где функции обладают следующими свойствами:- не убывает для всех ;
- не убывает для всех при .
Функции
и удовлетворяют данным условиям, если отсортировать работы так, что и .Алгоритм
Отсортировать работы так, чтобыудовлетворяла условиям неубывания; for s, e T : s e (s, e) = 0; for k = 1..n for s, e T : s e if else , где return