Что-то туго идёт... Но есть такое предположение, что число искомых автоморфизмов столько же, сколько и перестановок множества
, т. е.
. Не знаю, как это строго объяснить, но идея такая: если мы будем учитывать порядок элементов в множествах (т. е. заменим множества на кортежи) и у нас имеется алгоритм, который будет из кортежа
делает кортеж
, то если мы переставим элементы в
, то кортеж
тоже изменится. Автоморфизм получается так: первый элемент исходного кортежа
переводится в первый элемент "переставленного", второй элемент -- во второй элемент и т. д.
(Я плохо умею выражать свои мысли словами, поэтому пример)
Код:
Prelude> let p [] = [[]]; p (x:xs) = map (x:) (p xs) ++ p xs;
Prelude> p "abc"
["abc","ab","ac","a","bc","b","c",""]
Prelude> p "bca"
["bca","bc","ba","b","ca","c","a",""]
Т. е. перестановке
соответсвует автоморфизм
такой, что