Перестановкаn объектов — способ последовательного расположения
этих объектов с учётом их порядка.
Например, все возможные перестановки 3 объектов a,b,c:
abc,acb,bac,bca,cab,cba
Количество всевозможных перестановок n объектов — факториал числа n
n!=defn⋅(n−1)⋅(n−2)⋅(n−3)⋯3⋅2⋅1=k=1∏nk
При этом 0!=1, ведь есть только один способ расположить 0 объектов — никак.
Получаем рекуррентное тождество, справедливое для всех целых n⩾1
n!=n⋅(n−1)!
Автоморфизмы множеств
Перестановки переставляют объекты.
Давайте формализуем этот процесс перестанавливания объектов.
Каждую перестановку элементов множества S можно задать с помощью правила,
которое говорит, на место какого элемента перешёл какой элемент.
Получается, что перестановка задаётся каким-то отображением S→S,
при этом понятно, что это отображение должно иметь какие-то дополнительные свойства.
Возьмём какое-то множество S. Эндоморфизм множества S —
отображение f:S→S множества S на себя.
Эндоморфизмы можно итерировать. Итерация эндоморфизма f — композиционная степень f
fn=nразf∘f∘f∘⋯∘f
Итерации одного множества коммутируют
fn∘fm=fm∘fn=fn+m
Для любого эндоморфизма f:S→S конечного множества S найдутся два неравных числа n и m таких, что
∀x∈Sfn(x)=fm(x)
Автоморфизм множества S — обратимый эндоморфизм множества S,
или, другими словами, биекция S↔S множества S на себя.
Автоморфизмы тоже можно итерировать, потому что это эндоморфизмы.
Но итерации автоморфизмов не могут «сжать» множество S,
то есть если f — автоморфизм S, то f[S]=S.
Перестановки
Перестановка
Перестановка множества S — автоморфизм S.
В переводе с пришельского на русский, перестановка —
это переупорядочивание элементов множества S.
Это переупорядочивание, а также сама перестановка, записываются как
σ=(a1b1a2b2a3b3⋯⋯an−1bn−1anbn)
Эта запись означает, что при автоморфизме σ
a1↦b1a2↦b2a3↦b3⋯an−1↦bn−1an↦bn
Обычно элементы в записи перестановки превращают в цифры и сортируют первую строку. Получается вот так
σ=(1σ(1)2σ(2)3σ(3)⋯⋯n−1σ(n−1)nσ(n))
Под действием перестановки какие-то элементы передвигаются, а какие-то, возможно, остаются на месте.
Носитель перестановки
Носитель перестановки σ — множество тех объектов,
которые передвигаются под действием σ.
Обозначается suppσ.
suppσ=def{j:σ(j)=j}
Композиция перестановок
Точно так же, как и для обычных отображений, для перестановок определяется операция композиции.
Композиция двух перестановок σ и τ —
перестановка σ∘τ.
Обратите внимание: при композиции перестановок σ∘τ сначала применяется перестановка τ, и только потом перестановка σ.
А именно образ элемента x∈S при перестановке σ∘τ равен
Нейтральный элемент. По операции композиции есть нейтральный элемент 1, называемый единичной перестановкой
1=(112233⋯⋯n−1n−1nn)
Эта единичная перестановка оставляет все элементы на своих местах,
по этому для любой перестановки σ выполнено равенство
σ∘1=1∘σ=σ
Обратная перестановка. По операции композиции перестановок для любой перестановки σ можно найти обратную перестановку σ−1:
σ∘σ−1=σ−1∘σ=1
Можно явно построить обратную перестановку, если поменять местами строки и отсортировать столбцы.
Сортировать столбцы, вообще, не обязательно, ведь сортировка нужна только для удобства восприятия.
σ−1=(σ(1)1σ(2)2⋯⋯σ(n)n)
type permutation =table[int:int]functioninverse(permutation sigma[n])-> permutation:
permutation inverse
forint i =0; i < n; i++:
inverse[sigma[i]]= i
return inverse
Множество всех перестановок множества {1,2,…,n} образуют группу по композиции.
Эта группа обозначается Sn и называется группой перестановок.
Поскольку количество перестановок n элементов равно n!,
порядок группы Sn
∣Sn∣=n!
Инверсии
Инверсия
Пусть σ∈Sn —
какая-то перестановка (σ1,σ2,…,σn) множества {1,2,…,n}.
Если i<j и σi>σj,
то пара (σi,σj) называется инверсией перестановки σ.
Например, у перестановки
σ=(1321324554)
инверсиями являются пары (3,1), (3,2) и (5,4).
Каждая инверсия в перестановке — это пара, «нарушающая порядок».
Единственная перестановка, не содержащая инверсий — перестановка 1.
invσ — число инверсий в перестановке σ
Число инверсий в перестановке и в ей обратной одинаково: invσ=invσ−1.
Представление перестановок
Транспозиция
Транспозиция — перестановка в которой меняются местами только 2 элемента.
Транспозиция коротко записывается (ij),
то есть мы меняем местами элементы i и j.
Теорема о представлении перестановок
Любая перестановка может быть представлена как композиция транспозиций.
Поместим сначала на первую позицию тот элемент, который там должен стоять, и больше не будем его трогать. Затем на
вторую позицию тот элемент, который там должен быть, и так далее, пока все элементы не встанут на свои места.
Можем уточнить количество транспозиций:
не более n−1, ведь мы по очереди ставим n элементов
на свои места, а последний элемент встает на место вместе с предпоследним.
Чётность перестановки
Перестановка чётная, если она представляется как произведение чётного числа транспозиций, и нечётная, если она представляется нечётным числом транспозиций.
Также чётность перестановки определяется чётностью числа инверсий.
Произведение перестановок одинаковой чётности – чётная перестановка, а разной чётности – нечётная. Обратная
перестановка имеет ту же самую чётность, что и исходная.
У перестановок, как у элементов группы перестановок, есть порядок.
Порядок перестановки
Порядок перестановки σ — наименьшая степень перестановки,
которая превращает её в тождественную
ordσ=min{n∈N0:σn=1}
Это определение полностью совпадает с определением порядка элемента в группе.
Пусть перестановка σ представлена
как композиция двух перестановок τ1 и τ2 с непересекающимися носителями:
σ=τ1∘τ2гдеsuppτ1∩suppτ2=∅
Давайте поймём, как получается порядок перестановки.
Пусть σ∈Sn — какая-то перестановка n элементов.
Давайте посмотрим на представление этой перестановки в виде композиции ℓ независимых циклов:
Все циклы независимы, а значит, порядок перестановки σ является наименьшим общим кратным порядков составляющих её циклов.
А порядок любого цикла равен его длине. Значит
ordσ=lcm(k1,k2,…,kℓ)
Сопряжение
Теорема о представлении сопряжения
Пусть σ,τ∈Sn — две какие-то перестановки.
Пусть также σ представлена в виде композиции ℓ независимых циклов:
Доказательство. Достаточно просто посмотреть на действие обоих сторон
на произвольный элемент x∈{1,2,…,n}.
Будем смотреть на действие по частям, ведь циклы, составляющие перестановки, не пересекаются.
Рассмотрим один j-й цикл α=(σj,1,σj,2,σj,kj).
(τ∘α∘τ−1)(x)=τ(α(τ−1(x))
Посмотрим как действует цикл (τ(σj,1),τ(σj,2),…,τ(σj,kj)) на элемент x.
Если x=τ(σj,i) для некоторого i,
то (τ∘α∘τ−1)(x)=(τ∘α)(σj,i)=τ(σj,(i+1)modkj)
Если x∈/suppα, то (τ∘α∘τ−1)(x)=(τ∘τ−1)(x)=x
Теперь возвращаемся к сопряжению τ∘σ∘−1.
Перестановка σ является композицией
непересекающихся циклов α1,α2,…,αℓ,
тогда
τ∘σ∘τ−1=(τ∘α1∘τ−1)∘(τ∘α2∘τ−1)∘⋯∘(τ∘αℓ∘τ−1)
Каждая перестановка τ∘αj∘τ−1 — это цикл,
полученный заменой элементов в цикле αj на их образы под действием перестановки τ, как мы это доказывали выше.
Поскольку исходные циклы не пересекались, и τ — биекция,
их образы тоже не пересекаются.
Значит, полученные циклы независимы и их произведение —
разложение перестановки τ∘τ−1 в композицию независимых циклоы.
Фактически, перестановки σ и τ∘σ∘τ−1 отличаются не структурой, а только «углом», под которым вы на эти перестановки смотрите.
Формула C⋅A⋅C−1 навеивает ностальгические воспоминания
про линейный переход к другому базису. На самом деле здесь это и происходит,
если отождествить каждый элемент перестановки j с базисным вектором ej,
а перестановку σ с соответствующей матрицей перестановки T=matσ,
которая действует на базисных векторах как T(ej)=eσ(j).
Также из этой формулы следует, что две перестановки из группы Sn сопряжены тогда и только тогда,
когда у них одинаковый циклический тип (одинаковый набор длин циклов при разложении).
Эта формула позволяет очень эффективно вычислять композиции перестановок.
Причём не только сопряжения, а вообще любые выражения пытаются максимально сводить к сопряжениям
для упрощения и ускорения вычислений.
Например, вычисление коммутатора двух перестановок [τ,σ]=τ∘σ∘τ−1∘σ−1 можно свести к одному вычислению композиции вместо трёх, если выделить сопряжение [τ,σ]=(τ∘σ∘τ−1)∘σ−1.
0
Докажите (без перебора), что [x2,y2]=1 для любых перестановок x,y∈S3.
В переводе с пришельского на русский: квадраты любых двух перестановок трёх элементов коммутируют.
0
Сопряжены ли перестановки (123)(45) и (12)(345)?
Если да, то найдите какую-нибудь сопрягающую перестановку.
Инволюция
Инволюция или Инволюционная перестановка — перестановка, равная обратной себе.
Количество инволюций длины n равно f(n)=f(n−1)+(n−1)⋅f(n−2), а f(0)=f(1)=1.
Таблица инверсий
Таблица инверсий
Пусть σ - перестановка чисел 1,2,3,…,n.
Таблица инверсий перестановки σ — последовательность t1,t2,…,tn, в которой tj равно числу элементов перестановки σ, стоящих левее j и больших j.
Например, для перестановки 591826473 таблица инверсий выглядит так: 236402210
t1=2, так как перед 1 в перестановке стоят 5 и 9.
t2=3, так как перед 2 в перестановке стоят 5,9,8. Другие значения
считаются аналогично
Таблица инверсий единственным образом определяет перестановку.
Построение за O(n2)
Построить таблицу инверсий за O(n2) можно в лоб по определению. Проходимся по всем элементам
перестановки
и для каждого считаем, сколько элементов, стоящих левее, его больше.
functioninversion_table(array p)->array:array t =[0]*length(p)forint i =0tolength(p)-1:forint j =0to i -1:if p[j]> p[i]:
t[p[i]-1]+=1return t
Построение за O(nlogn)
functioninversion_table_merge(array t1,array t2)->array:array t =[]int i1 =0, i2 =0while i1 <length(t1)and i2 <length(t2):if t1[i1][0]< t2[i2][0]:
append t1[i1]to t
i1 +=1else:tuple new_element =(t2[i2][0], t2[i2][1]+(length(t1)- i1))
append new_element to t
i2 +=1while i1 <length(t1):
append t1[i1]to t
i1 +=1while i2 <length(t2):
append t2[i2]to t
i2 +=1return t
functioninversion_table_get(array p)->array:iflength(p)==1:return[(p[0],0)]int mid =length(p)//2array left =inversion_table_get(p[0:mid])array right =inversion_table_get(p[mid:length(p)])returninversion_table_merge(left, right)
Распределение числа инверсий
Часто пригождается знание о том, сколько существует перестановок n элементов,
имеющих ровно k инверсий. Это число обозначается In(k).
По определению In(k)=0 при k<0 и k>(2n).
Из таблицы инверсий ясно, что In(0)=1 и In(1)=n−1,
а так же, что In симметрично:
In((2n)−k)=In(k)
Обозначим производящую функцию In(k) за Gn(x)=k=0∑∞In(k)⋅xk.
Значения bk в таблице инверсий мы можем выбирать независимо друг от друга, поэтому
Давайте вспомним, что hk(x)=(1+x+x2+⋯+xk−1)/k —
производящая функция равномерно распределённой случайной величины,
принимающей неотрицательные целые значения, меньшие k. Поэтому
Индексindσ перестановки σ —
сумма всех j, для которых σ(j)>σ(j+1) при 1⩽j<n.
Теорема МакМагона
Число перестановок, имеющих данный индекс k совпадает с числом перестановок с k инверсиями:
{σ∈Sn:indσ=k}=In(k)
Рассмотрим производящую функцию числа перестановок с данным индексом
Hn(x)=σ∈Sn∑xindσ
В этой сумме перед xk стоит коэффициент,
равный количеству перестановок, имеющий индекс k.
Для доказательства теоремы нам нужно доказать, что Hn(x)=Gn(x),
где Gn(x) — производящая функция для количества инверсий In(k).
Составим биекцию между n-мерными строками (q1,q2,…,qn)∈N0n и парами (σ,(p1,p2,…,pn))∈Sn×N0n,
у которых p1⩾p2⩾⋯⩾pn⩾0.
Биекцию составим так, чтобы
j=1∑nqj=indσ+j=1∑npj
Любая n-мерная строка (q1,q2,…,qn)∈N0n может быть отсортирована, то есть можно взять какую-то перестановку σ∈Sn так,
чтобы (qσ(1),qσ(2),…,qσ(n))∈N0n не возрастала, то есть qσ(1)⩾qσ(2)⩾⋯⩾qσ(n).
При этом сортировка устойчива, то есть если qσ(j)=qσ(j+1),
то σ(j)<σ(j+1)
Для того, чтобы выполнилось условие для сумм,
для каждой пары (σ(j),σ(j+1)),
у которой σ(j)>σ(j+1),
вычтем 1 из каждого qσ(1),qσ(2),…,qσ(j).
После вычитания получим требуемую строку (p1,p2,…,pn).
Важный результат, получаемый из теоремы Мак-Магона: распределение индекса совпадает с распределением числа инверсий.
Это значит, что для индекса случайной перестановки n элементов
Доминик Фоата и Марсель-Поль Шютценбергер нашли обобщение теоремы Мак-Магона спустя 65 лет.
Теорема Фоата – Шуценберже
Существует биекция между
множеством перестановок с k инверсиями и индексом l и множеством перестановок с l инверсиями и индексом k.
{σ∈Sn:invσ=k∧indσ=l}⟷{σ∈Sn:indσ=k∧invσ=l}
Упражнения
1
Покажите, что при n>m количество перестановок n элементов,
у которых число инверсий сравнимо с r по модулю m равно n!/m не зависимо от значения r.
Другими словами, покажите, что
{σ∈Sn:invσ≡mr}=n!/m
2
Пусть σ∈Sn — какая-то перестановка n элементов.
Пусть E(σ) — множество инверсий перестановки σ и N(σ) — множество неинверсий перестановки σ:
Докажите, что E(σ) и N(σ) транзитивны как отношения.
Докажите что «обратное» тоже верно.
Посмотрим на множество T={(x,y)1⩽y<x⩽n∧x,y∈N}.
Выберем какое-то транзитивное подмножество A⊂T,
дополнение к которому T∖A тоже транзитивно.
Тогда найдётся такая перестановка σ∈Sn, что E(σ)=A.