Opij1Cmax — различия между версиями
Qradimir (обсуждение | вклад) (Добавлен конспект) |
м (rollbackEdits.php mass rollback) |
||
(не показано 7 промежуточных версий 3 участников) | |||
Строка 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 \ | + | В случае <tex> n \geqslant m </tex> оптимальное расписание строится циклическими сдвигами последовательности <tex> 1 \dots n </tex> и выглядит следующим образом: |
− | + | {| class="wikitable" | |
− | + | |- | |
− | + | ! | |
− | + | !| <tex>\textbf1</tex> || <tex>\textbf2</tex> || <tex>\textbf3</tex> ||<tex>\bf{\cdots}</tex>|| <tex>\textbf{n - 1}</tex> || <tex>\textbf{n}</tex> | |
− | + | |- style="text-align:center;" | |
− | + | !<tex>\bf{M_1}</tex> | |
+ | || <tex>1</tex> || <tex>2</tex> || <tex>3</tex> ||<tex>\cdots</tex>|| <tex>n - 1</tex> || <tex>n</tex> | ||
+ | |- style="text-align:center;" | ||
+ | !<tex>\bf{M_2}</tex> | ||
+ | || <tex>n</tex> || <tex>1</tex> || <tex>2</tex> ||<tex>\cdots</tex>|| <tex>n - 2</tex> || <tex>n - 1</tex> | ||
+ | |- style="text-align:center;" | ||
+ | !<tex>\bf{M_3}</tex> | ||
+ | || <tex>n - 1</tex> || <tex>n</tex> || <tex>1</tex> ||<tex>\cdots</tex>|| <tex>n - 3</tex> || <tex>n - 2</tex> | ||
+ | |- style="text-align:center;" | ||
+ | !<tex>\bf{\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>\bf{M_m}</tex> | ||
+ | || <tex>n - m + 2</tex> || <tex>n - m + 3</tex> || <tex>n - m + 4</tex> ||<tex>\cdots</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>, построим расписание способом выше и удалим из полученного расписания фиктивные работы. |
===Оценка сложности алгоритма=== | ===Оценка сложности алгоритма=== | ||
− | Минимальное значение <tex> C_{max} </tex> вычисляется за <tex> O(1) </tex> времени. | + | Минимальное значение <tex> C_{max} </tex> вычисляется за <tex> \mathcal{O}(1) </tex> времени. |
− | Построение расписания сводится к заполнению матрицы размером <tex> m \times \max{(m, n)} </tex> и выполняется за <tex> O(m \dot (m + n)) </tex> времени. | + | Построение расписания сводится к заполнению матрицы размером <tex> m \times \max{(m, n)} </tex> и выполняется за <tex> \mathcal{O}(m \dot (m + n)) </tex> времени. |
==См. также.== | ==См. также.== | ||
* [[Методы решения задач теории расписаний]] | * [[Методы решения задач теории расписаний]] | ||
+ | * [[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>]] | ||
− | [[Категория: | + | [[Категория: Алгоритмы и структуры данных]] |
[[Категория: Теория расписаний]] | [[Категория: Теория расписаний]] |
Текущая версия на 19:26, 4 сентября 2022
Задача: |
Дано | одинаковых станков, которые работают параллельно и работ, котороые необходимо выполнить в произвольном порядке на всех станках. Время выполнения каждой работы на любом станке одинаково и равно 1. Необходимо минимизировать время выполнения всех работ.
Алгоритм
Описание алгоритма
Минимальное значение
упирается в следующие ограничения:- В допустимом расписании на каждом станке надо обработать каждую работу, поэтому .
- В допустимом расписании каждую работу нужно обработать на всех станках, причем ее нельзя обрабатывать на двух станках одновременно, поэтому .
Тогда
.В случае
оптимальное расписание строится циклическими сдвигами последовательности и выглядит следующим образом:Если же
, добавим фиктивных работ с номерами , построим расписание способом выше и удалим из полученного расписания фиктивные работы.Оценка сложности алгоритма
Минимальное значение
вычисляется за времени. Построение расписания сводится к заполнению матрицы размером и выполняется за времени.