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

Материал из Викиконспекты
Перейти к: навигация, поиск
(Вики-таблица, см. также)
м (Таблица в техе)
Строка 15: Строка 15:
 
|-
 
|-
 
!               
 
!               
!| 1 || 2 || 3 ||<tex>\hdots</tex>|| n - 1 || n
+
!| <tex>\textbf1</tex> || <tex>\textbf2</tex> || <tex>\textbf3</tex> ||<tex>\bf{\hdots}</tex>|| <tex>\textbf{n - 1}</tex> || <tex>\textbf{n}</tex>
 
|- style="text-align:center;"
 
|- style="text-align:center;"
!<tex>M_1</tex>
+
!<tex>\bf{M_1}</tex>
|| 1 || 2 || 3 ||<tex>\hdots</tex>|| n - 1 || n
+
|| <tex>1</tex> || <tex>2</tex> || <tex>3</tex> ||<tex>\hdots</tex>|| <tex>n - 1</tex> || <tex>n</tex>
 
|- style="text-align:center;"
 
|- style="text-align:center;"
!<tex>M_2</tex>
+
!<tex>\bf{M_2}</tex>
|| n || 1 || 2 ||<tex>\hdots</tex>|| n - 2 || n - 1
+
|| <tex>n</tex> || <tex>1</tex> || <tex>2</tex> ||<tex>\hdots</tex>|| <tex>n - 2</tex> || <tex>n - 1</tex>
 
|- style="text-align:center;"
 
|- style="text-align:center;"
!<tex>M_3</tex>
+
!<tex>\bf{M_3}</tex>
|| n - 1 || n || 1 ||<tex>\hdots</tex>|| n - 3 || n - 2
+
|| <tex>n - 1</tex> || <tex>n</tex> || <tex>1</tex> ||<tex>\hdots</tex>|| <tex>n - 3</tex> || <tex>n - 2</tex>
 
|- style="text-align:center;"
 
|- style="text-align:center;"
!<tex>\vdots</tex>             
+
!<tex>\bf{\vdots}</tex>             
 
||<tex>\vdots</tex>||<tex>\vdots</tex>||<tex>\vdots</tex>||<tex>\ddots</tex>||<tex>\vdots</tex>||<tex>\vdots</tex>  
 
||<tex>\vdots</tex>||<tex>\vdots</tex>||<tex>\vdots</tex>||<tex>\ddots</tex>||<tex>\vdots</tex>||<tex>\vdots</tex>  
 
|- style="text-align:center;"
 
|- style="text-align:center;"
!<tex>M_m</tex>
+
!<tex>\bf{M_m}</tex>
|| n - m + 2 || n - m + 3 || n - m + 4 ||<tex>\hdots</tex>|| n - m ||n - m + 1
+
|| <tex>n - m + 2</tex> || <tex>n - m + 3</tex> || <tex>n - m + 4</tex> ||<tex>\hdots</tex>|| <tex>n - m</tex> || <tex>n - m + 1</tex>
 
|}
 
|}
  
Если же <tex> n < m </tex>, добавим <tex> m - n </tex> фиктивных работ с номерами <tex> n + 1 \dots m </tex>, построим расписание способом выше и удалим из полученного расписания фиктивные работы.
+
Если же <tex> n < m </tex>, добавим <tex> m - n </tex> фиктивных работ с номерами <tex> n + 1 \dots m </tex>, построим расписание способом выше и удалим из полученного расписания фиктивные работы.
  
 
===Оценка сложности алгоритма===
 
===Оценка сложности алгоритма===

Версия 17:24, 7 июня 2016

[math]O \mid p_{ij} = 1 \mid C_{max}[/math]

Задача:
Дано [math]m[/math] одинаковых станков, которые работают параллельно и [math]n[/math] работ, котороые необходимо выполнить в произвольном порядке на всех станках. Время выполнения каждой работы на любом станке одинаково и равно 1. Необходимо минимизировать время выполнения всех работ.

Алгоритм

Описание алгоритма

Минимальное значение [math] C_{max} [/math] упирается в следующие ограничения:

  1. В допустимом расписании на каждом станке надо обработать каждую работу, поэтому [math] C_{max} \geqslant n [/math].
  2. В допустимом расписании каждую работу нужно обработать на всех станках, причем ее нельзя обрабатывать на двух станках одновременно, поэтому [math] C_{max} \geqslant m [/math].

Тогда [math] C_{max} = \max{(m, n)} [/math].

В случае [math] n \geqslant m [/math] оптимальное расписание строится циклическими сдвигами последовательности [math] 1 \dots n [/math] и выглядит следующим образом:

[math]\textbf1[/math] [math]\textbf2[/math] [math]\textbf3[/math] [math]\bf{\hdots}[/math] [math]\textbf{n - 1}[/math] [math]\textbf{n}[/math]
[math]\bf{M_1}[/math] [math]1[/math] [math]2[/math] [math]3[/math] [math]\hdots[/math] [math]n - 1[/math] [math]n[/math]
[math]\bf{M_2}[/math] [math]n[/math] [math]1[/math] [math]2[/math] [math]\hdots[/math] [math]n - 2[/math] [math]n - 1[/math]
[math]\bf{M_3}[/math] [math]n - 1[/math] [math]n[/math] [math]1[/math] [math]\hdots[/math] [math]n - 3[/math] [math]n - 2[/math]
[math]\bf{\vdots}[/math] [math]\vdots[/math] [math]\vdots[/math] [math]\vdots[/math] [math]\ddots[/math] [math]\vdots[/math] [math]\vdots[/math]
[math]\bf{M_m}[/math] [math]n - m + 2[/math] [math]n - m + 3[/math] [math]n - m + 4[/math] [math]\hdots[/math] [math]n - m[/math] [math]n - m + 1[/math]

Если же [math] n \lt m [/math], добавим [math] m - n [/math] фиктивных работ с номерами [math] n + 1 \dots m [/math], построим расписание способом выше и удалим из полученного расписания фиктивные работы.

Оценка сложности алгоритма

Минимальное значение [math] C_{max} [/math] вычисляется за [math] \mathcal{O}(1) [/math] времени. Построение расписания сводится к заполнению матрицы размером [math] m \times \max{(m, n)} [/math] и выполняется за [math] \mathcal{O}(m \dot (m + n)) [/math] времени.

См. также.