E141. Task Джонсона с одним станком

e-maxx algorithm original: C/C++ #algorithm #emaxx #scheduling #sort
Task text is translated from Russian for the selected interface language. Code is left unchanged.

Источник: e-maxx.ru/algo, страница PDF 469.

Это Task составления оптимального расписания обработки

деталей на единственном станке, если

-ая

деталь обрабатывается на нём за время

, а за

секунд ожидания до обработки этой детали платится штраф

. Таким образом, Task заключается в поиске такого переупорядочения деталей, что следующая величина

(размер штрафа) минимальна. Если мы обозначим через

перестановку деталей (

— номер первой

обрабатываемой детали,

— второй, и т.д.), то размер штрафа

равен: Иногда эта Task называется задачей однопроцессорного обслуживания множества заявок.

Solution задачи в некоторых частных случаях

Первый частный случай: линейные функции штрафа

Научимся решать эту задачу в случае, когда все

линейны, т.е. имеют вид:

где

— неотрицательные числа. Заметим, что в этих линейных функциях свободный член равен нулю, т.к. в противном случае к ответу сразу можно прибавить этот свободный член, и решать задачу с нулевым свободным членом.

Зафиксируем некоторое расписание — перестановку

. Зафиксируем какой-то номер

, и

пусть перестановка

равна перестановке

, в которой обменяли

-ый и

-ый elementы. Посмотрим, на сколько

при этом изменился штраф:

легко понять, что изменения произошли только с

-ым и

-ым слагаемыми:

Понятно, что если расписание

является оптимальным, то любое его изменение приводит к увеличению штрафа (или сохранению прежнего значения), поэтому для оптимального плана можно записать Statement: Преобразуя, получаем: Таким образом, оптимальное расписание можно получить, просто отсортировав все детали

по отношению

к

в обратном порядке. Следует отметить, что мы получили этот Algorithm так называемым перестановочным приёмом: мы попробовали обменять местами два соседних elementа расписания, вычислили, насколько при этом изменился штраф, и отсюда вывели Algorithm поиска оптимального расписания.

Второй частный случай: экспоненциальные функции штрафа

Пусть теперь функции штрафа имеют вид:

где все числа

неотрицательны, константа

положительна. Тогда, применяя аналогичным образом здесь перестановочный приём, легко получить, что детали надо сортировать в порядке убывания величин:

Третий частный случай: одинаковые монотонные функции штрафа

В этом случае считается, что все

совпадают с некоторой функцией

, которая является возрастающей. Понятно, что в этом случае оптимально располагать детали в порядке увеличения времени обработки .

Теорема Лившица-Кладова

Теорема Лившица-Кладова устанавливает, что перестановочный приём применим только для вышеописанных трёх частных случаев, и только них, т.е.:

● Линейный случай:

, где

— неотрицательные константы,

● Экспоненциальный случай:

, где

и

— положительные константы,

● Тождественный случай:

, где

— возрастающая функция. Эта теорема доказана в предположении, что функции штрафа являются достаточно гладкими (существуют третьи производные). Во всех трёх случаях применим перестановочный приём, благодаря которому искомое оптимальное расписание

может быть найдено простой сортировкой, следовательно, за время

.

C# solution

auto-draft, review before submit
// C# draft for: Задача Джонсона с одним станком
// Original e-maxx article has no compact code listing in the extracted PDF text.

C++ solution

matched/original
// C++ source for: Задача Джонсона с одним станком
// Compact code block was not extracted from this article.

Java solution

auto-draft, review before submit
// Java draft for: Задача Джонсона с одним станком
// Original e-maxx article has no compact code listing in the extracted PDF text.

Материал разбит как Algorithmическая Task: изучить постановку, понять асимптотику и реализовать Algorithm на выбранном языке.

Vacancies for this task

Active vacancies with overlapping task tags are shown.

All vacancies
There are no active vacancies yet.