Методы решения задач теории расписаний
Версия от 14:23, 26 апреля 2012; Dgerasimov (обсуждение | вклад) (Новая страница: «== Сведение к другой задаче == При сведении текущей задачи теории расписаний <tex> S </tex> к как...»)
Содержание
Сведение к другой задаче
При сведении текущей задачи теории расписаний
к какой-то другой необходимо доказать два пункта:- Допустимость расписания, построенного с помощью задачи , или существование способа его трансформации в допустимое.
- Следствие того, что если мы оптимизируем , мы также оптимизируем ответ для (обратное в общем случае неверно).
Примечание — если требуется полиномиальное время для решения задачи, требуется, чтобы сведение к другой задаче и трансформация расписания в допустимое также происходили за полиномиальное время.
Примеры
1 | intree | Sum(w_i C_i)
Предположим, что мы уже умеем решать задачу
. Сведем нашу задачу к ней следующим образом:- Развернем все ребра, теперь если работа зависела от работы , работа будет зависеть от .
- Заменим все стоимости на противоположные .
Утверждается, что решив соответствующую задачу
и развернув полученное расписание, мы получим ответ для текущей задачи.- Полученное расписание будет допустимым, так как расписание для было допустимым, и в нем никакие две работы не пересекались и не прерывались. Развернув, мы не могли нарушить это свойство. Также из-за того, что мы развернули расписание, мы добились того, что все работы выполняются в правильном порядке (в расписании для из-за того, что расписание было развернуто, порядок был нарушен для всех работ). Таким образом, получили что расписание — допустимое.
- Пусть с помощью задачи
- Заметим, что первое слагаемое соответствует целевой функции для последовательности , а второе и третье слагаемые — константы, зависящие только от начальных данных и не зависящие от перестановки работ. Таким образом, оптимальное
мы получили последовательность работ (не теряя общности, занумеруем их от 1 до n). Распишем по определению значение целевой функции для :
значение для
также минимизирует , ч.т.д.