Наиболее естественная структура данных для хранения перестановки отдельных элементов?
Один простой способ сохранить перестановку последовательности отдельных элементов - это строка (или список), например, "acb", которая явно является перестановкой "abc". Однако, если я буду использовать строку для представления своей перестановки, я получу возможность использовать строки типа "abb", которые не соответствуют какой-либо перестановке. В результате представление перестановок в строках, так сказать, не является плотным. Списки индексов типа [2,3,1] имеют ту же проблему.
Кроме того, я мог бы признать, что над N элементов есть N! перестановки, которые можно перечислить каким-либо образом. Затем я мог бы сохранить перестановку как целое число. Однако это не идеально, потому что целое число было бы непрозрачным для интерпретации (никто не знал бы, что означало "число перестановок 43"), а также потому, что групповая структура целых чисел над сложением не имеет ничего общего с групповой структурой перестановок.
Есть ли способ представить перестановки в компьютере, который не имеет недостатков методов, которые я предложил?