J2ni2Cmax — различия между версиями
|  (→Постановка задачи) |  (→Постановка задачи) | ||
| Строка 5: | Строка 5: | ||
| <li>Для каждой работы известно её время выполнения на каждом станке <tex>p_{ij}</tex>.</li> | <li>Для каждой работы известно её время выполнения на каждом станке <tex>p_{ij}</tex>.</li> | ||
| <li>Для каждой работы известна последовательность <tex>O_{i1}, \ O_{i2} \ ... \ O_{ik}</tex> станков - порядок, в котором нужно выполнить работу.   | <li>Для каждой работы известна последовательность <tex>O_{i1}, \ O_{i2} \ ... \ O_{ik}</tex> станков - порядок, в котором нужно выполнить работу.   | ||
| − | <li> | + | <li>В каждой последовательности <tex>O_{i}</tex> не более двух элементов. | 
| </li> | </li> | ||
| </ol> | </ol> | ||
Версия 22:27, 23 июня 2013
Содержание
Постановка задачи
Рассмотрим задачу:
- Дано работ и станка.
- Для каждой работы известно её время выполнения на каждом станке .
- Для каждой работы известна последовательность станков - порядок, в котором нужно выполнить работу.
- В каждой последовательности не более двух элементов.
Требуется минимизировать время окончания выполнения всех работ.
Описание алгоритма
- первый станок. - второй станок.
Разобьем все работы на четыре множества:
- - множество всех работ, которые должны выполниться только на .
- - множество всех работ, которые должны выполниться только на .
- - множество всех работ, которые должны выполниться сначала на затем на .
- - множество всех работ, которые должны выполниться сначала на затем на .
Решим задачу для и для независимо. Получим расписание и .
Тогда оптимальное расписание для нашей задачи будет следующим:
- Расписание : сначала в соответсвии с расписанием . Затем в произвольном порядке. Затем в соответсвии с .
- Расписание : сначала в соответсвии с расписанием . Затем в произвольном порядке. Затем в соответсвии с .
Примечание: во время выполнения на или на могут возникнуть простои из-за того, что работа ещё не выполнилась на предыдущем станке.
Доказательство корректности алгоритма
- время выполнения множества работ на станке .
- множество всех работ, которые нужно сделать хотя бы раз на -м станке. (Формально )
| Лемма: | 
| Расписание, построенное данным алгоритмом, обладает следующим свойством : один из станков работает без простоев. | 
| Доказательство: | 
| Рассмотрим 2 случая: 
 | 
| Теорема: | 
| Расписание, построенное данным алгоритмом, является корректным и оптимальным. | 
| Доказательство: | 
| Корректность алгоритма очевидна. Докажем оптимальность. Пусть, для опеределенности работает без прерываний. Рассмотрим станок на котором достигается . | 
Сложность алгоритма
Время работы алгоритма равно времени работы алгоритма .
Сложность алгоритма .

