QSumCi — различия между версиями
(→Алгоритм решения) |
(→Время работы) |
||
Строка 15: | Строка 15: | ||
==Время работы== | ==Время работы== | ||
− | Начальная сортировка работ | + | Начальная сортировка работ и [[Двоичная куча#Построение кучи за O(n)|инициализация приоритетной очереди]] занимают <tex>O(n\log{n} + m)</tex> времени. Затем происходит выбор минимальных коэффициентов, посредством приоритетной очереди время работы составит <tex>O(n\log{m})</tex>. Итого суммарное время работы <tex> O(n(\log{n}+\log{m}) + m)</tex>. |
== Источники информации == | == Источники информации == |
Версия 01:52, 13 июня 2015
Задача: |
Есть несколько станков с разной скоростью выполнения работ и несколько работ с заданным временем выполнения. Цель — составить такое расписание, чтобы суммарное время окончания всех работ было минимальным. |
Алгоритм решения
Пусть Отсюда видно, что сумма оптимальна, когда последовательность не возрастает. Теперь введем неубывающую последовательность , которая состоит из минимальных элементов из множества (для поиска создадим приоритетную очередь, положим в нее числа и будем последовательно извлекать минимумов. После извлечения очередного минимума вида добавим в очередь число и продолжим извлечение). Тогда показывает на каком станке и какой по счету с конца должна выполняться работа с номером в отсортированном по длительности списке работ. Сопоставляя работы и составляем расписание.
последовательность работ, выполняемых на станке с номером . Тогда вклад этих работ в целевую функцию будет равен .Теорема: |
Приведенный алгоритм верен. |
Доказательство: |
|
Время работы
Начальная сортировка работ и инициализация приоритетной очереди занимают времени. Затем происходит выбор минимальных коэффициентов, посредством приоритетной очереди время работы составит . Итого суммарное время работы .
Источники информации
- Peter Brucker Scheduling Algorithms — Springer, 2006. — с. 133. — ISBN 978-3-540-69515-8