F2Cmax — различия между версиями
GR1n (обсуждение | вклад) (→Постановка задачи) |
GR1n (обсуждение | вклад) (→Описание алгоритма) |
||
Строка 9: | Строка 9: | ||
== Описание алгоритма == | == Описание алгоритма == | ||
+ | Пусть <tex>p_{i1}</tex> {{---}} время выполнения <tex>i</tex>-ой работы на первом станке, а <tex>p_{i2}</tex> {{---}} на втором.<br/> | ||
+ | <ol> | ||
+ | <li>Будем в ходе нашего алгоритма строить два списка <tex> L </tex> и <tex> R </tex>. Изначально оба списка пусты. И будем поддерживать множество еще не распределенных по спискам <tex> L </tex> и <tex> R </tex> работ <tex>X = \{i \mid i = 1, \dots, n\}</tex> </li> | ||
+ | <li> Пока множество <tex> X </tex> непусто будем распределять работы по спискам следующим образом: | ||
+ | <ul> | ||
+ | <li> Находим такие индексы <tex> i </tex> и <tex> j </tex>, что <tex>p_{ij} = \min \{ p_{ij} \mid i \in X; j = 1, 2\}</tex> </li> | ||
+ | <li>Если минимум достигается на первом станке (иными словами <tex> j = 1 </tex>), то допишем работу <tex> i </tex> в конец листа <tex> L </tex>, иначе дописываем в начало листа <tex> R </tex> </li> | ||
+ | </ul> | ||
+ | </li> | ||
+ | <li> Рассмотрим лист <tex> T = L + R</tex>. Утверждается, что этот лист является оптимальной перестановкой работ как на первом, так и на втором станке. Далее расставляем подряд работы на первом станке согласно перестановке, после чего ставим в том же порядке работы на втором стане, при этом избегая одновременного выполнения одной и той же работы. </li> | ||
+ | |||
+ | </ol> | ||
==Доказательство корректности алгоритма== | ==Доказательство корректности алгоритма== |
Версия 18:32, 10 июня 2013
Содержание
Постановка задачи
Рассмотрим задачу:
- Дано работ и станка.
- Для каждой работы известно её время выполнения на каждом станке.
- Каждую работу необходимо выполнить сначала на первом станке, а потом на втором.
Требуется минимизировать время окончания всех работ.
Описание алгоритма
Пусть
- Будем в ходе нашего алгоритма строить два списка и . Изначально оба списка пусты. И будем поддерживать множество еще не распределенных по спискам и работ
- Пока множество
- Находим такие индексы и , что
- Если минимум достигается на первом станке (иными словами ), то допишем работу в конец листа , иначе дописываем в начало листа
непусто будем распределять работы по спискам следующим образом:
- Рассмотрим лист . Утверждается, что этот лист является оптимальной перестановкой работ как на первом, так и на втором станке. Далее расставляем подряд работы на первом станке согласно перестановке, после чего ставим в том же порядке работы на втором стане, при этом избегая одновременного выполнения одной и той же работы.
Доказательство корректности алгоритма
Псевдокод
Сложность алгоритма
Источники
- Peter Brucker. «Scheduling Algorithms» — «Springer», 2006 г. — 175 стр. — ISBN 978-3-540-69515-8