P2precpi1Lmax
Версия от 06:15, 10 июня 2012; 217.66.152.17 (обсуждение)
Описание алгоритма
Полагаем, что ребра в графе ориентированы от работы, к работам, зависимым от нее. Введем понятие вынужденного дедлайна
— максмальное время, до которого необходимо выполнить -ую работу, чтобы успеть выполнить все работы из , где — множество работ, зависящих (не обязательно непосредственно) от -ой работы. Заметим, что эта величина может принимать отрицательные значения. Обозначим через количество работ из , таких что .Утверждение: |
Пусть уже посчитаны работы для всех . Тогда, если , то -ая работа
должна быть закончена до . |
Рассмотрим все работы , для которых . Все эти работы будут выполнены после окончания обработки детали с номером . Для них . Пусть работу закончили выполнять в момент времени . Нужно до момента времени выполнить ещё работ. Так как в нашем распоряжении находятся две машины, то время их выполнения будет не менее, чем . Поскольку необходимо выполнить все эти работы до , то -ая работа должна быть закончена до момента времени . |
Тогда финально получаем формулу для вычисления «вынужденного» дедлайна для
-ой работы: , где . Для вершин, исходящая степень которых равна нулю, по определению вынужденного дедлайна, считаем его равным обычному дедлайну. Для подсчета вынужденных дедлайнов будем поддерживать список , содержащий вершины, отсортированные в порядке неубывания дедлайнов. Дедлайн равен вынужденному дедлайну, если он уже посчитан, и обычному — в противном случае. Будем рассматривать вершины в порядке, обратном топологической сортировке графа, то есть, начиная с вершин нулевой исходящей степени. Пусть на текущем шаге мы рассматриваем работу с номером . Перебирая вершины из в порядке списка , пересчитываем вынужденный дедлайн для -ой вершины по формуле, указанной выше, после чего обновляем дедлайн этой вершины в списке .После подсчета вынужденных дедлайнов, оптимальное расписание считается жадным алгоритмом. На каждом шаге на для обработки на станках выбираются работы с минимальным вынужденным дедлайном, для которых все необходимые работы уже выполнены. Одновременно с этим считается максимальное опоздание.
Доказательство корректности
Утверждение: |
В расписании с обычными дедлайнами нет опозданий тогда и только тогда, когда нет опозданий в расписании с
вынужденными дедлайнами. |
Поскольку вынужденный дедлайн не нарушен, то, больший его обычный дедлайн, также не будет нарушен. По определению вынужденного дедлайна, — максимальное время окончания работы , при котором ещё можно успеть выполнить все работы из . Значит, если для был нарушен вынужденный дедлайн, то не все работы из выполнены вовремя, то есть был нарушен хотя бы один обычный дедлайн, что противоречит условию. Более формально, пусть был нарушен вынужденный дедлайн. Найдём работу с нарушенным вынужденным дедлайном, такую, что — не нарушено. Это всегда можно сделать в силу ацикличности графа. Рассмотрим формулу для подсчёта вынужденного дедлайна: , где .Минимум достигся либо на противоречит условии выбора , что невозможно в силу того, что обычные дедлайны не нарушены, либо на каком-то . В этом случае, . Значит, если нарушено, то будет также нарушен вынужденный дедлайн для какого-то , так как осталось меньше, чем единиц времени. Это . |
Утверждение: |
Если существует расписание без опоздание, то приведенный выше алгоритм найдет такое расписание. |
Пусть ни один станок не простаивал в течении этого периода. ~---расписание, построенное этим алгоритмом, где ~--- время начала обработки -ой детали. Пусть в этом расписании существует работа, опаздывающая по обычным дедлайнам. Согласно утверждению 1, в этом расписании также существует работа, опаздывающая по "вынужденным" дедлайнам. Пусть работа с минимальным временем начала, удолетворяющая следующему условию: . Следуя алгоритму, в каждый момент времени , такой что , хотя бы одна работа с номером , такая что должна быть выполнена. Рассмотрим два случая. Первый случай: в какой-то момент времени только одна работа с номером , такая что выполнена. Выберем максимальное время , такое что , обладающее таким свойством. Тогда для всех работ c номером , которые выполнялись в момент времени с до выполняется , кроме того |