1p1sumu — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Новая страница: «{{Шаблон:Задача |definition = Дан один станок и <tex>n</tex> работ, для которых заданы их дедлайны <tex>...»)
 
Строка 1: Строка 1:
 +
<tex dpi = "200" >1 \mid p_i=1\mid \sum U_i</tex>
 +
 
{{Шаблон:Задача
 
{{Шаблон:Задача
 
|definition =  
 
|definition =  
Строка 19: Строка 21:
  
 
В результате выполнения данного алгоритма будет получено корректное расписание, в котором каждая работа встречается не более одного раза. Оптимальность полученного расписания доказывается аналогично [[1sumwu|<tex>1 \mid  \mid \sum w_{i}U_{i}</tex>]].
 
В результате выполнения данного алгоритма будет получено корректное расписание, в котором каждая работа встречается не более одного раза. Оптимальность полученного расписания доказывается аналогично [[1sumwu|<tex>1 \mid  \mid \sum w_{i}U_{i}</tex>]].
 
==Источники информации==
 
* Peter Brucker. «Scheduling Algorithms» {{---}} «Springer», 2006 г. {{---}} 86 стр. {{---}} ISBN 978-3-540-69515-8
 
  
 
== См. также ==
 
== См. также ==
Строка 28: Строка 27:
 
* [[1sumwu|<tex>1 \mid  \mid \sum w_{i}U_{i}</tex>]]
 
* [[1sumwu|<tex>1 \mid  \mid \sum w_{i}U_{i}</tex>]]
  
[[Категория: Дискретная математика и алгоритмы]]
+
==Источники информации==
 +
* Peter Brucker. «Scheduling Algorithms» {{---}} «Springer», 2006 г. {{---}} 86 стр. {{---}} ISBN 978-3-540-69515-8
 +
 
 +
[[Категория: Алгоритмы и структуры данных]]
 
[[Категория: Теория расписаний]]
 
[[Категория: Теория расписаний]]

Версия 14:05, 8 июня 2016

[math]1 \mid p_i=1\mid \sum U_i[/math]


Задача:
Дан один станок и [math]n[/math] работ, для которых заданы их дедлайны [math]d_i[/math], а все времена выполнения на этом станке [math]p_i = 1[/math]. Нужно успеть выполнить как можно больше работ.


Алгоритм

Чтобы получить оптимальное расписание, будем строить максимальное множество [math]S[/math] тех работ, которые успеют выполниться. Само расписание тогда будет состоять из всех работ из [math]S[/math], упорядоченных по неубыванию дедлайнов. Будем добавлять в [math]S[/math] работы в порядке неубывания значений [math]d_j[/math], если успеваем их выполнить.

Отсортировать работы так, чтобы [math]d_1 \leqslant d_2 \leqslant \dots \leqslant d_n[/math]
[math]S = \varnothing[/math]
[math]time = 0[/math]
for i = 1 to n do
  if [math]time \lt  d_i[/math]
    [math]S = S \cup \{ i \}[/math]
  [math]time[/math] += [math]1[/math]
  

Cортировку работ по неубыванию дедлайнов осуществляем с помощью сортировки подсчетом за [math]O(n)[/math], а значит и весь алгоритм будет работать за [math]O(n)[/math].

В результате выполнения данного алгоритма будет получено корректное расписание, в котором каждая работа встречается не более одного раза. Оптимальность полученного расписания доказывается аналогично [math]1 \mid \mid \sum w_{i}U_{i}[/math].

См. также

Источники информации

  • Peter Brucker. «Scheduling Algorithms» — «Springer», 2006 г. — 86 стр. — ISBN 978-3-540-69515-8