J2ni2Cmax — различия между версиями
Watson (обсуждение | вклад) (→Доказательство корректности алгоритма) |
Watson (обсуждение | вклад) (→Доказательство корректности алгоритма) |
||
| Строка 31: | Строка 31: | ||
==Доказательство корректности алгоритма== | ==Доказательство корректности алгоритма== | ||
| + | <tex>T_{i}(x)</tex> - время выполнения множества работ <tex>x</tex> на станке <tex>i</tex>. | ||
{{Лемма | {{Лемма | ||
|id=lemma1 | |id=lemma1 | ||
|statement= | |statement= | ||
Расписание, построенное данным алгоритмом, обладает следующим свойством : один из станков работает без простоев. | Расписание, построенное данным алгоритмом, обладает следующим свойством : один из станков работает без простоев. | ||
| − | |proof={{ | + | |proof= |
| + | Возможно 2 варианта: | ||
| + | <li><tex>T_{1}(I_{12}) + T_{1}(I_{1}) >= T_{2}(I_{21}) </tex>. | ||
| + | |||
| + | Тогда M_{1} работает без прерываний, т.к к тому моменту завершения выполнения I_{1} на М_{1} все работы I_{21} выполнены на M_{2}. | ||
| + | </li> | ||
| + | <li></li> | ||
| + | <ol> | ||
| + | <li> Время выполнения I1 + | ||
| + | <li> | ||
| + | </ol> | ||
}} | }} | ||
{{Теорема | {{Теорема | ||
Версия 15:32, 22 июня 2013
Содержание
Постановка задачи
Рассмотрим задачу:
- Дано работ и станка.
- Для каждой работы известно её время выполнения на каждом станке.
- Для каждой работы известна последовательность станков - порядок, в котором нужно выполнить работу. .
- Длина любой последовательности .
Требуется минимизировать время окончания выполнения всех работ.
Описание алгоритма
- первый станок. - второй станок.
Разобьем все работы на четыре множества:
- - множество всех работ, которые должны выполнится только на .
- - множество всех работ, которые должны выполнится только на .
- - множество всех работ, которые должны выполнится сначала на затем на .
- - множество всех работ, которые должны выполнится сначала на затем на .
Решим задачу для и для . Получим расписание и .
Тогда оптимальное расписание для нашей задачи будет следующим:
- Расписание : сначала в соответсвии с расписанием . Затем в произвольном порядке. Затем в соответсвии с .
- Расписание : сначала в соответсвии с расписанием . Затем в произвольном порядке. Затем в соответсвии с .
Примечание: во время выполнения на или на могут возникнуть простои из-за того, что работа ещё не выполнилась на предыдущем станке.
Доказательство корректности алгоритма
- время выполнения множества работ на станке .
| Лемма: |
Расписание, построенное данным алгоритмом, обладает следующим свойством : один из станков работает без простоев. |
| Доказательство: |
|
Возможно 2 варианта:
|
| Теорема: |
Расписание, построенное данным алгоритмом, является корректным и оптимальным. |
| Доказательство: |
|
Доказательство будем вести от противного. Первая скобка отрицательная: . Вторая скобка тоже отрицательная из того, что в работа с весом выполняется раньше, значит её вес должен быть больше . |
Псевдокод
while if
Сложность алгоритма
Время работы алгоритма равно времени работы алгоритма .
Сложность алгоритма .