Изменения

Перейти к: навигация, поиск

1ripi1sumwc

1855 байт добавлено, 12:14, 2 июня 2015
Нет описания правки
{{Задача
|definition=
Дано <tex>n</tex> работ и один станок. Для каждой работы известно её время появления <tex>r_{i}</tex> и вес <tex>w_{i}</tex>. Время выполнения всех работ <tex>p_i</tex> равно <tex>1</tex>.Требуется выполнить все работы, чтобы значение <tex>\sum w_{i} C_{i}</tex> было минимальным, где <tex>C_{i}</tex> {{---}} время окончания работы.
}}
Это задание может быть сведено к более простому - Задаче о назначениях. По Перед решением этой причине можно решить задачу за <tex>O(n^3)</tex>. Теперь задачи рассмотрим как решить её эффективнееболее простую.
<tex dpi = "200"> 1 \mid r_i,p_i = 1 \mid \sum f_i</tex>{{Задача|definition=Дано <tex>n</tex> работ и один станок. Для каждой работы известно её время появления <tex>r_{i}</tex>. Время выполнения всех работ <tex>p_i</tex> равно <tex>1</tex>. Требуется выполнить все работы, чтобы значение <tex>\sum f_{i}</tex> было минимальным, где <tex>f_{i}</tex> {{---}} монотонная функция времени окончания работы <tex>C_{i}</tex>.}} ==Описание алгоритма простой задачи==Нам нужно распределить <tex>n</tex> работ в разное время. Если мы назначим время <tex>t</tex> для работы <tex>i</tex> то цена будет <tex>f_i(t + 1)</tex>. Далее покажем что <tex>n</tex> временных промежутков будут рассмотрены. Таким образом, задача может быть решена за <tex>O(n^3)</tex>. Так как функция <tex>f_i</tex> монотонно неубывающая, то работы в расписании будем располагать как можно раньше. <tex>n</tex> временных интервалов <tex>t_i</tex> для <tex>n</tex> работ могут быть получены с помощью следующего алгоритма, где предполагается что рабочие места нумеруются так: <tex> r_1 <= r_2 <=... <= r_n</tex> ==Псевдокод простой задачи== <tex>t_1 \leftarrow r_1 </tex> '''FOR''' <tex> i \leftarrow 2</tex> '''TO''' <tex>n</tex> '''DO''' <tex> t_i \leftarrow </tex> '''MAX'''<tex>(r_i, \ t_{i-1} - 1)</tex> ==Описание алгоритмаосновной задачи==
Пусть <tex>time</tex> {{---}} текущий момент времени.<br/>
Для каждого очередного значения <tex>time</tex>, которое изменяется от <tex>0</tex> до времени окончания последней работы, будем:
</ol>
==Доказательство корректности алгоритмаосновной задачи==
{{Теорема
|statement=
}}
==Псевдокодосновной задачи==
<tex> S \leftarrow \{1 \dots n\}</tex>
<tex> time \leftarrow 0</tex>
== Источники информации ==
* P. Brucker. Scheduling Algorithms (2006), 5th edition, стр. 19 - 20
* P. Brucker. Scheduling Algorithms (2006), 5th edition, стр. 84 - 85
[[Категория: Дискретная математика и алгоритмы]]
[[Категория: Теория расписаний]]
37
правок

Навигация