Ранговая и unrank перестановка со специальными свойствами - PullRequest
1 голос
/ 09 июня 2019

Я хочу rank and unrank перестановок со специальными свойствами.Как я могу это сделать?both свойства перестановок в наборе:

  1. каждая перестановка имеет only 1 cycle
  2. каждая перестановка состоит из подмножеств элементов перестановки, где подмножества находятся в некотором особом порядке.

Например:

Перестановки с length 6 (N := 6) имеют следующие элементы перестановки: (1,2,3,4,5,6) с подмножествами:

Подмножество S1 := (5,6)

Подмножество S2 := (3,4)

Подмножество S3 := (1,2)

Где элементы S1 > S2 > S3.

Таким образом, перестановка имеет следующий порядок подмножеств: L := (S3,S2,S1,S3,S2,S1)

С ограничением в 1 цикл существует только 1 перестановка, которая полностью заполняет ограничения both.

(5,4,2,6,3,1)

Пример счетчика:

(6,4,2,5,3,1) соответствует второму ограничению, но не первому.

Как я могу ранжировать и отменять перестановки, которыеfullfill both ограничений.

Когда у меня есть в качестве входных параметров:

N как длина перестановки

K как количество подмножеств

L как список подмножеств (Si), состоящий из элементов перестановки, где L определяет порядок подмножеств (Si).

И как выходной параметр Ранг или перестановка, если Рангдается?

Я могу ранжировать и отменять перестановки только с одним ограничением, но не с both ограничениями.Таким образом, перестановки будут иметь длину больше 100 (N > 100). not work будет генерировать все перестановки одного ограничения и проверять их относительно другого, чтобы получить действительные перестановки для ранжирования / отмены.

...