Opij1Cmax — различия между версиями
Qradimir (обсуждение | вклад) м (→Оценка сложности алгоритма) |
м (rollbackEdits.php mass rollback) |
||
| (не показано 6 промежуточных версий 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>, построим расписание способом выше и удалим из полученного расписания фиктивные работы. |
===Оценка сложности алгоритма=== | ===Оценка сложности алгоритма=== | ||
| Строка 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>]] | ||
| − | [[Категория: | + | [[Категория: Алгоритмы и структуры данных]] |
[[Категория: Теория расписаний]] | [[Категория: Теория расписаний]] | ||
Текущая версия на 19:26, 4 сентября 2022
| Задача: |
| Дано одинаковых станков, которые работают параллельно и работ, котороые необходимо выполнить в произвольном порядке на всех станках. Время выполнения каждой работы на любом станке одинаково и равно 1. Необходимо минимизировать время выполнения всех работ. |
Алгоритм
Описание алгоритма
Минимальное значение упирается в следующие ограничения:
- В допустимом расписании на каждом станке надо обработать каждую работу, поэтому .
- В допустимом расписании каждую работу нужно обработать на всех станках, причем ее нельзя обрабатывать на двух станках одновременно, поэтому .
Тогда .
В случае оптимальное расписание строится циклическими сдвигами последовательности и выглядит следующим образом:
Если же , добавим фиктивных работ с номерами , построим расписание способом выше и удалим из полученного расписания фиктивные работы.
Оценка сложности алгоритма
Минимальное значение вычисляется за времени. Построение расписания сводится к заполнению матрицы размером и выполняется за времени.