PpmtnriLmax — различия между версиями
Proshev (обсуждение | вклад) |
Proshev (обсуждение | вклад) м |
||
Строка 25: | Строка 25: | ||
# <tex>x_{iK} \le T_K</tex> для всех ребер <tex>(J_i, I_K)</tex> | # <tex>x_{iK} \le T_K</tex> для всех ребер <tex>(J_i, I_K)</tex> | ||
− | Исходя из этого, расписание строится выполнением работы <tex>J_{iK}</tex> с временем выполнения <tex>x_{iK}</tex> в интервале <tex>I_K</tex>. | + | Исходя из этого, расписание строится выполнением работы <tex>J_{iK}</tex> с временем выполнения <tex>x_{iK} > 0</tex> в интервале <tex>I_K</tex>. |
Т.к. сеть содержит <tex>O(N)</tex> элементов, значит максимальный поток в ней можно найти за <tex>O(n^3)</tex>. Кроме того, построение "окон" выполнения работ займет <tex>O(N^2)</tex>. Т.о. указанный выше алгоритм потребует <tex>O(N^3)</tex> операций. | Т.к. сеть содержит <tex>O(N)</tex> элементов, значит максимальный поток в ней можно найти за <tex>O(n^3)</tex>. Кроме того, построение "окон" выполнения работ займет <tex>O(N^2)</tex>. Т.о. указанный выше алгоритм потребует <tex>O(N^3)</tex> операций. | ||
Для решения данной задачи мы используем бинпоиск по <tex>L</tex> значениям, а значит, получаем алгоритм с <tex>\varepsilon</tex>-приближенной сложностью <tex>O (n^3(log(n) + log(1 / \varepsilon) + log(\max\limits_{j=1}^{n} p_j)) </tex>, потому как <tex>L_{max}</tex>, ограничен <tex>n \max\limits_{j=1}^{n}p_j</tex> | Для решения данной задачи мы используем бинпоиск по <tex>L</tex> значениям, а значит, получаем алгоритм с <tex>\varepsilon</tex>-приближенной сложностью <tex>O (n^3(log(n) + log(1 / \varepsilon) + log(\max\limits_{j=1}^{n} p_j)) </tex>, потому как <tex>L_{max}</tex>, ограничен <tex>n \max\limits_{j=1}^{n}p_j</tex> |
Версия 00:20, 10 июня 2012
Постановка задачи
- Имеется однородных машин, работающих параллельно.
- Есть работ, каждое имеет своё время появления и время окончания .
- Работа может быть прервана и продолжена позже.
Необходимо составить такое расписание, чтобы значение
было минимальным.Решение
Сведем эту задачу к поиску максимального потока в сети, построенной указанным ниже образом.
Пусть
- упорядоченная последовательность и . Определим интервалы с длиной для всех .Работам
сопоставим свой тип вершин, а интервалам свой. Добавим две фиктивные вершины и . Вершина соединена с вершинами ребрами с пропускной способностью , вершина соединена с вершинами ребрами с пропускной способностью . Ребро между вершиной и вершиной существует, если . Пропускная способность этого ребра - .Нетрудно понять, что расписание существует, если максимальный поток через эту сеть равен
.Если это так, то поток
на дуге соответствует тому, что работа будет выполняться во временном интервале , и будет справедливо следующее:- для всех ребер
Исходя из этого, расписание строится выполнением работы
с временем выполнения в интервале .Т.к. сеть содержит
элементов, значит максимальный поток в ней можно найти за . Кроме того, построение "окон" выполнения работ займет . Т.о. указанный выше алгоритм потребует операций.Для решения данной задачи мы используем бинпоиск по
значениям, а значит, получаем алгоритм с -приближенной сложностью , потому как , ограничен