Я ищу алгоритм, который с учетом двух перестановок последовательности (например, [2, 3, 1, 4]
и [4, 1, 3, 2]
) вычисляет циклов , которые необходимы для преобразования первого во второе (например,, [[0, 3], [1, 2]]
).
Ссылка от mathworld говорит о том, что функция ToCycle в Mathematica делает это, но, к сожалению, у меня нет лицензии Mathematica под рукой ... Я бы с удовольствием получил любой указатель на реализациюалгоритм в любом языке FOSS или пакете математики.
Спасибо!