1ripi1sumwc — различия между версиями
| Строка 44: | Строка 44: | ||
==Сложность алгоритма== | ==Сложность алгоритма== | ||
Множество <tex>S</tex> станет пустым не позже, чем через <tex>n + \max r_{i}</tex> шагов цикла. Определить максимум в множестве можно за время <tex>O(\log n)</tex>, используя , например, очередь с приоритетами. Значит общее время работы алгоритма <tex>O((n + \max r_{i})\log n)</tex> | Множество <tex>S</tex> станет пустым не позже, чем через <tex>n + \max r_{i}</tex> шагов цикла. Определить максимум в множестве можно за время <tex>O(\log n)</tex>, используя , например, очередь с приоритетами. Значит общее время работы алгоритма <tex>O((n + \max r_{i})\log n)</tex> | ||
| + | |||
| + | |||
| + | == Источники информации == | ||
| + | * P. Brucker. Scheduling Algorithms (2006), 5th edition, стр. 84 - 85 | ||
[[Категория: Дискретная математика и алгоритмы]] | [[Категория: Дискретная математика и алгоритмы]] | ||
[[Категория: Теория расписаний]] | [[Категория: Теория расписаний]] | ||
Версия 14:47, 29 мая 2015
| Задача: |
| Дано работ и один станок. Для каждой работы известно её время появления и вес . Время выполнения всех работ равно .Требуется выполнить все работы, чтобы значение было минимальным, где — время окончания работы. |
Содержание
Описание алгоритма
Пусть — текущий момент времени.
Для каждого очередного значения , которое изменяется от до времени окончания последней работы, будем:
- Выбирать работу из множества невыполненных работ, у которой , а значение максимально.
- Если мы смогли найти работу , то выполняем её в момент времени и удаляем из множества невыполненных работ.
- Увеличиваем на один.
Доказательство корректности алгоритма
| Теорема: |
Расписание, построенное данным алгоритмом, является корректным и оптимальным. |
| Доказательство: |
|
Доказательство будем вести от противного. Первая скобка отрицательная: . Вторая скобка тоже отрицательная из того, что в работа с весом выполняется раньше, значит её вес должен быть больше . |
Псевдокод
while if
Сложность алгоритма
Множество станет пустым не позже, чем через шагов цикла. Определить максимум в множестве можно за время , используя , например, очередь с приоритетами. Значит общее время работы алгоритма
Источники информации
- P. Brucker. Scheduling Algorithms (2006), 5th edition, стр. 84 - 85