J2ni2Cmax — различия между версиями
(→Доказательство корректности алгоритма) |
(→Постановка задачи) |
||
Строка 3: | Строка 3: | ||
<ol> | <ol> | ||
<li>Дано <tex>n</tex> работ и <tex>2</tex> станка.</li> | <li>Дано <tex>n</tex> работ и <tex>2</tex> станка.</li> | ||
− | <li>Для каждой работы известно её время выполнения на каждом станке.</li> | + | <li>Для каждой работы известно её время выполнения на каждом станке <tex>p_{i}</tex>.</li> |
<li>Для каждой работы известна последовательность станков - порядок, в котором нужно выполнить работу. <tex>1</tex>.</li> | <li>Для каждой работы известна последовательность станков - порядок, в котором нужно выполнить работу. <tex>1</tex>.</li> | ||
<li>Длина любой последовательности <tex><=2</tex>. | <li>Длина любой последовательности <tex><=2</tex>. |
Версия 16:15, 22 июня 2013
Содержание
Постановка задачи
Рассмотрим задачу:
- Дано работ и станка.
- Для каждой работы известно её время выполнения на каждом станке .
- Для каждой работы известна последовательность станков - порядок, в котором нужно выполнить работу. .
- Длина любой последовательности .
Требуется минимизировать время окончания выполнения всех работ.
Описание алгоритма
- первый станок. - второй станок.
Разобьем все работы на четыре множества:
- - множество всех работ, которые должны выполнится только на .
- - множество всех работ, которые должны выполнится только на .
- - множество всех работ, которые должны выполнится сначала на затем на .
- - множество всех работ, которые должны выполнится сначала на затем на .
Решим задачу для и для . Получим расписание и .
Тогда оптимальное расписание для нашей задачи будет следующим:
- Расписание : сначала в соответсвии с расписанием . Затем в произвольном порядке. Затем в соответсвии с .
- Расписание : сначала в соответсвии с расписанием . Затем в произвольном порядке. Затем в соответсвии с .
Примечание: во время выполнения
на или на могут возникнуть простои из-за того, что работа ещё не выполнилась на предыдущем станке.Доказательство корректности алгоритма
- время выполнения множества работ на станке .
Лемма: |
Расписание, построенное данным алгоритмом, обладает следующим свойством : один из станков работает без простоев. |
Доказательство: |
Рассмотрим 2 варианта: |
Теорема: |
Расписание, построенное данным алгоритмом, является корректным и оптимальным. |
Доказательство: |
Корректность алгоритма очевидна. Докажем оптимальность. Рассмотрим станок на котором достигается . Если этот станок работает без прерываний, то оптимальность очевидна( ) |
Псевдокод
while if
Сложность алгоритма
Время работы алгоритма равно времени работы алгоритма .
Сложность алгоритма
.