1rjpjpsumwjcjиsumtj — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
м (Алгоритм)
м
Строка 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</tex> <tex>\notin</tex> [s - p, e)
+
         if <tex>r_k\notin [s - p, e)</tex>
             <tex>F_k</tex>(s,e) = <tex>F_{k-1}</tex>(s,e)
+
             <tex>F_k(s,e) = F_{k-1}(s,e)</tex>
 
         else
 
         else
             <tex>F'_k</tex>(s,e) = <tex>F'</tex>(s,e), где  
+
             <tex>F'_k(s,e) = F'(s,e)</tex>, где  
             <tex>F'_k</tex>(s,e) = min{<tex>F_{k-1}</tex>(s,t_k) + <tex>F_{k-1}</tex>(t_k + p, e) + <tex>f_k</tex>(t_k + p)| <tex>t_k</tex> <tex>\in</tex> T; max{s, <tex>r_k</tex>} <tex>\leq</tex> <tex>t_k</tex> <tex>\leq</tex> e - p};
+
             <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($$\min_{i=1}^{n}r_i$$, max_{t \in T}t + p)</tex>
+
     return <tex>F_n($$\min\limits_{i=1}^{n}r_i$$, max_{t \in T}t + p)</tex>
  
 
==Время работы==
 
==Время работы==

Версия 23:32, 6 июня 2016

[math]1 \mid r_i, p_i = p \mid \sum{w_i C_i}[/math]


Задача:
Дано n работ и 1 станок. Для каждой работы известны время появления r_i, вес w_i и дедлайн d_i. Время выполнения всех работ p_i равно p. Требуется выполнить все работы так, чтобы значение sum(w_iC_i), где C_i — время окончания работы, было минимальным.


[math]1 \mid r_i, p_i = p \mid \sum{T_i}[/math]


Задача:
Дано n работ и 1 станок. Для каждой работы известны время появления r_i, вес w_i. Время выполнения всех работ p_i равно p. Требуется выполнить все работы так, чтобы значение sum(T_i) — суммарной медлительности работы(T_i = max(C_i - d_i), 0) — было минимальным.


Предисловие

Аналогично задаче [math]1 | r_i, p_i = p | \sum{w_i U_i}[/math], данные задачи решаются при помощи динамического программирования.

Вместо критериев оптимизации [math]\sum{w_i C_i}[/math] и [math]\sum{T_i}[/math] возьмём более общую для них функцию вида [math]\sum{f_i(C_i)}[/math], где функции [math]f_1,...,f_n[/math] обладают следующими свойствами:

  • [math]f_i[/math] не убывает для всех [math]j = 1,...,n[/math];
  • [math]f_i - f_j[/math] не убывает для всех [math]i, j = 1,..., n[/math] при [math]i \lt j[/math].

Функции [math]\sum{w_i C_i}[/math] и [math]\sum{T_i}[/math] удовлетворяют данным условиям, если отсортировать работы так, что [math]w_1 \geq w_2 \geq ... \geq w_n[/math] и [math]d_1 \leq d_2 \leq ... \leq d_n[/math].

Алгоритм

   Отсортировать работы так, чтобы [math]f_i[/math] удовлетворяла условиям неубывания;
   for s, e [math]\in[/math] T : s [math]\leq[/math] e
       [math]F_0[/math](s, e) = 0;
   for k = 1..n 
   for s, e [math]\in[/math] T : s [math]\leq[/math] e
       if [math]r_k\notin [s - p, e)[/math]
           [math]F_k(s,e) = F_{k-1}(s,e)[/math]
       else
           [math]F'_k(s,e) = F'(s,e)[/math], где 
           [math]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)[/math]
   return [math]F_n($$\min\limits_{i=1}^{n}r_i$$,  max_{t \in T}t + p)[/math]

Время работы

Корректность алгоритма

Другие задачи

Источники информации