Участник:Dominica — различия между версиями
Dominica (обсуждение | вклад) |
Dominica (обсуждение | вклад) |
||
Строка 26: | Строка 26: | ||
|id=lemma1 | |id=lemma1 | ||
|statement= Существует оптимальное расписание <tex>S</tex> в котором все <tex>n</tex> задач распределены по всем временам <tex>t_i (i = 1\ldots n)</tex>, которые выбирает приведенный выше алгоритм. | |statement= Существует оптимальное расписание <tex>S</tex> в котором все <tex>n</tex> задач распределены по всем временам <tex>t_i (i = 1\ldots n)</tex>, которые выбирает приведенный выше алгоритм. | ||
− | |proof= Предположим, что в некоторое оптимальное расписание <tex>S</tex> входят времена <tex> t_1 \ldots t_j, </tex> где <tex> j < n</tex> и максимально | + | |proof= Предположим, что в некоторое оптимальное расписание <tex>S</tex> входят времена <tex> t_1 \ldots t_j, </tex> где <tex> j < n</tex> и из всех возможных оптимальных расписаний мы возьмем то, у которого <tex>j</tex> будет максимально. |
+ | Из того, как в алгоритме выбирались значения для <tex>t_i</tex> следует, что <tex>t_{j + 1}</tex> {{---}} минимальное возможное время, большее <tex>t_j,</tex>, в которое можно начать выполнять какое-нибудь из оставшихся заданий. Если во время <tex>t_{j+1}</tex> в расписании <tex>S</tex> не выполняется никакого задания, то какое-то задание, которое могло бы выполнится в момент времени <tex>t_{j+1}</tex> выполняется в <tex>S</tex> позднее. Значит оно может быть перемещено в нашем расписании <tex>S</tex> на время <tex>t_{j+1}</tex> без увеличения целевой функции. Таким образом, наше новое расписание тоже будет оптимальным. Получили противоречие с максимальностью <tex>j</tex>. Значит из всех оптимальных расписаний нам подходят только те, в которых <tex>j = n</tex>. | ||
}} | }} | ||
+ | |||
+ | Заметим, что в полученном расписании будут интервалы в которые машина будет работать без остановки, и будут периоды простоя. | ||
+ | |||
+ | Для того, чтобы найти это оптимальное расписание, сведем к задаче о назначения следующим образом: | ||
+ | |||
+ | <tex>V_1=\left \{ 1,\ldots,n \right\}</tex> | ||
+ | |||
+ | <tex>V_2=\left \{ t_1,\ldots,t_n \right\}</tex> | ||
+ | |||
+ | |||
+ | <p> | ||
+ | <tex> | ||
+ | c_{ij} = | ||
+ | \left \{\begin{array}{ll} f_i(t_j + 1), & r_i \le t_i \\ | ||
+ | \infty, & otherwise | ||
+ | \end{array} \right. | ||
+ | </tex> | ||
+ | </p> |
Версия 03:42, 4 мая 2016
Задача: |
|
Решение за
Эта задача может быть решена сведением к решению задачи о назначениях. А именно, покажем, что решение задачи состоит сопоставлении различным заданиям различных времен начала выполнения работы. Если сопоставляем работе время , то вклад в целевую функцию будет . Далее будет показано, что при построении оптимального расписания нам нужно будет рассмотреть всего различных времен начала работ. Следовательно, подобная задача может быть решена за .
Поскольку
— монотонно неубывающие функции, то это значит, что в оптимальном расписании работы должны начинать исполняться как можно раньше. Первые самых ранних для начала исполнения времен могут быть вычислены следующим алгоритмом, в котором мы предполагаем, что все работы отсортированы по неубыванию времени появления := for =
Лемма: |
Существует оптимальное расписание в котором все задач распределены по всем временам , которые выбирает приведенный выше алгоритм. |
Доказательство: |
Предположим, что в некоторое оптимальное расписание Из того, как в алгоритме выбирались значения для входят времена где и из всех возможных оптимальных расписаний мы возьмем то, у которого будет максимально. следует, что — минимальное возможное время, большее , в которое можно начать выполнять какое-нибудь из оставшихся заданий. Если во время в расписании не выполняется никакого задания, то какое-то задание, которое могло бы выполнится в момент времени выполняется в позднее. Значит оно может быть перемещено в нашем расписании на время без увеличения целевой функции. Таким образом, наше новое расписание тоже будет оптимальным. Получили противоречие с максимальностью . Значит из всех оптимальных расписаний нам подходят только те, в которых . |
Заметим, что в полученном расписании будут интервалы в которые машина будет работать без остановки, и будут периоды простоя.
Для того, чтобы найти это оптимальное расписание, сведем к задаче о назначения следующим образом: