У меня есть список номеров (от 1 до 30), скорее всего.Мне нужно упорядочить список таким образом, чтобы абсолютная разница между двумя последовательными элементами составляла не более 2, 3 или 4, а сумма абсолютных разностей всех последовательных элементов была минимальной.
Я пыталсягенерирование всех возможных перестановок списка в диапазоне до 10 и 11, а затем сортировка их по стоимости, но для больших чисел это занимает слишком много времени.Чтобы получить список из 30 чисел, потребовались бы годы.
Можно ли каким-либо образом выполнить ограничения при создании самих перестановок?
В настоящее время я использую библиотеку itertools для python для генерации перестановок.
Любая помощь очень ценится!Спасибо
РЕДАКТИРОВАТЬ 1: Вот результаты, которые я получил на небольших числах, таких как 10 и 12.
Arranged Array -> Cost (Стоимость - это сумма абсолютной разности между двумя последовательными элементами)
Для 10 номеров
[1, 3, 5, 2, 4, 6, 8, 10, 7, 9] 20
[2, 4, 1, 3, 5, 7, 9, 6, 8, 10] 20
Для 12.
[1, 3, 5, 2,4, 6, 8, 11, 9, 7, 10, 12] 25
[1, 3, 5, 7, 10, 12, 9, 11, 8, 6, 4, 2] 25
Мне нужно организовать 30 таких чисел, где 2 <= разница <= 4 и общая стоимость минимальна. </p>