• Как отсортировать элементы на основании критерия совместимости?

    @luchinkinkos
    олимпиадник недодатсаентист
    Можно использовать метод отжига или генетический алгоритм (про них можно почитать в википедии или поискать статью на Хабр). По сути оба алгоритма решают задачу максимизации/минимизации какой-либо функции.
    Например можно ввести метрику того, насколько какое-то решение "хорошее". Пусть f(p) - сумма по всем парам id (обозначим их как i и j) значения weiht(i, j) / |i - j|, где weiht(i, j) - то, насколько i "хочет быть ближе" к j, а |i - j| - минимальное расстояние между i и j в кольце. Здесь p - перестановка id. Тогда решение задачи - p, при которой f(p) - максимально.
    К сожалению, есть одна проблема: отжиг и/или генетический алгоритм могут не сработать, но есть вероятность что в этой задаче они помогут. Не попробуешь - не узнаешь)
    Ответ написан