1ripippmtnsumwu — различия между версиями
Swanwarp (обсуждение | вклад) (→Динамика) |
Swanwarp (обсуждение | вклад) (→Динамика) |
||
Строка 63: | Строка 63: | ||
Докажем неравенство <tex>W_k(t_u, t_v, m) \leqslant \max(W_{k-1}(t_u, t_v, m), W'_k)</tex>. Положим <tex>Z</tex> реализует <tex> W_k(t_u, t_v, m)</tex>. | Докажем неравенство <tex>W_k(t_u, t_v, m) \leqslant \max(W_{k-1}(t_u, t_v, m), W'_k)</tex>. Положим <tex>Z</tex> реализует <tex> W_k(t_u, t_v, m)</tex>. | ||
− | * <tex>J_k \notin Z</tex>. Тогда <tex>W_k(t_u, t_v, m) = W_{k-1}(t_u, t_v, m) \leqslant \max(W_{k-1}(t_u, t_v, m), W'_k)</tex>. | + | * <tex>J_k \notin Z</tex>. |
− | * <tex>J_k \in Z</tex>. | + | *:Тогда <tex>W_k(t_u, t_v, m) = W_{k-1}(t_u, t_v, m) \leqslant \max(W_{k-1}(t_u, t_v, m), W'_k)</tex>. |
+ | * <tex>J_k \in Z</tex>. | ||
+ | *:Положим <tex>t_x</tex> и <tex>t_y</tex> временем начала выполнения и завершения работы <tex>J_k</tex> в <tex>JPS</tex> от <tex>Z</tex>. Благодаря предыдущей лемме, мы знаем, что <tex>t_x, t_y \in \Theta</tex>. Также выполняется условие <tex> \max(r_k, t_u) \leqslant t_x < t_y \leqslant \min(d_k, t_v).</tex> Пусть <tex>Z_1, Z_2, Z_3</tex> будут подмножествами <tex>Z/J_k</tex> такими, что все работы в <tex>Z_1, Z_2</tex> и <tex>Z_3</tex> имеют время появления <tex>r_i</tex> в границах <tex>[t_u,t_x)</tex>, <tex>[t_x, t_y)</tex> и <tex>[t_y,t_v)</tex> соответственно. По структуре <tex>JPS</tex>(работа <tex>J_k</tex> имеет максимальный дедлайн <tex>d_k</tex>) все работы в <tex>Z_1</tex> завершаться до <tex>t_x</tex>. Более того, все работы в <tex>Z_2</tex> начнут выполняться после <tex>t_x</tex> и завершаться до <tex>t_y</tex>, аналогично для <tex>Z_3</tex>. Также <tex>p \cdot (|Z_2| + 1) = t_y - t_x,</tex> так как <tex>J_k</tex> выполнялась в промежутке <tex>[t_x, t_y).</tex> При этом, <tex>|Z_1| + |Z_2| + |Z_3| = m - 1.</tex> Можно заметить, что <tex>weight(Z_1) \leqslant W_{k-1}(t_u, t_x, |Z_1|), weight(Z_2) \leqslant W_{k-2}(t_x, t_y, |Z_2|)</tex> и <tex>weight(Z_3) \leqslant W_{k-1}(t_y, t_v, |Z_3|).</tex> Следовательно, <tex>W_k(t_u, t_v, m) = w_k + \sum\limits_{i = 1}^3weight(Z_i) \leqslant W'_k \leqslant \max(W_{k-1}(t_u, t_v, m), W'_k).</tex> | ||
+ | |||
+ | Исходя из двух неравенств доказанных выше, можно получить требуемое равенство <tex>W_k(t_u, t_v, m) = \max(W_{k-1}(t_u, t_v, m), W'_k).</tex> Лемма доказана. | ||
}} | }} | ||
Версия 20:06, 5 июня 2016
Задача: |
Дано | работ и 1 станок. Для каждой работы известны её время появления и вес , а также дедлайн . Время выполнения всех работ равно . Каждую работу можно прервать и продолжить ее выполнение в любой момент времени. Требуется выполнить все работы, чтобы значение (суммарный вес просроченных работ) было минимальным.
Содержание
Решение
Постановка цели
Необходимо найти выполнимое множество работ динамического программирования. Предполагается, что работы отсортированы в порядке неубывания дедлайна.
такое, что его суммарный вес максимален. Эта проблема решается с помощьюJackson Preemptive Schedule
- это алгоритм построения расписания работ для одной машины с прерываниями. Пусть у нас есть множества работ , для которых надо составить расписание, и множество , которое состоит из работ, доступных для выполнения на данный момент. Возможны два случая:
- Если машина освободилась, то вставляем в расписание работу с наименьшим . Также удалим из .
- Если машина занята работой и в момент времени появилась работа , тогда если , то прервем и поставим на выполнение , а добавим в . В противном случае просто добавим в .
Можно заметить что, если работа была вставлена в
после своего дедлайна, то данное множество работ не является выполнимым. Таким образом, решение задачи сводится к нахождению такого множества работ , которое будет выполнимым по и чей вес будет максимален.Лемма: |
Пусть . Тогда время начала и время окончания этой работы в будет принадлежать . |
Доказательство: |
Сначала докажем лемму для . Пусть - минимальная временная точка такая, что между и не простаивает. По структуре . Работы, которые выполняются между и , не могут выполняться ни до , ни после , даже частично. Это следует из структуры - если работа была прервана работой , то после выполнения мы снова вставляем в расписание . Таким образом, делится на . Возможны следующие два случая:
В любом из этих двух случаев есть такое , такое что не простаивает между и . Тогда делится на . Следовательно, не превышает , так как не простаивает. Поэтому .
|
Динамика
Определение: |
|
Лемма: |
|
Доказательство: |
Если , то работа не может быть поставлена ни в какой такой, что от разрешимо и . Тогда, очевидно, что
|
См. также
Источники информации
Philippe Baptiste - Polynomial Time Algorithms for Minimizing the Weighted Number of Late Jobs on a Single Machine with Equal Processing Times