Opij1Sumwc — различия между версиями
Qradimir (обсуждение | вклад) м |
Qradimir (обсуждение | вклад) м |
||
Строка 16: | Строка 16: | ||
## После данного преобразования мы не изменим значение целевой функции (так как мы переставляем только элементы работ, выполняющихся в один и тот же момент времени). Также расписание станет допустимым для <tex> S </tex>, так как по определению реберной раскраски, не будет ни одной работы, два единичных блока которых выполняется на одном станке и во все моменты времени не окажется того, что на один станок назначено две работы. | ## После данного преобразования мы не изменим значение целевой функции (так как мы переставляем только элементы работ, выполняющихся в один и тот же момент времени). Также расписание станет допустимым для <tex> S </tex>, так как по определению реберной раскраски, не будет ни одной работы, два единичных блока которых выполняется на одном станке и во все моменты времени не окажется того, что на один станок назначено две работы. | ||
}} | }} | ||
− | Чтобы непосредственно решить эту задачу, воспользуемся теоремой о том, что для задачи <tex> P \mid p_i=m, pmtn \mid \sum w_i C_i </tex> существует оптимальное расписание без прерываний<ref>P. Brucker. Scheduling Algorithms (2006), 5th edition, p. 121 </ref>. Известно, что для того, чтобы получить оптимальное расписание для такой задачи без прерываний, надо помещать работы по очереди на станки <tex>1 \dots m </tex> в порядке убывания весов. Длительности у всех работ совпадают, поэтому расписание будет состоять из <tex> \lfloor \frac{n}{m} \rfloor </tex> блоков по <tex> m </tex> работ и, возможно, одного неполного блока из <tex> n \ | + | Чтобы непосредственно решить эту задачу, воспользуемся теоремой о том, что для задачи <tex> P \mid p_i=m, pmtn \mid \sum w_i C_i </tex> существует оптимальное расписание без прерываний<ref>P. Brucker. Scheduling Algorithms (2006), 5th edition, p. 121 </ref>. Известно, что для того, чтобы получить оптимальное расписание для такой задачи без прерываний, надо помещать работы по очереди на станки <tex>1 \dots m </tex> в порядке убывания весов. Длительности у всех работ совпадают, поэтому расписание будет состоять из <tex> \lfloor \frac{n}{m} \rfloor </tex> блоков по <tex> m </tex> работ и, возможно, одного неполного блока из <tex> n \bmod m </tex> работ. Таким образом, аналогично задаче <tex> O \mid p_{ij}=1 \mid C_{max}</tex>, чтобы получить допустимое расписание, можно не строить раскраску графа, а просто циклически сдвигать последовательности работ внутри каждого блока. |
===Время работы=== | ===Время работы=== | ||
− | Чтобы построить циклические сдвиги внутри одного блока требуется <tex> O(m^2) </tex> времени. Всего блоков <tex> O(\frac{n}{m}) </tex>. | + | Чтобы построить циклические сдвиги внутри одного блока требуется <tex> \mathcal{O}(m^2) </tex> времени. Всего блоков <tex> \mathcal{O}(\frac{n}{m}) </tex>. |
− | Значит, итоговая ассимптотика равна <tex> O(n \cdot m) </tex>. | + | Значит, итоговая ассимптотика равна <tex> \mathcal{O}(n \cdot m) </tex>. |
==См. также.== | ==См. также.== |
Версия 12:37, 6 июня 2016
Задача: |
Дано | одинаковых станков, которые работают параллельно и работ, котороые необходимо выполнить в произвольном порядке на всех станках. Время выполнения каждой работы на любом станке одинаково и равно 1. Необходимо минимизировать взвешенную сумму времен завершения работ.
Алгоритм
Описание алгоритма
Утверждение: |
Оптимальный ответ для равен оптимальному ответу к задаче |
Для доказательства этого утверждения необходимо показать то, что из оптимальности следует оптимальность , и способ построения допустимого расписания для из расписания для :
|
Чтобы непосредственно решить эту задачу, воспользуемся теоремой о том, что для задачи [1]. Известно, что для того, чтобы получить оптимальное расписание для такой задачи без прерываний, надо помещать работы по очереди на станки в порядке убывания весов. Длительности у всех работ совпадают, поэтому расписание будет состоять из блоков по работ и, возможно, одного неполного блока из работ. Таким образом, аналогично задаче , чтобы получить допустимое расписание, можно не строить раскраску графа, а просто циклически сдвигать последовательности работ внутри каждого блока.
существует оптимальное расписание без прерыванийВремя работы
Чтобы построить циклические сдвиги внутри одного блока требуется
времени. Всего блоков . Значит, итоговая ассимптотика равна .См. также.
Примечания
- ↑ P. Brucker. Scheduling Algorithms (2006), 5th edition, p. 121