Дано целое число и множество триплетов различных целых чисел найдите алгоритм, который либо находит перестановку множества такую, что или правильно определяет, что такой перестановки не существует. Менее формально мы хотим изменить порядок номеров от 1 до ; каждая тройка в указывает, что должен появляться перед в новом порядке, но не должен появляться между
и .
Пример 1
Предположим, что и . затем
является не допустимым перестановок, так , а .
является не допустимым перестановок, так , а .
является допустимой перестановкой.
Пример 2
Если и , допустимая перестановка отсутствует. Точно так же нет действительной перестановки, если и ( Я думаю, возможно, сделал ошибку здесь).
Бонус: Какие свойства определяют, существует ли возможное решение?
algorithms
optimization
scheduling
Patrick87
источник
источник
Ответы:
Вот наивный алгоритм. В конечном счете, он опирается на грубую силу, но иногда может работать хорошо.
Каждое ограничение состоит из двух конъюнктов; давайте назовем их тип- , , и тип- , . Каждый тип -(σmi,σmj,σmk)∈S⟹i<k∧¬(i<j<k) A i<k B ¬(i<j<k) B i>j∨j>k i≠j,j≠k
источник
Вот частичный ответ:
источник