Haskell: порядок перестановок - PullRequest
1 голос
/ 27 января 2012

Я новичок в Хаскеле.Я должен написать функцию, которая принимает список целых чисел и возвращает количество композиций, необходимых для получения перестановки идентичности.Примерно так:

permutationOrder :: [Int] -> Int

Буду благодарен за любую помощь.

1 Ответ

2 голосов
/ 27 января 2012

Если список содержит числа от 0 до n-1 в некотором порядке,

toPermutationGraph :: [Int] -> [(Int,Int)]
toPermutationGraph = zip [0 .. ]

дает график перестановки.Из графика вы можете легко вычислить порядок, разбив его на связанные компоненты (соответствующие циклам, из которых состоит перестановка).Порядок цикла - это количество элементов в цикле.Непересекающиеся циклы коммутируют, что облегчает вычисление порядка произведения непересекающихся циклов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...