188
правок
Изменения
Нет описания правки
__TOC__
== Действие перестановки на набор элементов ==
{{Определение
|definition=
Пусть <tex>\pi</tex> {{---}} перестановка порядка из <tex>n</tex>элементов, и <tex>\{a_i\}</tex> {{---}} множество некоторых объектов, занумерованных числами от одного <tex>1</tex> до <tex>n</tex>. Тогда '''результатом действия перестановки''' на этот набор объектов назовём множество объектов <tex>\{b_i\}</tex>, занумерованных числами от одного до <tex>n</tex>, причём <tex>b_i = a_{\pi_i}</tex>.
}}
Обозначим за <tex>A</tex> множество (не пронумерованных) объектов <tex>\{a_1, \dots, a_n\}</tex>. Поскольку перестановку можно рассматривать как отображение <tex>\pi \colon \{1, \dots, n\} \to \{a_1, \dots, a_n\}</tex>, а нумерацию как отображение <tex>\alpha \colon \{1, \dots, n\} \to A</tex>, то [[Файл:Permutation_action.png|400px|thumbДействие_группы_на_множестве|right|Иллюстрация действия действие перестановки]]можно определить как композицию отображений <tex>\alpha \circ \pi</tex>.
Также, композицию перестановок можно выразить как действие одной перестановки на другую.
Стоит отметить, что действие перестановки <tex>\pi^n</tex> соответствует переходу по графу <tex>n</tex> раз.
==Циклы==
Цикл может быть записан по разному, например, в приведенном выше примере цикл <tex>(1, 5, 2)</tex> может быть записан как <tex>(5, 2, 1)</tex>, <tex>(2, 1, 5)</tex>, но не может быть записан как <tex>(2, 5, 1)</tex>.
Перестановку можно представить в виде [[Основные_определения_теории_графов|графа]]. Граф содержит ребро от вершины <tex>x_i</tex> к вершине <tex>x_j</tex> если <tex>\pi(x_i) = x_j</tex>. Тогда циклы перестановки соответствуют циклическим путям в графе.
С циклами связаны некоторые интересные свойства перестановок.
{{Определение
|definition='''Степенью перестановки''' называется минимальное число <tex>n \in N</tex> такое, что <tex>\pi^n = i</tex>}}
{{Утверждение
Степень перестановки равна наименьшему общему кратному длин всех циклов
|proof=
Пусть <tex>k</tex> — степень перестановки. Граф перестановки разбит на циклы, и для того, чтобы какой-то элемент прошёл по своему циклу один раз, нужно возвести перестановку в степень <tex>l</tex>, где <tex>l</tex> — длина цикла. Если элемент проходит цикл несколько раз и возвращается на своё место, то можно сделать вывод о том, что перестановка возводится в степень кратную <tex>l</tex>. Тогда только в том случае, когда <tex>k</tex> делится на длины всех циклов, все элементы вернутся на свои места, а наименьшее такое <tex>k</tex> — это НОК длин всех циклов. }}
Если длины всех циклов не превышают <tex>2</tex>, то перестановка является [[Умножение_перестановок,_обратная_перестановка,_группа_перестановок#def_involution | инволюцией]].
|proof=
Действительно, в таком случае по вышеупомянутому <tex>\pi^2 = i</tex>. Домножив на <tex>\pi^{-1}</tex> получим <tex>\pi^{-1} = \pi</tex>. }}
==Поиск всех циклов в перестановке==
{{Задача
|definition=Дана перестановка <tex>\pi</tex> порядка из <tex>n</tex>элементов, требуется найти все циклы в ней. }}
Рассмотрим элемент перестановки <tex>\pi_i</tex>. Добавим его к циклу, отметим позицию <tex>i</tex> посещенной и перейдем к <tex>\pi_{\pi_i}</tex>. Если мы перешли в позицию <tex>i</tex>, которую уже посещали, значит мы нашли очередной цикл перестановки. Перейдем к первой непосещенной позиции и продолжим поиск.
<code>
'''function''' findCycles('''int''' p[])
'''vector<bool>''' used(n) ''<font color="green">// массив, где отмечены посещенные позиции</font>''
'''print''' cycle ''<font color="green">// распечатаем очередной цикл перестановки</font>''
</code>
==См. также==
*[[Действие группы на множествеТеорема Кэли]]
== Источники ==