Fpij1sumwu — различия между версиями
Строка 25: | Строка 25: | ||
===Сложность алгоритма=== | ===Сложность алгоритма=== | ||
− | Задача <tex>F \mid p_{i j} = 1 \mid \sum w_iu_i</tex> за <tex>O(n)</tex> сводится к задаче <tex>1 \mid p_i = 1 \mid \sum w_i u_i</tex>. Задача <tex>1 \mid p_i = 1 \mid \sum u_iw_i</tex> решается за <tex>O(n \log n)</tex>. После решения этой задачи, нужно вывести ответ, имеющий размер <tex>O(nm)</tex>. Значит, итоговая сложность алгоритма {{---}} <tex>O(n \log n + nm)</tex>. | + | Задача <tex>F \mid p_{i j} = 1 \mid \sum w_iu_i</tex> за <tex>O(n)</tex> сводится к [[1pi1sumwu|задаче <tex>1 \mid p_i = 1 \mid \sum w_i u_i</tex>]]. Задача <tex>1 \mid p_i = 1 \mid \sum u_iw_i</tex> решается за <tex>O(n \log n)</tex>. После решения этой задачи, нужно вывести ответ, имеющий размер <tex>O(nm)</tex>. Значит, итоговая сложность алгоритма {{---}} <tex>O(n \log n + nm)</tex>. |
==См. также.== | ==См. также.== |
Версия 13:49, 5 июня 2015
Задача: |
Дано | станков, на которых нужно обработать деталей. Каждую деталь нужно обработать по очереди на всех станках. Любая работа на любом станке выполняется единицу времени. Для каждой работы есть дедлайн — время, до которого она должна быть закончена, и штраф , который нужно будет выплатить в случае, если работа была закончена после . Необходимо минимизировать суммарный штраф, который придется выплатить.
Содержание
Алгоритм
Описание алгоритма
Утверждение: |
Существует оптимальное расписание, в котором каждая работа делается непрерывно. |
Рассмотрим расписание, в котором есть работы, которые делаются не непрерывно. Рассмотрим самый ранний разрыв: работа делалась в моменты , где , но не делалась в момент времени . Докажем, что в момент времени , -й станок простаивает и можно продолжить делать -ю работу.Пусть в момент времени После устранения каждого разрыва получим расписание без разрывов, в котором каждая работа заканчивает выполняться не позже, чем в изначальном. на -м станке делается работа . В -й момент времени -й станок был занят выполнением -й работы, а значит, не мог выполнять -ю. Значит, разрыв был раньше, что противоречит тому, что был выбран самый ранний разрыв. Значит, в -й момент -й станок свободен и туда можно поставить -ю работу, устранив разрыв. |
По этому утверждению, если работу
начали делать в , то закончена она будет в . Найдем время такое, что начав выполнять в него работу , мы успеем выполнить ее до : . Таким образом, вычтя из всех число , мы свели задачу к .Построив оптимальное расписание для
, мы найдем времена, в которые нужно начинать выполнять работы. По утверждению выше, работы можно выполнять непрерывно.Сложность алгоритма
Задача задаче . Задача решается за . После решения этой задачи, нужно вывести ответ, имеющий размер . Значит, итоговая сложность алгоритма — .
за сводится кСм. также.
Источники информации
- Лазарев А.А., Мусатова Е.Г., Кварацхелия А.Г., Гафаров Е.Р. Пособие по теории расписаний.
- Vladimír Modrák, R. Sudhakara Pandian. FLOW SHOP SCHEDULING ALGORITHM TO MINIMIZE COMPLETION TIME FOR -JOBS -MACHINES PROBLEM