Один из моих друзей спрашивает меня о следующей проблеме планирования на дереве. Я считаю, что это очень чисто и интересно. Есть ли какая-либо ссылка на это?
Проблема: Существует дерево , каждое ребро имеет симметричную стоимость перемещения 1 . Для каждой вершины v i есть задача, которую необходимо выполнить до истечения срока d i . Задача также обозначается как v i . Каждая задача имеет единое значение 1. Время обработки равно 0 для каждой задачи , т. Е. Посещение задачи до истечения срока ее выполнения равно завершению ее. Не ограничивая общности, пусть v 0 обозначает корень и в предположении, что в v 0 нет задачи . Есть автомобиль на v 0 в момент времени 0 Кроме того, мы предполагаем, что для каждой вершины, обозначает глубину v i . Это самоочевидно, вершина с крайним сроком, меньшим ее глубины, должна быть принята как отклонение. Задача состоит в том, чтобы найти расписание, которое завершит как можно больше задач.
Прогресс:
- Если дерево ограничено путем, то оно находится в посредством динамического программирования.
- Если дерево обобщено на граф, то оно в -полном.
- У меня очень простой жадный алгоритм, который считается трехфакторной аппроксимацией. Я не доказал это полностью. Правильно, меня больше интересуют результаты NP-hard. :-)
Спасибо за ваш совет.
источник
Ответы:
Не уверен, что это ваш ответ (см. Ниже), но слишком долго для комментариев.
Я думал, что ваша проблема была чем-то вроде:(P|tree;pi=1|ΣTi) , где:
Если это так, то ваша проблема NP-трудна: вы можете рассматривать это как обобщение минимизации общего опоздания на одной машине с ограничениями приоритета . В самом деле, в этой статье говорится, что для нескольких линейных цепочек это NP-сложный процесс на одном процессоре. Простое преобразование - взять деревья вида один корень и линейные цепочки, начиная с корня.
Однако я удивлен, потому что вы, кажется, говорите, что для случая одной линейной цепочки вы бы использовали динамическое программирование. Я не понимаю, зачем вам нужен DP, так как мне кажется, что при планировании одной линейной цепочки у вас нет большого выбора из-за ограничений приоритета: только один выбор. Так что, возможно, я неправильно понял вашу проблему.
источник
Чтобы это было правдой, мы должны сделать некоторые предположения. Смотрите комментарии ниже
Я полагаю, что для случая дерева существует алгоритм рекурсивного динамического программирования за полиномиальное время, параметризованный максимальным сроком исполнения. Подзадачи: если мы введем поддерево к моменту времени и выйдем из поддерева к моменту времени t bta tb , какое максимальное количество задач мы можем выполнить в поддереве? Базовые случаи на листьях легки и мы запоминаем снизу вверх.
Если бы мы действительно параметризовались по максимальному сроку, то алгоритм на самом деле не был бы полиномиальным по размеру дерева. Однако длина самого длинного пути, который посещает каждый узел дерева, является полиномиальной только в и нам никогда не нужно проверять сроки позже, чем это.|V|
источник
Проблема получения постоянной аппроксимации для этого случая или доказательства его NP-Hard все еще остается открытой, и любой результат может стать хорошей публикацией. Некоторые особые случаи были раскрыты. У меня, наряду с другими, есть некоторые частичные результаты, которые решают особые случаи, такие как пауки, деревья постоянной высоты. Но общая проблема для деревьев не решена.
источник