J2ni2Cmax — различия между версиями
Watson (обсуждение | вклад) (→Описание алгоритма) |
Watson (обсуждение | вклад) (→Описание алгоритма) |
||
Строка 22: | Строка 22: | ||
Тогда оптимальное расписание для нашей задачи будет следующим: | Тогда оптимальное расписание для нашей задачи будет следующим: | ||
− | Расписание <tex>M1</tex> : <tex>I_{12}</tex> в соответсвии с расписанием <tex>S_{12}</tex>. <tex>I_{1}</tex> в произвольном порядке. Затем <tex>I_{21}</tex> в соответсвии с <tex>S_{21}</tex>. | + | Расписание <tex>M1</tex> : сначала <tex>I_{12}</tex> в соответсвии с расписанием <tex>S_{12}</tex>. <tex>I_{1}</tex> в произвольном порядке. Затем <tex>I_{21}</tex> в соответсвии с <tex>S_{21}</tex>. |
− | Расписание <tex>M_{2}</tex> : <tex>I_{21}</tex> в соответсвии с расписанием <tex>S_{21}</tex>. Затем <tex>I_{2}</tex> в произвольном порядке. Затем <tex>I_{12}</tex> в соответсвии с <tex>S_{12}</tex>. | + | Расписание <tex>M_{2}</tex> : сначала <tex>I_{21}</tex> в соответсвии с расписанием <tex>S_{21}</tex>. Затем <tex>I_{2}</tex> в произвольном порядке. Затем <tex>I_{12}</tex> в соответсвии с <tex>S_{12}</tex>. |
==Доказательство корректности алгоритма== | ==Доказательство корректности алгоритма== |
Версия 14:44, 22 июня 2013
Содержание
Постановка задачи
Рассмотрим задачу:
- Дано работ и станка.
- Для каждой работы известно её время выполнения на каждом станке.
- Для каждой работы известна последовательность станков - порядок, в котором нужно выполнить работу. .
- Длина любой последовательности .
Требуется минимизировать время окончания выполнения всех работ.
Описание алгоритма
- первый станок. - второй станок.
Разобьем все работы на четыре множества:
- - множество всех работ, которые должны выполнится только на .
- - множество всех работ, которые должны выполнится только на .
- - множество всех работ, которые должны выполнится сначала на затем на .
- - множество всех работ, которые должны выполнится сначала на затем на .
Решим задачу для и для . Получим расписание и . Тогда оптимальное расписание для нашей задачи будет следующим:
Расписание
: сначала в соответсвии с расписанием . в произвольном порядке. Затем в соответсвии с .Расписание
: сначала в соответсвии с расписанием . Затем в произвольном порядке. Затем в соответсвии с .Доказательство корректности алгоритма
Теорема: |
Расписание, построенное данным алгоритмом, является корректным и оптимальным. |
Доказательство: |
Доказательство будем вести от противного. Первая скобка отрицательная: |
Псевдокод
while if
Сложность алгоритма
Время работы алгоритма равно времени работы алгоритма .
Сложность алгоритма
.