QpmtnriLmax — различия между версиями
Zemskovk (обсуждение | вклад) (→Корректность и оптимальность алгоритма) |
м (rollbackEdits.php mass rollback) |
||
(не показаны 2 промежуточные версии 2 участников) | |||
Строка 21: | Строка 21: | ||
Пусть <tex> t_1 \leqslant t_2 \leqslant ... \leqslant t_r </tex> {{---}} упорядоченная последовательность всех значений <tex>r_i</tex> и <tex>d_i + L^*</tex>. | Пусть <tex> t_1 \leqslant t_2 \leqslant ... \leqslant t_r </tex> {{---}} упорядоченная последовательность всех значений <tex>r_i</tex> и <tex>d_i + L^*</tex>. | ||
− | Определим интервалы на исходной сети (Рис. 1) <tex> I_K := [t_{K-1}, t_K], \ T_K = t_K-t_{ | + | Определим интервалы на исходной сети (Рис. 1) <tex> I_K := [t_{K-1}, t_K], \ T_K = t_K-t_{K−1} </tex> для <tex> K = 2,..., r </tex>. Cчитаем, что станки занумерованы в порядке невозрастания скоростей <tex> s_1 \geqslant s_2 \geqslant . . . \geqslant s_m </tex> (также считаем <tex>s_{m+1} = 0</tex>). |
Искомая сеть строится с помощью расширения сети из задачи <tex>P \mid pmtn, r_i \mid L_{max}</tex>. Обозначим через <tex> J_{i_1}, J_{i_2}, . . . , J_{i_s} </tex> набор предшественников узла <tex>I_K</tex>, тогда замененная нами подсеть определяется как <tex> I_K, J_{i_1}, J_{i_2}, . . . , J_{i_s} </tex>. | Искомая сеть строится с помощью расширения сети из задачи <tex>P \mid pmtn, r_i \mid L_{max}</tex>. Обозначим через <tex> J_{i_1}, J_{i_2}, . . . , J_{i_s} </tex> набор предшественников узла <tex>I_K</tex>, тогда замененная нами подсеть определяется как <tex> I_K, J_{i_1}, J_{i_2}, . . . , J_{i_s} </tex>. |
Текущая версия на 19:23, 4 сентября 2022
Задача: |
Рассмотрим задачу на нахождение расписания:
|
Алгоритм
Алгоритм решения
Как в задаче применим метод двоичного поиска и сведем задачу к . Для существования расписания с требуется, чтобы у работы с номером выполнялось , что эквивалентно . Опишем алгоритм решения при помощи сведения к задаче поиска максимального потока.
Пусть
— упорядоченная последовательность всех значений и . Определим интервалы на исходной сети (Рис. 1) для . Cчитаем, что станки занумерованы в порядке невозрастания скоростей (также считаем ).Искомая сеть строится с помощью расширения сети из задачи
. Обозначим через набор предшественников узла , тогда замененная нами подсеть определяется как .Расширение сети показано на Рис. 2.
Расширенная подсеть строится путем добавления к вершинам
вершин . При , есть дуги от до с пропускной способностью и для всех и существует дуга из в с пропускной способностью . Это выполняется для каждой вершины . Кроме того, мы сохраняем дуги из в пропускной способностью и дуги из в пропускной способностью (Рис. 1).Корректность и оптимальность алгоритма
Теорема: | ||
Следующие утверждения эквивалентны:
| ||
Доказательство: | ||
| ||
Время работы
Работа с максимальным потоком в расширенной сети занимает
шагов, проверка может быть сделана с такой же скоростью. Для решения мы используем бинарный поиск, а значит, получаем алгоритм с -приближенной сложностью , потому как , ограничен , при .Задача [1].
представляет собой частный случай , и может быть решена более эффективноПримечания
- ↑ Описано в Peter Brucker. «Scheduling Algorithms» — «Springer», 2006 г. — 133 стр.
Источники информации
- Peter Brucker. «Scheduling Algorithms» — «Springer», 2006 г. — 129 — 133 стр. — ISBN 978-3-540-69515-8