Opij1Cmax — различия между версиями
Qradimir (обсуждение | вклад) м |
Qradimir (обсуждение | вклад) (Вики-таблица, см. также) |
||
Строка 6: | Строка 6: | ||
===Описание алгоритма=== | ===Описание алгоритма=== | ||
− | Минимальное значение <tex> | + | Минимальное значение <tex> C_{max} </tex> упирается в следующие ограничения: |
− | # В допустимом расписании на каждом станке надо обработать каждую работу, поэтому <tex> | + | # В допустимом расписании на каждом станке надо обработать каждую работу, поэтому <tex> C_{max} \geqslant n </tex>. |
− | # В допустимом расписании каждую работу нужно обработать на всех станках, причем ее нельзя обрабатывать на двух станках одновременно, поэтому <tex> | + | # В допустимом расписании каждую работу нужно обработать на всех станках, причем ее нельзя обрабатывать на двух станках одновременно, поэтому <tex> C_{max} \geqslant m </tex>. |
− | Тогда <tex> | + | Тогда <tex> C_{max} = \max{(m, n)} </tex>. |
− | В случае <tex> n \geqslant m </tex> оптимальное расписание циклическими сдвигами последовательности <tex> 1 \dots n </tex> и выглядит следующим образом: | + | В случае <tex> n \geqslant m </tex> оптимальное расписание строится циклическими сдвигами последовательности <tex> 1 \dots n </tex> и выглядит следующим образом: |
− | + | {| class="wikitable" | |
− | + | |- | |
− | + | ! | |
− | + | !| 1 || 2 || 3 ||<tex>\hdots</tex>|| n - 1 || n | |
− | + | |- style="text-align:center;" | |
− | + | !<tex>M_1</tex> | |
+ | || 1 || 2 || 3 ||<tex>\hdots</tex>|| n - 1 || n | ||
+ | |- style="text-align:center;" | ||
+ | !<tex>M_2</tex> | ||
+ | || n || 1 || 2 ||<tex>\hdots</tex>|| n - 2 || n - 1 | ||
+ | |- style="text-align:center;" | ||
+ | !<tex>M_3</tex> | ||
+ | || n - 1 || n || 1 ||<tex>\hdots</tex>|| n - 3 || n - 2 | ||
+ | |- style="text-align:center;" | ||
+ | !<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;" | ||
+ | !<tex>M_m</tex> | ||
+ | || n - m + 2 || n - m + 3 || n - m + 4 ||<tex>\hdots</tex>|| n - m ||n - m + 1 | ||
+ | |} | ||
Если же <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>, построим расписание способом выше и удалим из полученного расписания фиктивные работы. | ||
Строка 27: | Строка 41: | ||
==См. также.== | ==См. также.== | ||
* [[Методы решения задач теории расписаний]] | * [[Методы решения задач теории расписаний]] | ||
+ | * [[O2Cmax|<tex> O2 \mid \mid C_{max} </tex>]] | ||
+ | * [[QpmtnCmax|<tex> Q \mid pmtn \mid C_{max} </tex>]] | ||
+ | * [[Opij1Sumwc|<tex> O \mid p_{ij} = 1 \mid \sum w_i C_i </tex>]] | ||
− | [[Категория: | + | [[Категория: Алгоритмы и структуры данных]] |
[[Категория: Теория расписаний]] | [[Категория: Теория расписаний]] |
Версия 04:04, 7 июня 2016
Задача: |
Дано | одинаковых станков, которые работают параллельно и работ, котороые необходимо выполнить в произвольном порядке на всех станках. Время выполнения каждой работы на любом станке одинаково и равно 1. Необходимо минимизировать время выполнения всех работ.
Алгоритм
Описание алгоритма
Минимальное значение
упирается в следующие ограничения:- В допустимом расписании на каждом станке надо обработать каждую работу, поэтому .
- В допустимом расписании каждую работу нужно обработать на всех станках, причем ее нельзя обрабатывать на двух станках одновременно, поэтому .
Тогда
.В случае
оптимальное расписание строится циклическими сдвигами последовательности и выглядит следующим образом:1 | 2 | 3 | n - 1 | n | ||
---|---|---|---|---|---|---|
1 | 2 | 3 | n - 1 | n | ||
n | 1 | 2 | n - 2 | n - 1 | ||
n - 1 | n | 1 | n - 3 | n - 2 | ||
n - m + 2 | n - m + 3 | n - m + 4 | n - m | n - m + 1 |
Если же
, добавим фиктивных работ с номерами , построим расписание способом выше и удалим из полученного расписания фиктивные работы.Оценка сложности алгоритма
Минимальное значение
вычисляется за времени. Построение расписания сводится к заполнению матрицы размером и выполняется за времени.