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

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

В математике перестановка значений набора : может означать одно из двух разных

Примером первого значения являются шесть перестановок (упорядочений) набора {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 в себя:

Тождественная перестановка определяется формулой для всех элементов , и может быть обозначено числом , [а] к , или одним 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 , [б] сказать , то это используется для первой строки двухстрочной записи:

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

,

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

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

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

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

Обозначение цикла [ править ]

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

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

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

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

Следуя соглашению об исключении 1-циклов, можно интерпретировать отдельный цикл как перестановку, которая фиксирует все элементы, не входящие в цикл ( циклическая перестановка, имеющая только один цикл длиной больше 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 -множества. [с] [31] [32] Число таких k -перестановок ( k -композиций) обозначается по-разному такими символами, как , , , , , или , [33] вычисляется по формуле: [34]

,

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

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

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

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

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

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

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

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

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

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

.

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

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

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

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

     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 Полином индекса цикла — это производящая функция , которая подсчитывает перестановки по типу цикла.

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

В общем, составление перестановок, записанных в обозначениях циклов, не следует легко описываемому шаблону - циклы композиции могут отличаться от тех, которые составляются. Однако тип цикла сохраняется в частном случае сопряжения перестановки другой перестановкой , что означает формирование продукта . Здесь, является сопряженным к и его обозначение цикла можно получить, взяв обозначение цикла для и применение ко всем записям в нем. [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 с , поэтому каждый я с это либо подъем, либо спуск.

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

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

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

Превышением перестановки σ 1 σ 2 ... σ n называется индекс j такой, что σ j > j . Если неравенство не является строгим (т. е. σ j j ), то 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 )! , ( п − 2)! , ..., 2!, 1!. Второй шаг интерпретирует эту последовательность как код Лемера или (почти то же самое) как таблицу инверсии.

Диаграмма Роте для
σ я
я
1 2 3 4 5 6 7 8 9 Код Лемера
1 × × × × × д 9 = 5
2 × × д 8 = 2
3 × × × × × d 7 = 5
4 д 6 = 0
5 × д 5 = 1
6 × × × д 4 = 3
7 × × д 3 = 2
8 д2 = 0
9 д 1 = 0
Инверсионный стол 3 6 1 2 4 0 2 0 0

В коде Лемера для перестановки σ число 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 j ) отмечает инверсию ( i , в котором точки в ); по определению инверсии крест появляется в любом квадрате, который стоит как перед точкой ( 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 имеет восхождение n i тогда и только тогда, когда d i d 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  } 
      а  [  я  ] ←  а  [  d  я  +1  ] 
      а  [  d  я  +1  ] ←  я 

Если 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] каждый столбец представляет собой циклический сдвиг других столбцов, плюс любые две последовательные перестановки отличаются только одной или двумя транспозициями.
  10. Алгоритм генерации вложенных свопов по шагам, связанным с вложенными подгруппами . Каждая перестановка получается из предыдущей транспонированием влево. Алгоритм связан с Factorial_number_system индекса.

Генерация перестановок во вложенных шагах подкачки [ править ]

Явная последовательность перестановок (транспозиции, 2-циклы ), описывается здесь, причем каждая замена, примененная (слева) к предыдущей цепочке, обеспечивает новую перестановку, так что все перестановки можно получить, каждую только один раз. [62] Эта процедура подсчета/генерации имеет дополнительную структуру (назовем ее вложенной), так как она представлена ​​поэтапно: после полного получения , продолжить поиск по смежным классам из в , соответствующим выбором представителей смежного класса будет описано ниже. Обратите внимание, что поскольку каждый генерируется последовательно, имеется последний элемент . Итак, после генерации путем обмена, следующая перестановка в должно быть для некоторых . Затем все свопы, которые сгенерировали повторяются, генерируя весь смежный класс , достигая последней перестановки в этом смежном классе ; следующая замена должна переместить перестановку к представителю другого смежного класса .

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

ПРИМЕРЫ: очевидно, для надо ; строить существует только две возможности для начала смежного класса, удовлетворяющего условию отсутствия повторения; выбор приводит к . Чтобы продолжить создание нужны соответствующие начала смежных классов (удовлетворяющие условию отсутствия повторения): есть удобный выбор: , что приводит к . Затем, чтобы построить удобным выбором для начала смежного класса (удовлетворяющего условию отсутствия повторения) является , что приводит к .

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

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

Приложения [ править ]

Перестановки используются в перемежителя компоненте алгоритмов обнаружения и исправления ошибок , таких как турбокоды , например, 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 г.). Память о количестве значений, которые может приобрести функция , когда в ней всеми возможными способами переставляют» « все возможные способы переменных, которые она содержит]. Журнал Политехнической школы (на французском языке). 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. ^ Перейти обратно: а б См. 2012 , стр. 109–110.
  46. ^ Слокам, Джерри; Вайсштейн, Эрик В. (1999). «15 – головоломка» . Математический мир . Вольфрам Рисерч, Инк . Проверено 4 октября 2014 г.
  47. ^ Бона 2004 , с. 43.
  48. ^ Бона 2004 , стр. 43 и далее.
  49. ^ Кнут 1973 , с. 12.
  50. ^ HA Rothe , Сборник комбинаторно-аналитических трактатов 2 (Лейпциг, 1800), 263–305. Цитируется у Кнута 1973 , с. 14
  51. ^ Фишер, РА; Йейтс, Ф. (1948) [1938]. Статистические таблицы для биологических, сельскохозяйственных и медицинских исследований (3-е изд.). Лондон: Оливер и Бойд. стр. 26–27. OCLC   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. ^ Перейти обратно: а б с Кнут 2005 , стр. 1–26.
  55. ^ "std::next_permutation" . cppreference.com . 4 декабря 2017 года . Проверено 31 марта 2018 г.
  56. ^ Хип, БР (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. ^ Попп, ОТ (2002). Быстрая обработка больших перестановок . прив. комм.
  63. ^ «3ГПП ТС 36.212» .
  64. ^ Долев, Шломи; Лахиани, Лимор; Хавив, Иннон (2013). «Уникальное хеширование перестановок» . Теоретическая информатика . 475 : 59–65. дои : 10.1016/j.tcs.2012.12.047 .

Библиография [ править ]

Дальнейшее чтение [ править ]

  • Биггс, Норман Л. (2002), Дискретная математика (2-е изд.), Oxford University Press, ISBN  978-0-19-850717-8
  • Фоата, Доминик; Шутценбергер, Марсель-Поль (1970), Геометрическая теория эйлеровых полиномов , Конспект лекций по математике, том. 138, Берлин, Гейдельберг: Springer-Verlag, ISBN  978-3-540-04927-2 . Ссылка ведет на свободно доступную перепечатанную (в формате LaTeX) и исправленную версию текста, первоначально опубликованного Springer-Verlag.
  • Кнут, Дональд (1998), Сортировка и поиск , Искусство компьютерного программирования, том. 3 (второе изд.), Аддисон-Уэсли, ISBN  978-0-201-89685-5 . Раздел 5.1: Комбинаторные свойства перестановок, стр. 11–72.
  • Седжвик, Роберт (1977). «Методы генерации перестановок» . Обзоры вычислительной техники ACM . 9 (2): 137–164. дои : 10.1145/356689.356692 . S2CID   12139332 .
  • Масато, Кобаяши (2011). «Перечисление биграссмановых перестановок ниже перестановки в порядке Брюа». Заказ . 1 : 131–137.

Внешние ссылки [ править ]