Участник: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 =
| Лемма: | 
Существует оптимальное расписание  в котором все  задач распределены по всем временам , которые выбирает приведенный выше алгоритм.  | 
| Доказательство: | 
| 
 Предположим, что в некоторое оптимальное расписание входят времена где и из всех возможных оптимальных расписаний мы возьмем то, у которого будет максимально. Из того, как в алгоритме выбирались значения для следует, что — минимальное возможное время, большее , в которое можно начать выполнять какое-нибудь из оставшихся заданий. Если во время в расписании не выполняется никакого задания, то какое-то задание, которое могло бы выполнится в момент времени выполняется в позднее. Значит оно может быть перемещено в нашем расписании на время без увеличения целевой функции. Таким образом, наше новое расписание тоже будет оптимальным. Получили противоречие с максимальностью . Значит из всех оптимальных расписаний нам подходят только те, в которых . | 
Заметим, что в полученном расписании будут интервалы в которые машина будет работать без остановки, и будут периоды простоя.
Для того, чтобы найти это оптимальное расписание, сведем к задаче о назначения следующим образом: