1rjpjpsumwjcjиsumtj — различия между версиями
Romanosov (обсуждение | вклад) (→Корректность алгоритма) |
м (rollbackEdits.php mass rollback) |
||
| (не показаны 4 промежуточные версии 2 участников) | |||
| Строка 15: | Строка 15: | ||
==Предисловие== | ==Предисловие== | ||
| − | Аналогично задаче [[1ripipsumwu|<tex>1 | r_i, p_i = p | \sum{w_i U_i}</tex>]], данные задачи решаются при помощи динамического программирования. | + | Аналогично задаче [[1ripipsumwu|<tex>1 | r_i, p_i = p | \sum{w_i U_i}</tex>]], данные задачи решаются при помощи [[Динамическое программирование | динамического программирования]]. |
Вместо критериев оптимизации <tex>\sum{w_i C_i}</tex> и <tex>\sum{T_i}</tex> возьмём более общую для них функцию вида <tex>\sum{f_i(C_i)}</tex>, где функции <tex>f_1,...,f_n</tex> обладают следующими свойствами: | Вместо критериев оптимизации <tex>\sum{w_i C_i}</tex> и <tex>\sum{T_i}</tex> возьмём более общую для них функцию вида <tex>\sum{f_i(C_i)}</tex>, где функции <tex>f_1,...,f_n</tex> обладают следующими свойствами: | ||
| Строка 42: | Строка 42: | ||
==Время работы== | ==Время работы== | ||
| + | |||
| + | Алгоритм работает за <tex>O(n \cdot n^2 \cdot n^2 \cdot n^2) = O(n^7)</tex> времени (см. время работы [[1ripipsumwu|<tex>1 | r_i, p_i = p | \sum{w_i U_i}</tex>]]). | ||
==Корректность алгоритма== | ==Корректность алгоритма== | ||
| Строка 88: | Строка 90: | ||
==Другие задачи== | ==Другие задачи== | ||
| + | |||
| + | ==См. также== | ||
| + | |||
| + | [[1ripipsumwu|<tex>1 | r_i, p_i = p | \sum{w_i U_i}</tex>]] | ||
==Источники информации== | ==Источники информации== | ||
P. Brucker. Scheduling Algorithms (2006), 5th edition, стр. 98 - 104 | P. Brucker. Scheduling Algorithms (2006), 5th edition, стр. 98 - 104 | ||
Текущая версия на 19:36, 4 сентября 2022
| Задача: |
| Дано работ и станок. Для каждой работы известны время появления , вес и дедлайн . Время выполнения всех работ равно . Требуется выполнить все работы так, чтобы значение , где — время окончания работы, было минимальным. |
| Задача: |
| Дано работ и станок. Для каждой работы известны время появления , вес и дедлайн . Время выполнения всех работ равно . Требуется выполнить все работы так, чтобы значение — суммарной медлительности работы () — было минимальным. |
Предисловие
Аналогично задаче , данные задачи решаются при помощи динамического программирования.
Вместо критериев оптимизации и возьмём более общую для них функцию вида , где функции обладают следующими свойствами:
- не убывает для всех ;
- не убывает для всех при .
Получим обобщенную задачу , для которой согласно лемме существует оптимальное расписание, в котором каждая работа начинается в момент времени из множества .
Функции и удовлетворяют данным условиям, если отсортировать работы так, что и .
Алгоритм
Отсортировать работы так, чтобы удовлетворяла условиям неубывания; for s, e T : s e (s, e) = 0; for k = 1..n for s, e T : s e if else , где return
Время работы
Корректность алгоритма
Ниже приведена теорема, показывающая, что возвращаемое алгоритмом значение равно .
| Теорема: |
Для любого и для любого , выполняется равенство:
. |
| Доказательство: |
|
Будем полагать, что равенство верно для (очевидно, равенство выполнится при ). Если , тогда что подразумевается в равенстве. Теперь нужно показать, что а) ; б) при . а) Полагаем, что ограничена. Тогда существует такая, что , при которой
б) Полагаем, что ограничена. Среди всех оптимальных расписаний, возвращающих выберем оптимальное расписание , соответствующий вектор времён окончания работ которого минимален при условии, что в лексикографическом порядке. Пусть — время начала работы в расписании . Тогда
Чтобы проверить первое неравенство, нужно показать, что все работы записаны в в пределах интервала , а все работы — в пределах . Докажем первое утверждение (второе доказывается аналогично). Полагаем, что существует работа такая, что , начинающаяся в расписании позже, чем работа . Поменяв местами и , получим оптимальное расписание такое, что , где — объективное значение расписания подразумевает , так как не убывает по условию. Таким образом, также является оптимальным, несмотря на то, что это противоречит лексикографической минимальности расписания . |
Другие задачи
См. также
Источники информации
P. Brucker. Scheduling Algorithms (2006), 5th edition, стр. 98 - 104