Изменения

Перейти к: навигация, поиск

Задача об ожерельях

268 байт добавлено, 22:25, 7 января 2016
Алгоритм решения задачи про ожерелья
По условию, перестановкой инвариантной данной будет любая перестановка, полученная из данной циклическим сдвигом.
Очевидно, что для каждой перестановки длины <tex>n</tex> существует ровно <tex>n - 1</tex> инвариантная перестановка, то есть всего инвариантных перестановок в каждом классе <tex>n</tex>, теперь найдем <tex>P(i)</tex>. Заметим, что в <tex>i</tex>-ой перестановке на <tex>l</tex>-ой позиции стоит элемент <tex>(i + l)\bmod n</tex>. Также, заметим, что элемент <tex>a</tex> переходит в элемент <tex>a + in</tex>, где <tex>i = 1, 2, ... \ldots k</tex>. Из этого следует, что длина цикла для <tex>i</tex>-ой перестановки равна <tex> \dfrac{\mathrm{lcm}(n, i)/}{i } = \dfrac{n/}{\mathrm{gcd}(i,n)}</tex>. Откуда следует что:
<tex>|C| =</tex> <tex dpi = "180"> \frac{1} {n}</tex><tex>\sum\limits_{i = 1}^{n} k^{\mathrm{gcd}(i,n)}</tex>.
где <tex>|C|</tex> {{- --}} кол-во различных ожерелий,которые можно составить из <tex>n</tex> бусинок <tex>k</tex> различных цветов.
Если раскраски ожерелья одинаковые, то они принадлежат одной [[Орбита|орбите]](англ. orbit), т.е. одна получается из другой некоторым преобразованием симметрии. Неподвижные точки поворота есть только у тождественного поворота и их <tex>n</tex> штук. Тогда, по [[Лемма Бёрнсайда и Теорема Пойа|лемме Бёрнсайда]], число орбит равняется <tex>\dfrac{n/}{p}=\operatorname{gcd}(n,i)</tex>, где <tex>p</tex> минимальное число такое, что <tex>ip</tex> делится на <tex>n</tex>, и число их раскрасок <tex>N_i=k^{\operatorname{gcd}(n,i)}</tex>. Сумма же инвариантных раскрасок для всех поворотов: <tex>S=\sum_sum\limits_{i=1}^{n}N_i=\sum_sum\limits_{i=1}^{n}k^{\operatorname{gcd}(n,i)}</tex>. В последней сумме <tex>\phi(n)</tex> слагаемых, для которых <tex>\operatorname{gcd}(n,i)=1</tex>. Если же <tex>\operatorname{gcd}(n,i)=q</tex>, то <tex>\operatorname{gcd}\left(\dfrac{n/}{q},\dfrac{i/}{q}\right)=1</tex>. Чтобы определить количество таких <tex>i</tex>, меньших <tex>n</tex>, нужно перебрать числа вида <tex>i=lq,\,0\leq leqslant l\leq leqslant \dfrac{n/}{q}</tex> и проверять их на условие <tex>1=\operatorname{gcd}\left(\dfrac{n/}{q},\dfrac{i/}{q}\right)=\operatorname{gcd}\left(\dfrac{n/}{q},l\right)</tex>. Таких чисел, очевидно, <tex>\phivarphi\left(\dfrac{n/}{q}\right)</tex>(по определению <tex>\phivarphi(n)</tex>). Поэтому сумму можно заменить: <tex>S=\sum_sum\limits_{i=1}^{n}k^{\operatorname{gcd}(n,i)}=\sum_sum\limits_{q|n}\phivarphi\left(\dfrac{n/}{q}\right)k^q</tex>.
Тогда <tex>|C| =</tex> <tex dpi = "180"> \fracdfrac{1} {n}</tex><tex>\sum_sum\limits_{q|n}\phivarphi\left(\dfrac{n/}{q}\right)k^q</tex>
== Алгоритм решения задачи про ожерелья с отражениями==
Анонимный участник

Навигация