stringtranslate.com

перестановка

Каждый из шести рядов представляет собой отдельную перестановку трех разных шаров.

В математике перестановка набора — это, грубо говоря, расположение его членов в последовательность или линейный порядок , или , если набор уже упорядочен, перестановка его элементов. Слово «перестановка» также относится к действию или процессу изменения линейного порядка упорядоченного набора. [1]

Например, существует шесть перестановок (упорядочений) набора {1, 2, 3}: записанные в виде кортежей , это (1, 2, 3), (1, 3, 2), (2, 1, 3). , (2, 3, 1), (3, 1, 2) и (3, 2, 1). Анаграммы слова, все буквы которого разные, также являются перестановками: буквы уже упорядочены в исходном слове, а анаграмма меняет их порядок. Изучение перестановок конечных множеств — важная тема комбинаторики и теории групп .

Перестановки используются почти во всех разделах математики и во многих других областях науки. В информатике они используются для анализа алгоритмов сортировки ; в квантовой физике — для описания состояний частиц; и в биологии для описания последовательностей РНК .

Число перестановок n различных объектов равно n  факториалу , обычно записываемому как n ! , что означает произведение всех положительных целых чисел, меньших или равных n .

Формально перестановка множества S определяется как биекция S в себя. [2] [3] То есть это функция от S до S , для которой каждый элемент встречается ровно один раз в качестве значения изображения . Такая функция эквивалентна перестановке элементов S , при которой каждый элемент i заменяется соответствующим . Например, перестановка (3, 1, 2) описывается функцией, определяемой как

.

Совокупность всех перестановок набора образует группу , называемую симметричной группой набора. Групповая операция – это композиция функций (выполняющая одну перестановку за другой), в результате которой получается другая функция (перестановка). Свойства перестановок не зависят от природы переставляемых элементов, а только от их количества, поэтому часто рассматривают стандартный набор .

В элементарной комбинаторике k -перестановки или частичные перестановки — это упорядоченное расположение k различных элементов, выбранных из набора. Когда k равно размеру набора, это перестановки в предыдущем смысле.

В популярной головоломке «Кубик Рубика» , изобретенной в 1974 году Эрно Рубиком , каждый поворот граней головоломки создает перестановку цветов поверхности.

История

Перестановки, называемые гексаграммами , использовались в Китае в И Цзин ( Пиньинь : И Цзин) еще в 1000 году до нашей эры.

В Греции Плутарх писал, что Ксенократ Халкидонский (396–314 до н.э.) обнаружил возможное количество различных слогов в греческом языке. Это была бы первая попытка решить сложную задачу перестановками и комбинациями. [4]

Аль-Халил (717–786), арабский математик и криптограф , написал «Книгу криптографических сообщений» . Он содержит первое использование перестановок и комбинаций для перечисления всех возможных арабских слов с гласными и без них. [5]

Правило определения количества перестановок n предметов было известно в индийской культуре около 1150 года нашей эры. В « Лилавати» индийского математика Бхаскары II есть отрывок, который переводится следующим образом:

Продуктом умножения арифметического ряда, начинающегося и возрастающего на единицу и продолжающегося до количества разрядов, будут вариации числа с конкретными цифрами. [6]

В 1677 году Фабиан Стедман описал факториалы при объяснении числа перестановок колоколов при сменном звоне . Начиная с двух колоколов: «во-первых, надо признать, что два можно изменять двумя способами», что он иллюстрирует, показывая 1 2 и 2 1. [7] Затем он объясняет, что с тремя колокольчиками «трижды две цифры нужно изменить». произведено из трех», что снова проиллюстрировано. Его объяснение предполагает: «выбросьте 3, и останется 1,2; выбросьте 2, и останется 1,3; выбросьте 1, и останется 2,3». [8] Затем он переходит к четырем колоколам и повторяет аргумент об отбрасывании, показывая, что будет четыре разных набора по три. По сути, это рекурсивный процесс. Он продолжает с пятью колокольчиками, используя метод «отбрасывания», и сводит в таблицу полученные 120 комбинаций. [9] На этом этапе он сдается и замечает:

Природа этих методов такова, что изменения одного числа включают в себя изменения всех меньших чисел... настолько, что полный Раскат изменений одного числа, по-видимому, формируется путем объединения полных Раскатов всех меньших чисел. в одно целое тело; [10]

Стедман расширяет рассмотрение перестановок; он продолжает рассматривать количество перестановок букв алфавита и лошадей из 20 конюшен. [11]

Первый случай, когда с помощью перестановок изучались, казалось бы, не связанные друг с другом математические вопросы, произошел около 1770 года, когда Жозеф Луи Лагранж при изучении полиномиальных уравнений заметил, что свойства перестановок корней уравнения связаны с возможностями Найди решение. Это направление работы в конечном итоге привело, благодаря работе Эвариста Галуа , к теории Галуа , которая дает полное описание того, что возможно и невозможно в отношении решения полиномиальных уравнений (с одним неизвестным) с помощью радикалов. В современной математике существует множество подобных ситуаций, в которых понимание задачи требует изучения определенных, связанных с ней перестановок.

Перестановки сыграли важную роль в криптоанализе машины «Энигма» , шифровального устройства, использовавшегося нацистской Германией во время Второй мировой войны . В частности, одно важное свойство перестановок, а именно то, что две перестановки являются сопряженными именно тогда, когда они имеют один и тот же тип цикла, было использовано криптологом Марианом Реевским для взлома немецкого шифра «Энигма» на рубеже 1932-1933 годов. [12] [13]

Определение

В текстах по математике перестановки принято обозначать строчными греческими буквами. Обычно используются либо или . [14]

Перестановку можно определить как биекцию (обратимое отображение, взаимно-однозначную функцию) из множества S в себя:

Тождественная перестановка определяется для всех элементов и может быть обозначена числом , [a] или одним 1-циклом (x). [15] [16] Набор всех перестановок набора с n элементами образует симметричную группу , где групповая операция представляет собой композицию функций . Таким образом, для двух перестановок и в группе их произведение определяется как:

Состав обычно пишут без точки или другого знака. В общем случае композиция двух перестановок не является коммутативной :

Как биекция набора в себя, перестановка — это функция, выполняющая перестановку набора, называемую активной перестановкой или заменой . Более старая точка зрения рассматривает перестановку как упорядоченное расположение или список всех элементов S , называемый пассивной перестановкой (см. § Однострочное обозначение ниже). [17]

Перестановку можно разложить на один или несколько непересекающихся циклов , которые являются орбитами циклической группы , действующей на множестве S. Цикл находится путем многократного применения перестановки к элементу: , где мы предполагаем . Цикл, состоящий из k элементов, называется k -циклом. (См. § Обозначение цикла ниже.)

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

Обозначения

Для удобного представления перестановок широко используются несколько обозначений. Обозначение цикла является популярным выбором, поскольку оно компактно и ясно показывает структуру перестановки. В этой статье будет использоваться обозначение цикла, если не указано иное.

Двухстрочное обозначение

Двухстрочное обозначение Коши [18] [19] перечисляет элементы S в первой строке и изображение каждого элемента под ним во второй строке. Например, перестановка S = {1, 2, 3, 4, 5, 6}, заданная функцией

можно записать как

Элементы S могут появляться в первой строке в любом порядке, поэтому эту перестановку также можно записать:

Однострочное обозначение

Если существует «естественный» порядок элементов S , [b] скажем , то его используют для первой строки двухстрочной записи:

При этом предположении можно опустить первую строку и записать перестановку в однострочной записи как

,

то есть как упорядоченное расположение элементов S . [20] [21] Необходимо проявлять осторожность, чтобы отличать однострочную нотацию от циклической нотации, описанной ниже: обычно для однострочной нотации используются скобки или другие закрывающие знаки, а для циклической нотации используются круглые скобки. Однострочное обозначение еще называют словесным представлением . [22]

Тогда приведенный выше пример будет:

(Обычно для разделения этих записей используются запятые, только если некоторые из них содержат две или более цифр.)

Эта компактная форма распространена в элементарной комбинаторике и информатике . Это особенно полезно в приложениях, где перестановки необходимо сравнивать как большие или меньшие, используя лексикографический порядок .

Обозначение цикла

Обозначение цикла описывает эффект многократного применения перестановки к элементам множества S , при этом орбита называется циклом . Перестановка записывается в виде списка циклов; поскольку отдельные циклы включают в себя непересекающиеся наборы элементов, это называется «разложением на непересекающиеся циклы».

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

  1. Напишите открывающую скобку, за которой следует произвольный элемент x из :
  2. Проследите орбиту x , записывая значения при последовательном применении :
  3. Повторяйте, пока значение не вернется к x, и закройте скобки, не повторяя x :
  4. Продолжайте с элемента y из S , который еще не был записан, и повторите описанный выше процесс:
  5. Повторяйте до тех пор, пока все элементы S не будут записаны циклически.

Кроме того, 1-циклы обычно опускают, поскольку из них можно сделать вывод: для любого элемента x в S , не встречающегося ни в одном цикле, неявно предполагается . [23]

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

Это можно рассматривать как композицию циклических перестановок:

Хотя перестановки в целом не коммутируют, непересекающиеся циклы коммутируют; например:

Кроме того, каждый цикл можно переписать с другой отправной точки; например,

Таким образом, можно записать непересекающиеся циклы данной перестановки разными способами. Удобная особенность записи цикла состоит в том, что инвертирование перестановки осуществляется путем изменения порядка элементов в каждом цикле. Например,

Обозначение канонического цикла

В некоторых комбинаторных контекстах полезно зафиксировать определенный порядок элементов в циклах и самих (непересекающихся) циклов. Миклош Бона называет следующие варианты упорядочивания обозначением канонического цикла:

Например,

(513)(6)(827)(94)

является перестановкой S = {1, 2, . . . , 9} в обозначениях канонического цикла. [24]

Ричард Стэнли называет это «стандартным представлением» перестановки [25] , а Мартин Айгнер использует «стандартную форму». [22] Сергей Китаев также использует терминологию «стандартной формы», но меняет оба варианта; то есть каждый цикл сначала перечисляет свой минимальный элемент, а циклы сортируются в порядке убывания своих минимальных элементов. [26]

Состав перестановок

Есть два способа обозначить композицию двух перестановок. В наиболее распространённых обозначениях — это функция, которая отображает любой элемент x в . Крайняя правая перестановка сначала применяется к аргументу, [27] , поскольку аргумент записывается справа от функции.

Другое правило умножения перестановок заключается в записи аргумента слева от функции, так что самая левая перестановка действует первой . [28] [29] [30] В этих обозначениях перестановка часто записывается как показатель степени, поэтому σ, действующий на x , записывается x σ ; тогда продукт определяется как . В этой статье используется первое определение, в котором сначала применяется самая правая перестановка.

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

Другие варианты использования термина перестановка

Концепция перестановки как упорядоченного расположения допускает несколько обобщений, которые назывались перестановками , особенно в старой литературе.

k -перестановки n

В старой литературе и элементарных учебниках k -перестановка n (иногда называемая частичной перестановкой , последовательностью без повторения , вариации или расположения ) означает упорядоченное расположение (список) подмножества k -элементов n -множества. [c] [31] [32] Число таких k -перестановок ( k -перестановок) обозначается по-разному такими символами как , , , , , или , [33] и вычисляется по формуле: [34]

,

который равен 0, когда k > n , и в противном случае равен

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

Такое использование термина «перестановка» тесно связано с сочетанием терминов , обозначающим подмножество. K -комбинация множества S представляет собой подмножество S из k элементов : элементы комбинации не упорядочены. Упорядочение k -комбинаций S всеми возможными способами дает k - перестановки S. Таким образом , количество k -комбинаций n -множества C ( n , k ) связано с количеством k -перестановок n следующим образом:

Эти числа также известны как биномиальные коэффициенты , обычно обозначаемые :

Перестановки с повторением

Упорядоченное расположение k элементов множества S , где допускается повторение, называется k -кортежами . Их иногда называют перестановками с повторением , хотя они не являются перестановками в обычном смысле. Их еще называют словами по алфавиту S. Если множество S имеет n элементов, количество k -кортежей над S равно. Формальный язык — это набор слов, подчиняющихся заданным правилам.

Перестановки мультимножеств

Перестановки без повтора слева, с повтором справа.

Если M — конечное мультимножество , то перестановка мультимножества — это упорядоченное расположение элементов M , в котором каждый элемент появляется количество раз, точно равное его кратности в M. Анаграмма слова, состоящего из нескольких повторяющихся букв , является примером мультимножественной перестановки. [d] Если кратности элементов M (взятых в некотором порядке) равны , , ..., а их сумма (то есть размер M ) равна n , то количество перестановок мультимножества M определяется выражением полиномиальный коэффициент , [35]

Например, количество различных анаграмм слова МИССИСИПИ составляет: [36]

.

k -перестановка мультимножества M — это последовательность из k элементов M , в которой каждый элемент появляется в число раз, меньшее или равное его кратности в M ( количеству повторения элемента ).

Круговые перестановки

Перестановки, если рассматривать их как расположения, иногда называют линейно упорядоченными расположениями. Однако если объекты расположены по кругу, этот особый порядок ослабляется: в расположении нет «первого элемента», поскольку любой элемент можно рассматривать как начало. Расположение различных объектов по кругу называется круговой перестановкой . [37] [e] Их можно формально определить как классы эквивалентности обычных перестановок этих объектов для отношения эквивалентности , создаваемого перемещением последнего элемента линейного расположения вперед.

Две круговые перестановки эквивалентны, если одну можно повернуть в другую. Следующие четыре круговые перестановки четырех букв считаются одинаковыми.

 1 4 2 3 4 3 2 1 3 4 1 2 2 3 1 4

Круговые расположения следует читать против часовой стрелки, поэтому следующие два не эквивалентны, поскольку никакое вращение не может привести одно к другому.

 1 1 4 3 3 4 2 2

Их ( n  – 1)! круговые перестановки множества из n элементов.

Характеристики

Число перестановок n различных объектов равно n !.

Число n -перестановок с k непересекающимися циклами есть беззнаковое число Стирлинга первого рода , обозначаемое или . [38]

Тип цикла

Циклы (включая фиксированные точки) перестановки набора из n элементов, разделяющего этот набор; поэтому длины этих циклов образуют целочисленное разбиение n , которое называется типом цикла (или иногда структурой цикла или формой цикла ) . В типе цикла имеется «1» для каждой фиксированной точки , «2» для каждого транспонирования и так далее. Тип цикла

Это также можно записать в более компактной форме как [1 1 2 2 3 1 ] . Точнее, общий вид: , где – количество циклов соответствующей длины. Число перестановок данного типа цикла равно [39]

.

Число типов циклов множества из n элементов равно значению статистической суммы .

Полином индекса цикла Polya — это производящая функция , которая подсчитывает перестановки по типу цикла.

Сопряженные перестановки

В общем, составление перестановок, записанных в обозначениях циклов, не следует легко описываемому шаблону - циклы композиции могут отличаться от тех, которые составляются. Однако тип цикла сохраняется в частном случае сопряжения одной перестановки с другой перестановкой , что означает образование произведения . Здесь является сопряженным by и его обозначением цикла можно получить, взяв обозначение цикла для и применив его ко всем записям в нем. [40] Отсюда следует, что две перестановки сопряжены именно тогда, когда они имеют один и тот же тип цикла.

Порядок перестановки

Порядок перестановки — это наименьшее натуральное число m, такое что . Это наименьшее общее кратное длин его циклов. Например, порядок .

Четность перестановки

Любую перестановку конечного множества можно выразить как произведение транспозиций. [41] Хотя таких выражений для данной перестановки может существовать много, либо все они содержат четное количество транспозиций, либо все они содержат нечетное количество транспозиций. Таким образом, все перестановки можно классифицировать как четные или нечетные в зависимости от этого числа.

Этот результат можно расширить, чтобы присвоить знак , записанный , каждой перестановке. если четное и если нечетное. Тогда для двух перестановок и

Следует, что

Знак перестановки равен определителю ее матрицы перестановок (ниже).

Матричное представление

Матрица перестановок — это матрица размера n × n , которая имеет ровно одну запись 1 в каждом столбце и в каждой строке, а все остальные записи равны 0. Существует несколько способов присвоить матрицу перестановок перестановке {1, 2, .. ., н }. Один естественный подход состоит в том, чтобы определить линейное преобразование , которое переставляет стандартный базис на , и определить его матрицу. То есть его j столбец равен вектор-столбцу n × 1 : его запись ( i , j ) равна 1, если i = σ ( j ), и 0 в противном случае. Поскольку композиция линейных отображений описывается умножением матриц, отсюда следует, что эта конструкция совместима с композицией перестановок:

.

Например, однострочные перестановки имеют произведение , а соответствующие матрицы:

Композиция перестановок, соответствующая умножению матриц перестановок.

В литературе также часто встречается обратное соглашение, когда перестановка σ связана с матрицей , элемент ( i , j ) которой равен 1, если j = σ ( i ), и равен 0 в противном случае. В этом соглашении матрицы перестановок умножаются в порядке, противоположном перестановкам, то есть . В этом соответствии матрицы перестановок действуют в правой части стандартных векторов-строок : .

Таблица Кэли справа показывает эти матрицы для перестановок трех элементов.

Перестановки полностью упорядоченных множеств

В некоторых приложениях элементы переставляемого набора сравниваются друг с другом. Для этого требуется, чтобы множество S имело полный порядок , чтобы можно было сравнивать любые два элемента. Набор {1, 2, ..., n } с обычным отношением ≤ является наиболее часто используемым набором в этих приложениях.

Ряд свойств перестановки напрямую связан с общим упорядочением S, если рассматривать перестановку, записанную в однострочной записи, как последовательность .

Подъёмы, спуски, пробеги, превышения, рекорды

Восхождением перестановки  σ числа n является любая позиция i  <  n , где следующее значение больше текущего. То есть я — восхождение, если . Например, перестановка 3452167 имеет подъемы (в позициях) 1, 2, 5 и 6.

Аналогично, спуск — это позиция i  <  n с , поэтому каждый i с — это либо подъем, либо спуск.

Возрастающая серия перестановки — это непустая возрастающая непрерывная подпоследовательность, которую нельзя продлить ни на одном конце; он соответствует максимальной последовательности последовательных подъемов (последний может быть пустым: между двумя последовательными спусками еще существует восходящий пробег длины 1). Напротив, возрастающая подпоследовательность перестановки не обязательно является непрерывной: это возрастающая последовательность, полученная путем исключения некоторых значений однострочной записи. Например, перестановка 2453167 имеет возрастающие серии 245, 3 и 167, а возрастающая подпоследовательность — 2367.

Если перестановка имеет k  - 1 спусков, то она должна быть объединением k восходящих серий. [42]

Число перестановок n с k подъемами есть (по определению) эйлерово число ; это также количество перестановок n с k спусками. Однако некоторые авторы определяют число Эйлера как количество перестановок с k возрастающими сериями, что соответствует k - 1 спускам. [43]

Превышением перестановки σ 1 σ 2 ... σ n называется индекс j такой, что σ j > j . Если неравенство не является строгим (т. е. σ jj ), то j называется слабым превышением . Число n -перестановок с k превышениями совпадает с количеством n -перестановок с k спусками. [44]

Запись или максимум слева направо перестановки σ — это элемент i такой, что σ ( j ) < σ ( i ) для всех j < i .

Лемма о переходе Фоаты

Фундаментальная биекция Фоаты преобразует перестановку с заданной формой канонического цикла в перестановку , однострочная запись которой имеет ту же последовательность элементов с удаленными круглыми скобками. [25] [45] Например:

Здесь первый элемент в каждом каноническом цикле становится записью (максимум слева направо) . Учитывая , можно найти его записи и вставить круглые скобки для построения обратного преобразования . Подчеркивая записи в приведенном выше примере: , что позволяет восстановить циклы .

В следующей таблице показаны и для шести перестановок S = {1, 2, 3}, причем жирный текст с каждой стороны показывает обозначения, используемые в биекции: однострочное обозначение для и обозначение канонического цикла для .

В качестве первого следствия число n -перестановок с ровно k записями равно числу n -перестановок с ровно k циклами: это последнее число есть беззнаковое число Стирлинга первого рода , . Более того, отображение Фоаты переводит n -перестановку с k слабыми превышениями в n -перестановку с k - 1 подъемами. [45] Например, (2)(31) = 321 имеет k = 2 слабых превышения (при индексе 1 и 2), тогда как f (321) = 231 имеет k − 1 = 1 подъем (при индексе 1, т.е. от 2 до 3).

Инверсии

В головоломке «15» цель состоит в том, чтобы расположить квадраты в порядке возрастания. Начальные позиции, имеющие нечетное количество инверсий, решить невозможно. [46]

Инверсия перестановки  σ — это пара ( i , j ) позиций , в которых элементы перестановки находятся в противоположном порядке: и . [47] Таким образом, спуск представляет собой инверсию в двух соседних позициях. Например, σ = 23154 имеет ( i , j ) = (1, 3), (2, 3) и (4, 5), где ( σ ( i ), σ ( j )) = (2, 1) , (3, 1) и (5, 4).

Иногда инверсию определяют как пару значений ( σ ( i ), σ ( j )); это не имеет значения для количества инверсий, а обратная пара ( σ ( j ), σ ( i )) является инверсией в указанном выше смысле для обратной перестановки σ −1 .

Количество инверсий является важным показателем степени нарушения порядка элементов перестановки; это то же самое для σ и для σ −1 . Привести перестановку с k инверсиями в порядок (то есть преобразовать ее в тождественную перестановку) путем последовательного применения (умножения вправо) соседних транспозиций всегда возможно и требуется последовательность из k таких операций. Более того, любой разумный выбор соседних транспозиций будет работать: достаточно на каждом шаге выбрать транспозицию i и i + 1 , где i — это спуск перестановки в том виде, в котором он был изменен на данный момент (так что транспонирование удалит этот конкретный спуск, хотя это может привести к другим спускам). Это так, потому что применение такой транспозиции уменьшает количество инверсий на 1; пока это число не равно нулю, перестановка не является тождественной, поэтому она имеет хотя бы один спуск. Пузырьковую сортировку и сортировку вставкой можно интерпретировать как отдельные случаи этой процедуры, позволяющие привести последовательность в порядок. Кстати, эта процедура доказывает, что любую перестановку σ можно записать как произведение соседних транспозиций; для этого можно просто перевернуть любую последовательность таких транспозиций, которая преобразует σ в единицу. Фактически, перечислив все последовательности соседних транспозиций, которые преобразуют σ в единицу, можно получить (после обращения) полный список всех выражений минимальной длины, записывая σ как произведение соседних транспозиций.

Число перестановок n с k инверсиями выражается числом Маона . [48] ​​Это коэффициент расширения продукта.

Обозначение обозначает q-факториал . Это расширение обычно появляется при изучении ожерелий .

Пусть такое то и . В этом случае скажем, что вес инверсии равен . Кобаяши (2011) доказал формулу пересчета.

где обозначает порядок Брюа в симметрических группах . Этот градуированный частичный порядок часто появляется в контексте групп Кокстера .

Перестановки в вычислениях

Перестановки нумерации

Один из способов представить перестановки n вещей — это целое число N с 0 ≤  N  <  n !, при условии, что даны удобные методы для преобразования числа в представление перестановки в виде упорядоченного расположения (последовательности). Это дает наиболее компактное представление произвольных перестановок и особенно привлекательно в вычислениях, когда n достаточно мало, чтобы N можно было хранить в машинном слове; для 32-битных слов это означает n  ≤ 12, а для 64-битных слов это означает n  ≤ 20. Преобразование может быть выполнено через промежуточную форму последовательности чисел d n , d n −1 , ..., d 2 , d 1 , где d i — неотрицательное целое число, меньшее i (можно опустить d 1 , так как оно всегда равно 0, но его присутствие облегчает описание последующего преобразования в перестановку). Тогда первым шагом будет простое выражение N в факториальной системе счисления , которая представляет собой конкретное представление смешанной системы счисления , где для чисел меньше n ! основания (значения разрядов или коэффициенты умножения) для последовательных цифр равны ( n - 1 )! , ( n − 2)! , ..., 2!, 1!. Второй шаг интерпретирует эту последовательность как код Лемера или (почти то же самое) как таблицу инверсии.

В коде Лемера для перестановки  σ число d n представляет выбор, сделанный для первого члена  σ 1 , число d n -1 представляет выбор, сделанный для второго члена σ 2 среди оставшихся n - 1 элементов набора. , и так далее. Точнее, каждый d n +1− i дает количество оставшихся элементов строго меньше, чем член σ i . Поскольку эти оставшиеся элементы обязательно появятся как какой-то более поздний член σ j , цифра d n +1− i считает инверсии ( i , j ), включающие i , как меньший индекс (количество значений j , для которых i  <  j и σ я  >  σ j ). Таблица инверсий для  σ очень похожа, но здесь d n +1− k подсчитывает количество инверсий ( i , j ), где k  =  σ j встречается как меньшее из двух значений, появляющихся в инвертированном порядке. [49]

Обе кодировки можно визуализировать с помощью диаграммы Роте n  на  n [50] (названной в честь Генриха Августа Роте ), в которой точки в ( i , σi ) обозначают элементы перестановки, а крестик в точке ( i , σj ) отмечает инверсия ( i , j ); по определению инверсии крестик появляется в любом квадрате, который стоит как перед точкой ( j , σj ) в столбце, так и перед точкой ( i , σi ) в строке. В коде Лемера указано количество крестов в последовательных строках, а в таблице инверсии указано количество крестов в последовательных столбцах; это просто код Лемера для обратной перестановки, и наоборот.

Чтобы эффективно преобразовать код Лемера d n , d n −1 , ..., d 2 , d 1 в перестановку упорядоченного набора S , можно начать со списка элементов S в возрастающем порядке, и для i увеличение от 1 до n устанавливает σ i в элемент списка, которому предшествуют d n +1− i другие элементы, и удаляет этот элемент из списка. Чтобы преобразовать таблицу инверсии d n , d n −1 , ..., d 2 , d 1 в соответствующую перестановку, можно пройти числа от d 1 до d n , вставляя элементы S от большего к меньшему в таблицу. изначально пустая последовательность; на шаге с использованием номера d из таблицы инверсий элемент из S вставляется в последовательность в той точке, где ему предшествуют уже присутствующие d элементов. В качестве альтернативы можно обрабатывать числа из инверсионной таблицы и элементы S в обратном порядке, начиная со строки из n пустых ячеек, и на каждом шаге помещать элемент из S в пустую ячейку, которой предшествуют d других пустых ячеек. слоты.

Преобразование последовательных натуральных чисел в факториальную систему счисления дает эти последовательности в лексикографическом порядке (как и в случае с любой смешанной системой счисления), а дальнейшее преобразование их в перестановки сохраняет лексикографический порядок при условии, что используется интерпретация кода Лемера (с использованием таблиц инверсии). , мы получаем другой порядок, когда мы начинаем со сравнения перестановок по месту их записей 1, а не по значению их первых записей). Сумма чисел в представлении факториальной системы счисления дает количество инверсий перестановки, а четность этой суммы дает подпись перестановки . При этом положения нулей в таблице инверсии дают значения максимумов перестановки слева направо (в примере 6, 8, 9), а положения нулей в коде Лемера — это положения правых -минимумы слева (в примере позиции 4, 8, 9 из значений 1, 2, 5); это позволяет вычислить распределение таких экстремумов среди всех перестановок. Перестановка с кодом Лемера d n , d n −1 , ..., d 2 , d 1 имеет восхождение ni тогда и только тогда, когда d id i +1 .

Алгоритмы генерации перестановок

При вычислениях может потребоваться генерировать перестановки заданной последовательности значений. Методы, лучше всего приспособленные для этого, зависят от того, нужны ли вам некоторые случайно выбранные перестановки или все перестановки, и в последнем случае требуется ли определенный порядок. Другой вопрос: следует ли учитывать возможное равенство записей в данной последовательности; если да, то следует генерировать только отдельные мультимножественные перестановки последовательности.

Очевидный способ генерировать перестановки n — это генерировать значения для кода Лемера (возможно, используя представление целых чисел до n в факториальной системе счисления !) и преобразовывать их в соответствующие перестановки. Однако последний шаг, хотя и прост, его трудно реализовать эффективно, поскольку он требует n операций выбора из последовательности и удаления из нее в произвольной позиции; Из очевидных представлений последовательности в виде массива или связанного списка оба требуют (по разным причинам) около n 2/4 операций для выполнения преобразования. Поскольку n, скорее всего, будет довольно маленьким (особенно если необходима генерация всех перестановок), это не такая уж большая проблема, но оказывается, что как для случайной, так и для систематической генерации существуют простые альтернативы, которые работают значительно лучше. По этой причине не представляется полезным, хотя, безусловно, возможным использовать специальную структуру данных, которая позволила бы выполнить преобразование из кода Лемера в перестановку за время O ( n log n ) .

Случайное создание перестановок

Для генерации случайных перестановок заданной последовательности из n значений не имеет значения, применяется ли к последовательности случайно выбранная перестановка n или выбирается случайный элемент из набора различных (мультимножеств) перестановок последовательности. Это связано с тем, что, хотя в случае повторяющихся значений может быть много различных перестановок n , которые приводят к одной и той же перестановочной последовательности, количество таких перестановок одинаково для каждого возможного результата. В отличие от систематической генерации, которая при больших n становится невозможной из-за роста числа n !, нет оснований предполагать, что n будет малым при случайной генерации.

Основная идея создания случайной перестановки состоит в том, чтобы сгенерировать случайную одну из n ! последовательности целых чисел d 1 , d 2 ,..., d n, удовлетворяющие условию 0 ≤ d i < i (поскольку d 1 всегда равно нулю, его можно опустить) и преобразовать его в перестановку посредством биективного соответствия. Для последнего соответствия можно интерпретировать (обратную) последовательность как код Лемера, и это дает метод генерации, впервые опубликованный в 1938 году Рональдом Фишером и Фрэнком Йейтсом . [51] Хотя в то время компьютерная реализация не была проблемой, этот метод страдает от описанной выше трудности эффективного преобразования кода Лемера в перестановку. Это можно исправить, используя другое биективное соответствие: после использования d i для выбора элемента среди i оставшихся элементов последовательности (для уменьшения значений i ), вместо удаления элемента и уплотнения последовательности путем сдвига вниз следующих элементов на одно место. , элемент заменяется последним оставшимся элементом. Таким образом, элементы, оставшиеся для выбора, образуют последовательный диапазон в каждый момент времени, даже если они могут встречаться не в том же порядке, что и в исходной последовательности. Отображение последовательности целых чисел в перестановки несколько сложное, но можно видеть, что оно производит каждую перестановку ровно одним способом - с помощью непосредственной индукции . Если выбранный элемент оказывается последним оставшимся элементом, операцию замены можно пропустить. Это происходит не так часто, чтобы гарантировать проверку условия, но последний элемент должен быть включен в число кандидатов выбора, чтобы гарантировать возможность создания всех перестановок.

Полученный алгоритм генерации случайной перестановки можно описать в псевдокоде следующим образом :a[0], a[1], ..., a[n − 1]

для  i  от  n  до 2 do  d i ← случайный элемент из { 0, ..., i − 1 } поменять местами  a [ d i ] и a [ i − 1]

Это можно объединить с инициализацией массива следующим образом:a[i] = i

для  i  от 0 до  n −1 do  d i +1 ← случайный элемент из { 0, ..., i } a [ i ] ← a [ d i +1 ] a [ d i +1 ] ← i

Если d i +1 = i , первое присваивание скопирует неинициализированное значение, а второе перезапишет его правильным значением i .

Однако Фишер-Йейтс не является самым быстрым алгоритмом генерации перестановки, поскольку Фишер-Йейтс по сути является последовательным алгоритмом, и процедуры «разделяй и властвуй» могут достигать одного и того же результата параллельно. [52]

Генерация в лексикографическом порядке

Существует много способов систематического создания всех перестановок данной последовательности. [53] Один классический, простой и гибкий алгоритм основан на поиске следующей перестановки в лексикографическом порядке , если он существует. Он может обрабатывать повторяющиеся значения, и в этом случае он генерирует каждую отдельную перестановку мультимножества один раз. Даже для обычных перестановок это значительно более эффективно, чем генерирование значений для кода Лемера в лексикографическом порядке (возможно, с использованием факториальной системы счисления ) и преобразование их в перестановки. Он начинается с сортировки последовательности в (слабо) возрастающем порядке (что дает лексикографически минимальную перестановку), а затем повторяется, переходя к следующей перестановке, пока она не будет найдена. Этот метод восходит к Нараяне Пандиту в Индии 14 века и часто открывался заново. [54]

Следующий алгоритм генерирует следующую перестановку лексикографически после заданной перестановки. Он изменяет данную перестановку на месте.

  1. Найдите наибольший индекс k такой, что a [ k ] < a [ k + 1] . Если такого индекса не существует, перестановка является последней перестановкой.
  2. Найдите наибольший индекс l, превышающий k , такой, что a [ k ] < a [ l ] .
  3. Поменяйте местами значение a [ k ] на значение a [ l ].
  4. Переверните последовательность от a [ k + 1] до последнего элемента a [ n ] включительно.

Например, учитывая последовательность [1, 2, 3, 4] (которая находится в порядке возрастания) и индекс отсчитывается от нуля , шаги будут следующими:

  1. Индекс k = 2, поскольку 3 помещается в индекс, который удовлетворяет условию наибольшего индекса, который все еще меньше, чем a [ k + 1], который равен 4.
  2. Индекс l = 3, поскольку 4 — единственное значение в последовательности, которое больше 3, чтобы удовлетворить условию a [ k ] < a [ l ].
  3. Значения a [2] и a [3] меняются местами, чтобы сформировать новую последовательность [1, 2, 4, 3].
  4. Последовательность после k -index a [2] до последнего элемента меняется на обратную. Поскольку после этого индекса находится только одно значение (3), последовательность в этом случае остается неизменной. Таким образом переставляется лексикографический преемник исходного состояния: [1, 2, 4, 3].

Следуя этому алгоритму, следующей лексикографической перестановкой будет [1, 3, 2, 4], а 24-й перестановкой будет [4, 3, 2, 1], в которой a [ k ] < a [ k + 1] выполняет не существует, что указывает на то, что это последняя перестановка.

Этот метод использует около 3 сравнений и 1,5 замен на перестановку, амортизируемых по всей последовательности, не считая начальной сортировки. [55]

Генерация с минимальными изменениями

Альтернатива вышеупомянутому алгоритму, алгоритм Штейнхауса-Джонсона-Троттера , генерирует упорядочение для всех перестановок данной последовательности со свойством, что любые две последовательные перестановки в ее выходных данных различаются путем замены двух соседних значений. Этот порядок перестановок был известен английским звонарам 17-го века, среди которых он был известен как «простые изменения». Одним из преимуществ этого метода является то, что небольшое количество изменений от одной перестановки к другой позволяет реализовать метод за постоянное время для каждой перестановки. То же самое можно также легко сгенерировать подмножество четных перестановок, опять же за постоянное время для каждой перестановки, пропуская все остальные выходные перестановки. [54]

Альтернативой Стейнхаусу-Джонсону-Троттеру является алгоритм Хипа [56] , который Роберт Седжвик в 1977 году назвал самым быстрым алгоритмом генерации перестановок в приложениях. [53]

На следующем рисунке показаны выходные данные всех трех вышеупомянутых алгоритмов генерации всех перестановок длины и шести дополнительных алгоритмов, описанных в литературе.

Упорядочение всех перестановок длины , созданных разными алгоритмами. Перестановки имеют цветовую кодировку, где  1 ,  2 ,  3 ,  4 . [57]
  1. Лексикографическая упорядоченность;
  2. алгоритм Штейнгауза-Джонсона-Троттера ;
  3. Алгоритм Хипа ;
  4. Алгоритм перестановки звезд Эрлиха: [54] на каждом этапе первая запись перестановки заменяется последующей записью;
  5. Алгоритм обращения префикса Закса: [58] на каждом этапе префикс текущей перестановки меняется на обратный для получения следующей перестановки;
  6. Алгоритм Савады-Вильямса: [59] каждая перестановка отличается от предыдущей либо циклическим сдвигом влево на одну позицию, либо заменой первых двух записей;
  7. Алгоритм Корбетта: [60] каждая перестановка отличается от предыдущей циклическим сдвигом влево некоторого префикса на одну позицию;
  8. Однодорожечный порядок: [61] каждый столбец представляет собой циклический сдвиг других столбцов;
  9. Однодорожечный код Грея: [61] каждый столбец представляет собой циклический сдвиг других столбцов, плюс любые две последовательные перестановки отличаются только одной или двумя транспозициями.

Меандрические перестановки

Меандрические системы порождают меандрические перестановки , особое подмножество альтернативных перестановок . Альтернативная перестановка набора {1, 2, ..., 2 n } — это циклическая перестановка (без фиксированных точек), такая, что цифры в циклической форме записи чередуются между нечетными и четными целыми числами. Меандрические перестановки полезны при анализе вторичной структуры РНК. Не все альтернативные перестановки являются меандрическими. Модификация алгоритма Хипа использовалась для генерации всех альтернативных перестановок порядка n (то есть длины 2 n ) без генерации всех (2 n )! перестановки. [62] [ ненадежный источник? ] Генерация этих альтернативных перестановок необходима до их анализа, чтобы определить, являются ли они меандрическими или нет.

Алгоритм рекурсивный. В следующей таблице показаны этапы процедуры. На предыдущем шаге были сгенерированы все альтернативные перестановки длиной 5. К трем копиям каждого из них к правому концу добавляется цифра «6», а затем применяется другое транспонирование, включающее эту последнюю запись и предыдущую запись в четной позиции (включая идентичность; то есть без транспозиции).

Приложения

Перестановки используются в компоненте перемежителя алгоритмов обнаружения и исправления ошибок , таких как турбокоды , например, эти идеи использует стандарт мобильной связи 3GPP Long Term Evolution (см. техническую спецификацию 3GPP 36.212 [63] ). Такие приложения поднимают вопрос о быстрой генерации перестановок, удовлетворяющих определенным желаемым свойствам. Один из методов основан на перестановочных полиномах . Также в качестве основы для оптимального хеширования в уникальном хешировании перестановок. [64]

Смотрите также

Примечания

  1. ^ 1 часто используется для обозначения единичного элемента в некоммутативной группе.
  2. ^ Порядок часто понимается неявно. Набор целых чисел естественно записывается от наименьшего к наибольшему; набор букв записан в лексикографическом порядке. Для других наборов естественный порядок необходимо указать явно.
  3. ^ Точнее, вариации без повторений . Этот термин до сих пор распространен в других языках и чаще всего встречается в современном английском языке в переводе.
  4. ^ Естественный порядок в этом примере — это порядок букв в исходном слове.
  5. ^ В старых текстах циклическая перестановка иногда использовалась как синоним циклической перестановки , но больше этого не делается. См. Кармайкл (1956, стр. 7).

Рекомендации

  1. ^ Вебстер (1969)
  2. ^ Маккой (1968, стр. 152)
  3. ^ Неринг (1970, стр. 86)
  4. ^ Хит, Томас Литтл (1981). История греческой математики. Нью-Йорк: Dover Publications. ISBN 0-486-24073-8. ОСЛК  7703465.
  5. ^ Бромелинг, Лайл Д. (1 ноября 2011 г.). «Отчет о ранних статистических выводах в арабской криптологии». Американский статистик . 65 (4): 255–257. дои : 10.1198/tas.2011.10191. S2CID  123537702.
  6. ^ Биггс, Нидерланды (1979). «Корни комбинаторики». История математики . 6 (2): 109–136. дои : 10.1016/0315-0860(79)90074-0.
  7. ^ Стедман 1677, с. 4.
  8. ^ Стедман 1677, с. 5.
  9. ^ Стедман 1677, стр. 6–7.
  10. ^ Стедман 1677, с. 8.
  11. ^ Стедман 1677, стр. 13–18.
  12. ^ Реевский, Мариан (1980). «Применение теории перестановок для взлома шифра Энигмы». Приложения Mathematicae . 16 (4): 543–559. дои : 10.4064/am-16-4-543-559 . ISSN  1233-7234.
  13. ^ Кэш, Дэвид (2019). «CMSC 28400 Введение в криптографию, осень 2019 г. — Примечания № 2: Перестановки и загадка» (PDF) .
  14. ^ Шайнерман, Эдвард А. (5 марта 2012 г.). «Глава 5: Функции». Математика: дискретное введение (3-е изд.). Cengage Обучение. п. 188. ИСБН 978-0840049421. Архивировано из оригинала 5 февраля 2020 года . Проверено 5 февраля 2020 г. Для обозначения перестановок принято использовать строчные греческие буквы (особенно π, σ и τ).
  15. ^ Ротман 2002, с. 41
  16. ^ Богарт 1990, с. 487
  17. ^ Кэмерон 1994, с. 29, сноска 3.
  18. ^ Коши, Ал. (январь 1815 г.). «Mémoire Sur le Nombre des Valeurs qu'une Fonction peut acquérir, lorsqu'on y permute de toutes les manières coulds les quantités qu'elle renferme» [Мемуар о количестве значений, которые может получить функция при перестановке внутри нее, в всеми возможными способами, переменными, которые он содержит]. Журнал политехнической школы (на французском языке). 10 :1–28. См. стр. 4.
    • английский перевод
  19. ^ Вуссинг, Ганс (2007), Генезис концепции абстрактной группы: вклад в историю происхождения абстрактной теории групп, Courier Dover Publications, стр. 94, ISBN 9780486458687Коши впервые использовал свою нотацию перестановок, в которой аранжировки пишутся одна под другой и обе заключаются в круглые скобки, в 1815 году.
  20. ^ Богарт 1990, с. 17
  21. ^ Герштейн 1987, с. 217
  22. ^ аб Айгнер, Мартин (2007). Курс счета . Springer GTM 238. стр. 24–25. ISBN 978-3-540-39035-0.
  23. ^ Холл 1959, с. 54
  24. ^ Bona 2012, стр.87 [Здесь в книге есть опечатка/ошибка, поскольку вместо (54) указано (45).]
  25. ^ аб Стэнли, Ричард П. (2012). Перечислительная комбинаторика: Том I, второе издание . Издательство Кембриджского университета. п. 30, предложение 1.3.1. ISBN 978-1-107-01542-5.
  26. ^ Китаев, Сергей (2011). Закономерности в перестановках и словах . Springer Science & Business Media. п. 119. ИСБН 978-3-642-17333-2.
  27. ^ Биггс, Норман Л.; Уайт, AT (1979). Группы перестановок и комбинаторные структуры . Издательство Кембриджского университета. ISBN 978-0-521-22287-7.
  28. ^ Диксон, Джон Д.; Мортимер, Брайан (1996). Группы перестановок . Спрингер. ISBN 978-0-387-94599-6.
  29. ^ Кэмерон, Питер Дж. (1999). Группы перестановок . Издательство Кембриджского университета. ISBN 978-0-521-65302-2.
  30. ^ Джеррам, М. (1986). «Компактное представление групп перестановок». Дж. Алгоритмы . 7 (1): 60–78. дои : 10.1016/0196-6774(86)90038-6. S2CID  18896625.
  31. ^ «Комбинации и перестановки». www.mathsisfun.com . Проверено 10 сентября 2020 г.
  32. ^ Вайсштейн, Эрик В. «Перестановка». mathworld.wolfram.com . Проверено 10 сентября 2020 г.
  33. ^ Успенский 1937, с. 18
  34. ^ Хараламбидес, Ч. А. (2002). Перечислительная комбинаторика. ЦРК Пресс. п. 42. ИСБН 978-1-58488-290-9.
  35. ^ Бруальди 2010, с. 46, теорема 2.4.2.
  36. ^ Бруальди 2010, с. 47
  37. ^ Бруальди 2010, с. 39
  38. ^ Бона 2012, стр. 97–103.
  39. ^ Саган, Брюс (2001), Симметричная группа (2-е изд.), Springer, стр. 3
  40. ^ Хамфрис 1996, с. 84.
  41. ^ Холл 1959, с. 60
  42. ^ Бона 2004, с. 4ф.
  43. ^ Бона 2012, стр. 4–5.
  44. ^ Бона 2012, с. 25.
  45. ^ ab Bona 2012, стр. 109–110.
  46. ^ Слокам, Джерри; Вайсштейн, Эрик В. (1999). «15 – головоломка». Математический мир . Вольфрам Рисерч, Инк . Проверено 4 октября 2014 г.
  47. ^ Бона 2004, с. 43.
  48. ^ Бона 2004, стр. 43 и далее.
  49. ^ Кнут 1973, с. 12.
  50. ^ HA Rothe , Sammlung combinatorisch-analytischer Abhandlungen 2 (Лейпциг, 1800), 263–305. Цитируется у Кнута 1973, с. 14
  51. ^ Фишер, РА; Йейтс, Ф. (1948) [1938]. Статистические таблицы для биологических, сельскохозяйственных и медицинских исследований (3-е изд.). Лондон: Оливер и Бойд. стр. 26–27. ОСЛК  14222135.
  52. ^ Бахер, А.; Бодини, О.; Хван, Гонконг; Цай, TH (2017). «Генерация случайных перестановок путем подбрасывания монеты: классические алгоритмы, новый анализ и современная реализация» (ACM Trans. Algorithms 13 (2): 24: 1–24: 43 изд.). стр. 24–43.
  53. ^ аб Седжвик, Р. (1977). «Методы генерации перестановок» (PDF) . Вычислительные опросы . 9 (2): 137–164. дои : 10.1145/356689.356692. S2CID  12139332. Архивировано (PDF) из оригинала 21 февраля 2008 г.
  54. ^ abc Knuth 2005, стр. 1–26.
  55. ^ "std::next_permutation". cppreference.com . 4 декабря 2017 года . Проверено 31 марта 2018 г.
  56. ^ Куча, BR (1963). «Перестановки путем обмена». Компьютерный журнал . 6 (3): 293–298. дои : 10.1093/comjnl/6.3.293 .
  57. ^ Мютце, Торстен; Савада, Джо; Уильямс, Аарон. «Создать перестановки». Сервер комбинаторных объектов . Проверено 29 мая 2019 г.
  58. ^ Закс, С. (1984). «Новый алгоритм генерации перестановок». БИТ Численная математика . 24 (2): 196–204. дои : 10.1007/BF01937486. S2CID  30234652.
  59. ^ Савада, Джо; Уильямс, Аарон (2018). «Путь Гамильтона для проблемы сигма-тау». Материалы 29-го ежегодного симпозиума ACM-SIAM по дискретным алгоритмам, SODA 2018 . Новый Орлеан, Луизиана: Общество промышленной и прикладной математики (SIAM). стр. 568–575. дои : 10.1137/1.9781611975031.37 .
  60. ^ Корбетт, П.Ф. (1992). «Графы-ротаторы: эффективная топология для многопроцессорных сетей типа «точка-точка». Транзакции IEEE в параллельных и распределенных системах . 3 (5): 622–626. дои : 10.1109/71.159045.
  61. ^ Аб Арндт, Йорг (2011). Имеет значение вычислительный. Идеи, алгоритмы, исходный код . Спрингер . дои : 10.1007/978-3-642-14764-7. ISBN 978-3-642-14763-0.
  62. ^ Алексиу, А.; Психа, М.; Вламос, П. (2011). «Алгоритм, основанный на комбинаторных перестановках, для представления закрытых вторичных структур РНК». Биоинформация . 7 (2): 91–95. дои : 10.6026/97320630007091. ПМК 3174042 . ПМИД  21938211. 
  63. ^ "3GPP TS 36.212" .
  64. ^ Долев, Шломи; Лахиани, Лимор; Хавив, Иннон (2013). «Уникальное хеширование перестановок». Теоретическая информатика . 475 : 59–65. дои : 10.1016/j.tcs.2012.12.047 .

Библиография

дальнейшее чтение

Внешние ссылки