Оптимальность жадного решения можно увидеть аргументом обмена следующим образом. Без ограничения общности предположим, что все прибыли различны и что рабочие места сортируются в убывающем порядке прибыли.
Исправить решение S
. Из этого решения удалите все задания, которые не соответствуют установленному сроку. Как и в случае с этим преобразованием, каждое задание заканчивается в течение его крайнего срока, результирующее решение S1
по-прежнему является оптимальным. Для работы i
рассмотрим интервал I_i:=[0,min(n,deadline(i))]
(как в жадном алгоритме). В этом интервале, справа от работы i
, есть только рабочие места с большим временем обработки (если нет, они либо были бы рассмотрены ранее нашим заказом, либо они могли бы быть обменены без нарушения их сроков). Разместить вакансию i
в крайнее правое положение возможно в I_i
.
В целом, мы имеем следующее утверждение.
Каждое решение S
может быть преобразовано в решение S'
со следующими propoerties.
S'
содержит каждую работу S
которая завершается до его срока.
- За все вакансии
i
в S
все вакансии после i
в I_i
имеют увеличенное время обработки.
- Для каждого задания
i
в S
, нет времени на простоя после i
в I_i
.
S'
имеет такое же объективное значение, что и S
.
В частности, существует оптимальное решение S*
со свойствами выше. Пусть S
- алгоритм, генерируемый жадным алгоритмом. Обратите внимание, что S
также имеет свойства 2 и 3 выше. Пусть i
будет первым заданием, которое встречается в S
, но не в S*
. Пусть pos
будет временным интервалом i
в S
. Если pos
был пуст в S*
, S*
можно было бы улучшить, добавив i
, что противоречит оптимальности S*
. Если pos
был не пустым в S*
, работа i'
в pos
в S*
не может быть большей прибыли, чем i
, так как в противном случае жадный алгоритм выбрал бы i'
быть в pos
в S
. Следовательно, он должен иметь меньшую прибыль, чем i
. Это означает, что его можно удалить и заменить на i
в S*
, что также противоречит оптимальности S*
.
Убедившись, что это не NP-комплект. Обратите внимание, что расписание Job Shop является NP-полным, поэтому жадный алгоритм не будет оптимальным для последнего (не знаю, хотя проблема Sequencing Job). –
Они по-прежнему сортируются ... –
По крайней мере, они связаны с лекциями, которые указывают на объединение и связанные с ним сложности. –