33
правки
Изменения
QSumCi
,→Алгоритм решения
==Алгоритм решения==
Пусть <tex> i_1, i_2, \cdots i_r </tex> последовательность работ, выполняемых на станке с номером <tex> j </tex>. Тогда вклад этих работ в целевую функцию будет равен <tex> p_{i1}\cfrac{r}{s_j} + p_{i2}\cfrac{r-1}{s_j} + \cdots + p_{ir}\cfrac{1}{s_j} </tex>. [[Задача_о_минимуме/максимуме_скалярного_произведения|Отсюда]] видно, что сумма оптимальна, когда последовательность <tex> p_{ij} </tex> не возрастает.
Теперь введем неубывающую последовательность <tex> t_1, t_2 ... t_n </tex>, которая состоит из <tex> n </tex> минимальных элементов из множества <tex> \{\cfrac{1}{s_1}, \cfrac{1}{s_2} \cdots \cfrac{1}{s_m}, \cfrac{2}{s_1}, \cfrac{2}{s_2} \cdots \cfrac{2}{s_m}, \cfrac{3}{s_1} \cdots \}</tex> (для поиска <tex> t_1, t_2 ... t_n </tex>, создадим приоритетную очередь, положим в нее числа <tex> \cfrac{1}{s_1}, \cfrac{1}{s_2} \cdots \cfrac{1}{s_m}</tex> и будем последовательно извлекать <tex>n</tex> минимумов. После извлечения очередного минимума вида <tex>\cfrac{i}{s_j}</tex> добавим в очередь число <tex>\cfrac{i + 1}{s_j}</tex> и продолжим извлечение). Тогда <tex> t_i</tex> показывает на каком станке и какой по счету с конца должна выполняться работа с номером <tex>i</tex> в отсортированном по длительности списке работ. Сопоставляя работы и <tex> t_i</tex> составляем расписание.
{{Теорема