Методы решения задач теории расписаний — различия между версиями
(агрумент -> аргумент) |
Qradimir (обсуждение | вклад) (Выделены задачи в конспекты, добавлены ссылки, разделы в конце конспекта) |
||
Строка 5: | Строка 5: | ||
Примечание — если требуется полиномиальное время для решения задачи, требуется, чтобы сведение к другой задаче и трансформация расписания в допустимое также происходили за полиномиальное время. | Примечание — если требуется полиномиальное время для решения задачи, требуется, чтобы сведение к другой задаче и трансформация расписания в допустимое также происходили за полиномиальное время. | ||
− | * | + | С помощью этого метода решаются: |
− | * | + | * Некоторые задачи класса Open Shop при условии <tex>p_{ij}=1</tex> сводятся к задачам равной длительности на параллельных станках. |
+ | ** <tex> O \mid p_{ij} = 1 \mid \sum w_i C_i </tex> ([[Opij1Sumwc|ссылка]]) | ||
+ | ** <tex> O \mid p_{ij} = 1, r_i \mid C_{max} </tex> <ref>Peter Brucker «Scheduling Algorithms», fifth edition, Springer — с. 161</ref> | ||
+ | * Некоторые задачи класса Flow Shop при условии <tex>p_{ij}=1</tex> сводятся к задаче на одном станке. | ||
+ | ** <tex> F \mid p_{ij} = 1 \mid \sum w_i U_i </tex> ([[Fpij1sumwu|ссылка]]) | ||
* Часто в задачах, в которых допускаются прерывания, оптимальный ответ совпадает с соответствующими задачами без прерываний: | * Часто в задачах, в которых допускаются прерывания, оптимальный ответ совпадает с соответствующими задачами без прерываний: | ||
− | ** <tex> P \mid pmtn \mid \sum w_i C_i </tex> | + | ** <tex> P \mid pmtn \mid \sum w_i C_i </tex> <ref>Peter Brucker «Scheduling Algorithms», fifth edition, Springer — с. 121</ref> |
− | ** <tex> F2 \mid pmtn \mid C_{max} </tex> | + | ** <tex> F2 \mid pmtn \mid C_{max} </tex> ([[Flow_shop|ссылка]]) |
− | * | + | * Некоторые задачи проверки существования расписания сводятся к задаче поиска максимального потока: |
− | ** <tex> Q \mid pmtn, r_i | + | ** <tex> Q \mid pmtn, r_i\mid L_{max} </tex> <ref>Peter Brucker «Scheduling Algorithms», fifth edition, Springer — с. 129-133</ref> |
− | + | ** <tex> R \mid \mid \sum C_i </tex> ([[RSumCi|ссылка]]) | |
− | + | * <tex> 1 \mid intree \mid \sum w_i C_i </tex> ([[1outtreesumwc|ссылка]]) | |
− | |||
− | |||
− | * | ||
− | * | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Построение расписания по нижней оценке == | == Построение расписания по нижней оценке == | ||
Строка 57: | Строка 23: | ||
С помощью этого метода решаются: | С помощью этого метода решаются: | ||
− | * <tex> P \mid pmtn \mid C_{max}</tex> | + | * <tex> P \mid pmtn \mid C_{max}</tex> <ref>Peter Brucker «Scheduling Algorithms», fifth edition, Springer — с. 108</ref> |
− | * <tex> R \mid pmtn \mid C_{max}</tex> | + | * <tex> R \mid pmtn \mid C_{max}</tex> <ref>Peter Brucker «Scheduling Algorithms», fifth edition, Springer — с. 137-139</ref> |
− | * <tex> O \mid p_{ij}=1 \mid C_{max}</tex> | + | * <tex> O \mid p_{ij}=1 \mid C_{max}</tex> ([[Opij1Cmax|ссылка]]) |
− | * <tex> Q \mid pmtn \mid C_{max}</tex> ([[QpmtnCmax |ссылка]]) | + | * <tex> Q \mid pmtn \mid C_{max}</tex> ([[QpmtnCmax|ссылка]]) |
− | + | === P | pmtn | C_max === | |
− | |||
# В допустимом расписании выполнение всех работ не может завершиться раньше одной из них, поэтому <tex> T \ge p_i </tex>. | # В допустимом расписании выполнение всех работ не может завершиться раньше одной из них, поэтому <tex> T \ge p_i </tex>. | ||
# Если все станки работали время <tex> T </tex>, на них могло выполниться не больше <tex> Tm </tex> работы, то есть <tex> \sum\limits_i p_i \le Tm </tex> и <tex> T \ge \frac1m \sum\limits_i p_i </tex>. | # Если все станки работали время <tex> T </tex>, на них могло выполниться не больше <tex> Tm </tex> работы, то есть <tex> \sum\limits_i p_i \le Tm </tex> и <tex> T \ge \frac1m \sum\limits_i p_i </tex>. | ||
# Тогда <tex> T_{min} = \max {(\max\limits_i p_i, \frac1m \sum\limits_i p_i)} </tex>. | # Тогда <tex> T_{min} = \max {(\max\limits_i p_i, \frac1m \sum\limits_i p_i)} </tex>. | ||
Построим расписание, подходящее под эту границу: будем по очереди заполнять машины работами в произвольном порядке, и если очередная работа не помещается на текущей машине полностью, перенесем ее выходящую за <tex> T_{min} </tex> часть на следующую машину. Благодаря первому ограничению никакая работа не будет выполняться одновременно на двух станках, а благодаря второму — не останется работы, которую мы не сможем выполнить. | Построим расписание, подходящее под эту границу: будем по очереди заполнять машины работами в произвольном порядке, и если очередная работа не помещается на текущей машине полностью, перенесем ее выходящую за <tex> T_{min} </tex> часть на следующую машину. Благодаря первому ограничению никакая работа не будет выполняться одновременно на двух станках, а благодаря второму — не останется работы, которую мы не сможем выполнить. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Бинарный поиск по ответу == | == Бинарный поиск по ответу == | ||
Строка 93: | Строка 38: | ||
Этим методом решаются: | Этим методом решаются: | ||
− | |||
− | |||
* <tex> Q \mid pmtn, r_i \mid L_{max} </tex> ([[QpmtnriLmax |ссылка]]) | * <tex> Q \mid pmtn, r_i \mid L_{max} </tex> ([[QpmtnriLmax |ссылка]]) | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Жадное построение расписания == | == Жадное построение расписания == | ||
Строка 118: | Строка 50: | ||
С помощью этого метода решаются: | С помощью этого метода решаются: | ||
* <tex> 1 \mid prec \mid f_{max} </tex> ([[Правило Лаулера|''Lawler's algorithm]]) | * <tex> 1 \mid prec \mid f_{max} </tex> ([[Правило Лаулера|''Lawler's algorithm]]) | ||
− | * <tex> 1 \mid outtree \mid \sum w_i C_i </tex> | + | * <tex> 1 \mid outtree \mid \sum w_i C_i </tex> ([[1outtreesumwc|ссылка]]) |
− | * <tex> 1 \mid p_i = 1 \mid \sum w_i U_i </tex> (''Earliest Due Date rule'') | + | * <tex> 1 \mid p_i = 1 \mid \sum w_i U_i </tex> ([[1pi1sumwu|''Earliest Due Date rule'']]) |
− | * <tex> 1 \mid \mid \sum U_i </tex> | + | * <tex> 1 \mid \mid \sum U_i </tex> ([[1sumu|ссылка]]) |
Обычно оптимальность жадного выбора доказывают двумя способами: | Обычно оптимальность жадного выбора доказывают двумя способами: | ||
Строка 132: | Строка 64: | ||
=== Правильно === | === Правильно === | ||
− | + | При доказательстве оптимательности применима стратегия '''аргумент замены''' (англ. ''exchange argument''). Стратегия заключается в рассмотрении текущего решения <tex> S </tex> и оптимального решения <tex> O </tex>. Далее предлагается способ модификации <tex> O </tex> в <tex> O'</tex> так, что: | |
# <tex> f(O') \le f(O) </tex>, то есть <tex> O' </tex> также оптимально. | # <tex> f(O') \le f(O) </tex>, то есть <tex> O' </tex> также оптимально. | ||
# <tex> O' </tex> «более похоже» на <tex> S </tex>, чем на <tex> O </tex>. | # <tex> O' </tex> «более похоже» на <tex> S </tex>, чем на <tex> O </tex>. | ||
Строка 139: | Строка 71: | ||
Отношение «более похоже» должно быть [[Отношение порядка | отношением частичного строгого порядка]]. Часто в качестве него можно выбрать отношение «длина наибольшего общего префикса решения <tex> A </tex> и <tex> S </tex> меньше наибольшего общего префикса решения <tex> B </tex> и <tex> S </tex>». Тогда если мы сможем увеличить длину наибольшего общего префикса для оптимального решения, не нарушив оптимальности, мы приблизимся к <tex> S </tex>. Можно выбирать и более сложные отношения, например, в доказательстве оптимальности алгоритма <tex> P \mid \mid \sum w_i C_i </tex> для решения задачи <tex> P \mid pmtn \mid \sum w_i C_i </tex> используется отношение «время последнего прерывания больше или количество прерываний меньше». | Отношение «более похоже» должно быть [[Отношение порядка | отношением частичного строгого порядка]]. Часто в качестве него можно выбрать отношение «длина наибольшего общего префикса решения <tex> A </tex> и <tex> S </tex> меньше наибольшего общего префикса решения <tex> B </tex> и <tex> S </tex>». Тогда если мы сможем увеличить длину наибольшего общего префикса для оптимального решения, не нарушив оптимальности, мы приблизимся к <tex> S </tex>. Можно выбирать и более сложные отношения, например, в доказательстве оптимальности алгоритма <tex> P \mid \mid \sum w_i C_i </tex> для решения задачи <tex> P \mid pmtn \mid \sum w_i C_i </tex> используется отношение «время последнего прерывания больше или количество прерываний меньше». | ||
+ | |||
+ | == См. также. == | ||
+ | * [[Правило Лаулера]] | ||
+ | * [[Flow shop]] | ||
+ | * [[Opi1sumu|<tex> O \mid p_{ij} = 1 \mid \sum U_i</tex>]] | ||
== Примечания == | == Примечания == | ||
<references/> | <references/> | ||
+ | |||
+ | == Источники информации == | ||
+ | * Peter Brucker «Scheduling Algorithms», fifth edition, Springer ISBN 978-3-540-69515-8 | ||
[[Категория: Дискретная математика и алгоритмы]] | [[Категория: Дискретная математика и алгоритмы]] | ||
[[Категория: Теория расписаний]] | [[Категория: Теория расписаний]] |
Версия 12:31, 6 июня 2016
Содержание
Сведение к другой задаче
При сведении текущей задачи теории расписаний
к какой-то другой (не обязательно задаче теории расписаний) необходимо доказать два пункта:- Допустимость расписания, построенного с помощью задачи , или существование способа его трансформации в допустимое без нарушения оптимальности.
- Следствие того, что если мы оптимизируем , мы также оптимизируем ответ для .
Примечание — если требуется полиномиальное время для решения задачи, требуется, чтобы сведение к другой задаче и трансформация расписания в допустимое также происходили за полиномиальное время.
С помощью этого метода решаются:
- Некоторые задачи класса Open Shop при условии сводятся к задачам равной длительности на параллельных станках.
- Некоторые задачи класса Flow Shop при условии
- ссылка) (
сводятся к задаче на одном станке.
- Часто в задачах, в которых допускаются прерывания, оптимальный ответ совпадает с соответствующими задачами без прерываний:
- Некоторые задачи проверки существования расписания сводятся к задаче поиска максимального потока:
- ссылка) (
Построение расписания по нижней оценке
Этот метод обычно применим к задачам, в которых целевая функция —
. Построим какой-то набор нижних ограничений на произвольное расписание для задачи и возьмем из них максимальное. Затем построим произвольное допустимое расписание, достигающее этой оценки.С помощью этого метода решаются:
P | pmtn | C_max
- В допустимом расписании выполнение всех работ не может завершиться раньше одной из них, поэтому .
- Если все станки работали время , на них могло выполниться не больше работы, то есть и .
- Тогда .
Построим расписание, подходящее под эту границу: будем по очереди заполнять машины работами в произвольном порядке, и если очередная работа не помещается на текущей машине полностью, перенесем ее выходящую за
часть на следующую машину. Благодаря первому ограничению никакая работа не будет выполняться одновременно на двух станках, а благодаря второму — не останется работы, которую мы не сможем выполнить.Бинарный поиск по ответу
Этот способ часто подходит для задач, в которых надо минимизировать
(если мы умеем решать соответствующую задачу существования расписания), реже для . Важно помнить, что если требуется полиномиальное по решение, оно не должно зависеть от логарифма ответа, но иногда ответ ограничен полиномом от , и мы можем применить этот метод.Этим методом решаются:
- ссылка) (
Жадное построение расписания
Определение: |
Жадный алгоритм — алгоритм, в котором локальные оптимизации решения достигают глобального оптимума. |
Естественно, далеко не все оптимизационные задачи можно решать жадно — для этого сначала необходимо доказать оптимальность жадного выбора.
С помощью этого метода решаются:
- Lawler's algorithm) (
- ссылка) (
- Earliest Due Date rule) (
- ссылка) (
Обычно оптимальность жадного выбора доказывают двумя способами:
Неправильно
Приведем пример часто распространенных неправильных действий при доказательстве оптимальности жадного алгоритма:
Пусть предложенным нами алгоритмом мы получили какое-то решение
. Атомарными изменениями в этом решении будем получать другие допустимые решения и докажем, что . Тогда решение — оптимально.Проблема в этих рассуждениях в том, что ими мы доказываем локальную оптимальность алгоритма в решении
. Получение же глобального минимума может потребовать нескольких атомарных изменений в расписании, поэтому доказать оптимальность таким образом в общем случае невозможно. Как ближайшую аналогию, можно привести неправильное утверждение для произвольной функции — «если все частные производные неотрицательны, то в точке наблюдается глобальный минимум».Правильно
При доказательстве оптимательности применима стратегия аргумент замены (англ. exchange argument). Стратегия заключается в рассмотрении текущего решения
и оптимального решения . Далее предлагается способ модификации в так, что:- , то есть также оптимально.
- «более похоже» на , чем на .
Если такой способ найден, получаем, что какой-то последовательностью модификаций
получим , из чего следует оптимальность .Отношение «более похоже» должно быть отношением частичного строгого порядка. Часто в качестве него можно выбрать отношение «длина наибольшего общего префикса решения и меньше наибольшего общего префикса решения и ». Тогда если мы сможем увеличить длину наибольшего общего префикса для оптимального решения, не нарушив оптимальности, мы приблизимся к . Можно выбирать и более сложные отношения, например, в доказательстве оптимальности алгоритма для решения задачи используется отношение «время последнего прерывания больше или количество прерываний меньше».
См. также.
Примечания
- ↑ Peter Brucker «Scheduling Algorithms», fifth edition, Springer — с. 161
- ↑ Peter Brucker «Scheduling Algorithms», fifth edition, Springer — с. 121
- ↑ Peter Brucker «Scheduling Algorithms», fifth edition, Springer — с. 129-133
- ↑ Peter Brucker «Scheduling Algorithms», fifth edition, Springer — с. 108
- ↑ Peter Brucker «Scheduling Algorithms», fifth edition, Springer — с. 137-139
Источники информации
- Peter Brucker «Scheduling Algorithms», fifth edition, Springer ISBN 978-3-540-69515-8