1ripippmtnsumwu — различия между версиями
Swanwarp (обсуждение | вклад) (→Динамика) |
Swanwarp (обсуждение | вклад) (→Решение) |
||
Строка 10: | Строка 10: | ||
=== Постановка цели === | === Постановка цели === | ||
− | Необходимо найти выполнимое множество работ <tex> | + | Необходимо найти выполнимое множество работ <tex>O</tex> такое, что его суммарный вес <tex>\sum \limits_{i \in X} w_i</tex> максимален. Эта проблема решается с помощью [[Динамическое программирование | динамического программирования]]. |
Предполагается, что работы отсортированы в порядке неубывания дедлайна. | Предполагается, что работы отсортированы в порядке неубывания дедлайна. | ||
Версия 20:46, 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