Труды Карельского научного центра РАН № 4. 2014. С. 80-86
УДК 519.115:519.2
КОМБИНАТОРНЫЙ АНАЛИЗ СХЕМЫ ПЕРЕСТАНОВОК
А. В. Колчин, Н. Ю. Энатская1
1 Московский институт электроники и математики
Национального исследовательского университета «Высшая школа экономики»
Рассматриваются различные процедуры перечисления всех исходов схемы перестановок, устанавливается взаимно однозначное соответствие между ними и их номерами в каждой процедуре перечисления, приводятся способы моделирования исходов схемы.
Ключевые слова: перечислительные задачи комбинаторного анализа, схема размещения, перестановка.
А. V. Kolchin, N. Yu. Enatskaya. COMBINATORIAL ANALYSIS OF A PERMUTATION SCHEME
We consider several procedures to number all outcomes of a permutation scheme, establish a one-to-one correspondence between the outcome and its number generated in the numbering procedure, and give some methods to simulate the outcomes.
Key words: enumerative combinatorics, allocation scheme, permutation.
1. Процедуры перечисления
ИСХОДОВ СХЕМЫ ПЕРЕСТАНОВОК
Схема перестановок длины г возникает при взаимном упорядочивании г различимых элементов между собой или при размещении г различимых частиц по г различимым ячейкам, вмещающим по одной частице. Общее число исходов схемы равно г\.
Рассмотрим несколько способов перечисления исходов схемы.
1.1. Метод графов перечисления исходов схемы перестановок
Построим случайный процесс поединично-го добавления в перестановку элементов с растущими от 1 до г номерами, размещая каждый из них последовательно и случайно относительно каждой перестановки на одно из мест: левее левого элемента, между всеми элементами и правее правого, и нумеруя слева напра-
во получающиеся на данном шаге процесса перестановки в порядке попадания добавленного элемента. Изобразим описанную процедуру получения всех возможных перестановок фиксированного размера в виде графа переходов из состояния в состояние заданного случайного процесса от шага к шагу, то есть при росте перестановок на один элемент. Будем обозначать через = (а\,..., а^) г-е состояние процесса (то есть г-ю перестановку <ц,..., а^) на ,7-м шаге. Тогда граф переходов будет иметь вид, показанный на рисунке.
1.2. Монотонное перечисление исходов схемы перестановок
Будем сопоставлять каждой г-й из г! перестановок длины г число Лг, составленное из номеров ее элементов, г = 1,...,Н, и будем перечислять все исходы схемы, например, в порядке роста чисел Щ. Тогда среди г! чи-
сел образуется г\/г = (г — 1)! групп соответствующих перестановок длины г с фиксированными первыми элементами в порядке их роста от 1 до г, и в каждой из них имеется (г — 1 )!/(г — 1) = (г — 2)! групп перестановок с фиксированными первыми двумя элементами в порядке роста номеров второго элемента, исключая номер первого фиксированного элемента, и так далее. Перечисляя таким образом перестановки элементов до последней с фиксированными остальными г — 1 элементами, получаем все перестановки в порядке роста чисел Щ.
Продемонстрируем эту процедуру монотонного перебора перестановок на примере.
Е[2) = (2,1)
(з) _
(3,2,1)
(з) _
= (2,3,1)
(з) _
(2,1,3)
г(з) _
(3,1,2)
Е™=( 1,2)
(з) _
(1,2,3)
Граф переходов
Пример 1. 1. Пусть г = 3, г! = 3! = 6,
(г — 1)! = 2, (г — 2)! = 1. Получаем очевидную последовательность перестановок в порядке роста чисел Я(123), (132), (213), (231), (312), (321).
2. Пусть г = 4, г! = 4! = 24, (г —1)! = 3! = 6, (г — 2)! = 2, (г — 3)! = 1. Получаем следующую последовательность перестановок в порядке роста чисел Я^, причем среди г = 4 групп по (г — 1)! = 6 элементов с фиксированным первым элементом в порядке его роста, среди каждой из которых по (г — 2)! = 2 элемента с фиксированным вторым элементом, а третий и четвертый элементы перечисляются в
2! = 2 порядках по мере роста чисел Лг-. (1234), (1243), (1324), (1342), (1423), (1432), (2134), (2143), (2314), (2341), (2413), (2431), (3124), (3142), (3214), (3241), (3412), (3421), (4123), (4132), (4213), (4231), (4312), (4321).
1.3. Метод отбраковки монотонного перечисления исходов схемы перестановок
Из предыдущего параграфа следует, что все исходы схемы перестановок находятся для описанных там же чисел Я^ в диапазоне от числа (1 2... г) до числа (г (г — 1)... 1) в порядке их роста. Если считать составляющие их цифры номерами элементов и провести в каждом из них сначала отбраковку чисел с цифрами больше г и затем маркировку цифр по частотам их присутствия в числе, то для получения всех требуемых перестановок в порядке роста чисел Иг нужно оставить в исходной последовательности только числа с единичными маркировками. В результате получаем перечисление перестановок в том же порядке, что и в предыдущем параграфе. Покажем это на примере.
.Пример 2. Пусть г = 3. Тогда числа Щ лежат в диапазоне от 123 до 321. Выкинем из них числа, состоящие из цифр, отличных от данных: 1, 2, 3. Получим растущие числа 123, 131, 132, 133, 211, 212, 213, 221, 222, 223, 231, 232, 233, 311, 312, 313, 321. Из них с единичными маркировками останутся числа 123, 132, 213, 231, 312, 321, которые и являются всеми перечисленными в монотонно возрастающем порядке (в смысле Я4) исходами схемы перестановок длины 3.
2. Нумерация исходов схемы
ПЕРЕСТАНОВОК
Установление полноты перебора всех исходов схемы перестановок и удобство дальнейшего ее использования требует для каждой из предложенных процедур решения обратной и прямой задач нахождения соответствия чисел Я4 и их номеров, то есть, соответственно, нахождения номера N по заданному числу Я и нахождение числа Я для данного номера N, где, как и раньше, число Я представляет данную перестановку.
2.1. Нумерация исходов схемы перестановок, перечисленных методом графов
Обратная задача. Пусть задана перестановка размера г или число Я, ей соответствующее. Требуется найти его номер N, который
в силу процедуры формирования перестановок (см. п.1, рис.) определяется числами М г = 1,..., г, где Мг — номер места элемента г среди элементов перестановки от 1 до i, считая слева направо. Тогда для номера N получаем формулу
Г—1
N = J2(Mi-l)-+Mr,
i=2
(1)
или, так как Mi = 1 и r\/i\ = 1 при і = г, формулу (1) можно представить в виде
перестановки от 1 до г, считая слева направо. Обозначим через Nk номер перестановки длины к в данной процедуре, порождающей искомую перестановку длины г с данным номером N = Nr. Тогда, так как Мг = г, если N делится на г, и Mr = N (mod г) в противном случае, что может быть записано в виде формулы
Mr = (Nr — 1) mod г + 1,
лг = £(М< -1)^ + 1.
і=2
Покажем, как работает формула (1) при нахождении номера N по данному числу Я на примерах.
Пример 3. Пусть г = 4.
Я = 2431. По рис., N = N4 = 6. Вычислим N по (1):
Мі = 1, М2 = 1, М3 = 2, М4 = 2, откуда следует, что
N = N± = {1- 1) (4!)/(2!) +
+ (2 — 1) (4!)/(3!) + 2 = 6.
Я = 1423. По рис., N = N4 = 22. Вычислим N по (1):
Мі = 1, М2 = 2, М3 = 3, М4 = 2, откуда следует, что
И = N4 = (2 — 1) (4!) / (2!) +
+ (3 — 1) (4!)/(3!) + 2 = 22.
Я = 1234. По рис., N = N4 = 24. Вычислим N по (1):
Мі = 1, М2 = 2, М3 = 3, М4 = 4, откуда следует, что
И = N4 = (2 — 1) (4!) / (2!) +
+ (3 — 1) (4!)/(3!) + 4 = 24.
Прямая задача. Пусть задан номер N = і\Гг перестановки Я размера г или числа Я. Требуется найти число Я. В силу процедуры формирования перестановок (см. п.1, рис.) число Я определяется числами Мі, г = 1,г, где Мі — номер позиции элемента і среди чисел
или, в общем случае, при к = 1,..., г,
Мк = (Nk — 1) mod к + 1,
так как
(2)
Nr-1 = I
[.Nr/r\, если Nr делится на г,
[Nr/r\ + 1 в противном случае,
что может быть записано в виде формулы
Nr-1 =
Nr + r-1
где [2\ — целая часть числа Z, или, в общем случае, при к = 1,..., г,
Nk-1 =
Nk + г — к г — к + 1
(3)
Покажем, как использовать формулы (2) и (3) для нахождения числа Я по данному номеру N — і\Гг на примерах.
Пример 4. Пусть г = 4.
N = N4 = 22. По рис., R = 1423. Вычислим число R по формулам (2) и (3):
М4 = (N4 - 1) mod 4 + 1 =
= (22 - 1) mod 4 + 1 = 2;
N3 = [(N4 + 3)/4] = [(22 + 3)/4] = 6; М3 = (N3 - 1) mod 3 + 1 =
= (6 — 1) mod 3 + 1 = 3;
N2 = [(iV3 + 2)/3] = [(6 + 2)/3] = 2;
M2 = (N2 - 1) mod 2 + 1 =
= (2 - 1) mod 2 + 1 = 2; iVi = [(iV2 + l)/2] = [(2 + l)/2] = l;
отсюда и из определения чисел Мі получаем R = 1423, что совпадает с результатом по рисунку.
N = N4 = 24. По рис., R = 1234. Вычислим число R по формулам (2) и (3):
М4 = (N4 - 1) mod 4 + 1 =
= (24 - 1) mod 4 + 1 = 4;
N3 = [(N4 + 3)/4] = [(24 + 3)/4] = 6; M3 = (N3- 1) mod 3 + 1 =
= (6 — 1) mod 3 + 1 = 3;
N2 = [(iV3 + 2)/3] = [(6 + 2)/3] = 2;
M2 = (N2 - 1) mod 2 + 1 =
= (2 - 1) mod 2 + 1 = 2; iVi = [(iV2 + l)/2] = [(2 + l)/2] = l;
отсюда и из определения чисел Мі получаем R = 1234, что совпадает с результатом по рисунку.
2.2. Нумерация исходов схемы перестановок при их монотонном перечислении
Под монотонным перечислением подразумеваем перебор исходов схемы перестановок в порядке роста чисел Ri, представляющих перестановки.
Заметим, что при двух представленных в п.1 способах перечисления исходов схемы перестановок в итоге получаем их в монотонно возрастающем порядке в смысле чисел Ri, поэтому соответствие этих чисел и их номеров одинаково для обеих процедур перечисления исходов схемы.
Обратная задача. Пусть задана перестановка R размера г. Требуется найти ее номер N = при монотонно возрастающем перечислении всех исходов схемы перестановок. Искомый номер N определяется числами Mi, г = 1,..., г — 1, где есть порядковый номер по возрастанию для элемента на г-м месте среди элементов правее г-го места от 1 до г. Тогда из процедуры перечисления перестановок в п.1 следует, что искомый номер N = определяется по формуле
г-2
Л'г = ^(М*-1)(г-1)! + Мг_1. (4)
г=1
Покажем на примерах решение обратной задачи по формуле (4).
Пример 5. Пусть г = 4. Для всех R при их перечислении как в п.1.2 в количестве г! = 4! = 24 найдем их номера по (4) при заранее известных номерах для проверки и представим результаты решения в таблице.
N = N4 = 13. По рис., R = 4312. Вычислим число R по формулам (2) и (3):
М4 = (N4 - 1) mod 4 + 1 =
= (13-1) mod 4 +1 = 1;
N3 = [(N4 + 3)/4] = [(13 + 3)/4] = 4; M3 = (N3- 1) mod 3 + 1 =
= (4 — 1) mod 3 + 1 = 1;
N2 = [(N3 + 2)/3] = [(4 + 2)/3] = 2;
M2 = {N2 - 1) mod 2 + 1 =
= (2 - 1) mod 2 + 1 = 2; iVi = [(iV2 + l)/2] = [(2 + l)/2] = l;
отсюда и из определения чисел Мі получаем і? = 4312, что совпадает с результатом по рисунку.
Прямая задача. Пусть задан номер N = перестановки длины г или числа R при монотонно возрастающем порядке перечисления чисел R, описанном в п. 1.2. Требуется найти это число R, которое, как следует из процедуры перечисления перестановок, определяется численностями групп исходов с совпадающими первыми, первыми двумя, тремя и так далее элементами, которые соответственно равны г\/г = (г — 1)!, (г — 1 )!/(г — 1) = (г — 2)!, и так далее. Поэтому, если искомое число R = /1/2 ... 1Г, где 1\, /2,..., 1Г — номера элементов перестановки, составляющих число R, то задача сводится к нахождению этих номеров. Пусть 11,12, ■■■ ,гг — соответствующие числам 11,12,... ,1г их относительные порядковые номера по возрастанию: ъ\ — порядковый номер числа 1\ среди чисел 1\, /2,..., 1Г,
— порядковый номер числа 12 среди чисел /2, /3,..., 1Г, и так далее. Тогда определение числа Я = /1/2... /г сводится к нахождению значений 12, ■ ■ ■, %г и производится путем следующих последовательных вычислений:
' [ЛГг/(г — 1)!] + 1, если число Мг не %\ = делится на (г — 1)!,
„ [Иг/{г — 1!)] = г\ в противном случае,
что можно записать в виде единой формулы
Ч = [(ЛГГ + (г - 1)! - 1 )/(г - 1)!];
Л'г_1 = Лг-»;(г- 1)!;
аналогично
г2 = [(^г_1 + (г-2)!-1)/(г-2)!]; Мг-2 = - г2(г - 2)!;
а в общем случае вычисления проводятся по формулам
г*к = [Мг-к+1/(г-т,
гк = [(-ЛГг_*,+1 + (г - /с)! - 1)/(г - к)\], (5) Nг—к = ^г—к+1 /с)!,
где к = 1,
,г — 1.
Замечание 1. Если в процессе вычисления окажется, что ik = 0, то это, в силу выбранной процедуры нумерации перестановок в п.1.2, означает, что в перестановке с (к — 1) первыми фиксированными номерами элементов 1\,... ,1к-1 все остальные не найденные еще номера элементов перечисляются в порядке их убывания, так как это соответствует последней перестановке из ненайденных номеров в группе, то есть максимальному числу из не использованных еще номеров после к — 1 первых фиксированных.
Покажем порядок вычислений для определения числа Я по данному N = на примерах.
Решение обратной задачи по формуле
N Я М1 м2 М3 расчет N = К4 по (4)
1 1234 1 1 1 N ={ 1- )з + 1 - )2 + 1 = 1
2 1243 1 1 2 ЛГ= (1- )з + 1 - )2 + 2 = 2
3 1324 1 2 1 ЛГ= (1- 3 + 2- )2 + 1=3
4 1342 1 2 2 ЛГ= (1- 3 + 2- )2 + 2 = 4
5 1423 1 3 1 ЛГ= (1- 3 + 3- )2 + 1 = 5
6 1432 1 3 2 N = (1- 3 + 3- )2 + 2 = 6
7 2134 2 1 1 N=(2- 3 + 1 - )2 + 1 = 7
8 2143 2 1 2 N=(2- 3 + 1 - )2 + 2 = 8
9 2314 2 2 1 N=(2- 3 + 2- )2 + 1=9
10 2341 2 2 2 N=(2- 3 + 2- )2 + 2 = 10
11 2413 2 3 1 N=(2- 3 + 3- )2 + 1 = 11
12 2431 2 3 2 N=(2- 3 + 3- )2 + 2 = 12
13 3124 3 1 1 N=(3- 3 + 1 - )2 + 1 = 13
14 3142 3 1 2 N=(3- 3 + 1 - )2 + 2 = 14
15 3214 3 2 1 N=(3- 3 + 2- )2 + 1 = 15
16 3241 3 2 2 N=(3- 3 + 2- )2 + 2 = 16
17 3412 3 3 1 N=(3- 3 + 3- )2 + 1 = 17
18 3421 3 3 2 N=(3- 3 + 3- )2 + 2 = 18
19 4123 1 1 1 N=(4- 3 + 1 - )2 + 1 = 19
20 4132 4 1 2 N=(4- 3 + 1 - )2 + 2 = 20
21 4213 4 2 1 N= (4- 3 + 2- )2 + 1 = 21
22 4231 4 2 2 N=(4- 3 + 2- )2 + 2 = 22
23 4312 4 3 1 N=(4- 3 + 3- )2 + 1 = 23
24 4321 4 3 2 N=(4- )3 + 3- )2 + 2 = 24
Пример 6. Пусть г = 4. Тогда все перестановки г! = 4! = 24 перечислены со своими номерами в примере 5. Будем вычислять числа Я по данным N по формулам (5) с проверкой по примеру 5.
N = N4 = 22. По примеру 5, Я = 4231. Вычислим Я по (5):
*; = [22/6] =3; *1 = [(22 + 6 - 1)/6] = 4;
N4 = 22 — 3(4 — 1)! = 4;
1\ есть 21-й, то есть четвертый по величине элемент из элементов 1, 2, 3, 4, отсюда получаем, что 1\ = 4;
^2 = [4/2] = 2; *2 = [(4 + 2 - 1)/2] = 2;
= 4 - 2(3 - 1)! = 0;
12 есть 22-й, то есть второй по величине элемент из элементов 1, 2, 3, отсюда получаем, что /2 = 2;
*5 = [0/1] = 0; г3 = [(0 + 1 —1)/1] = 0,
следовательно, остальные номера (неиспользованные) 1 и 3 в числе Я (по замечанию 1) располагаем в порядке убывания, то есть /3 = 3, /4 = 1, тогда получаем Я = 4231, что совпадает с 22-й перестановкой из примера 5.
N = N4 = 13. По примеру 5, Я = 3124. Вычислим Я по (5):
*1 = [13/6] = 2; *1 = [(13 + 6-1)/6]=3; Щ = 13-2(4-1)! = 1;
1\ есть 21-й, то есть третий по величине элемент из элементов 1, 2, 3, 4, отсюда получаем, что 1\ = 3;
= [1/2] =0; *2 = [(1 + 2 - 1)/2] = 1; ЛГ2 = 1 - 0(3 - 1)! = 1;
/2 есть г2-Й, то есть первый по величине элемент из элементов 1, 2, 4, отсюда получаем, что /2 = 1;
*5 = [1/1] = 1; г3 = [(1 + 1-1)/1] = 1,
/3 есть гз-й, то есть первый по величине элемент из элементов 2, 4, отсюда получаем, что /3 = 2, значит, /4 = 4. Тогда получаем, что Я = 3124, что совпадает с 13-й перестановкой из примера 5.
N = N4 = 24. По примеру 5, Я = 4321. Вычислим Я по (5):
*; = [24/6] =4; *1 = [(24 + 6 - 1)/6] = 4;
Щ = 24-4(4-1)! = 0;
1\ есть г 1-й, то есть четвертый по величине элемент из элементов 1, 2, 3, 4, отсюда получаем, что 1\ = 4;
е2 = [0/2] = 0; г2 = [(0 + 2 - 1)/2] = 0,
следовательно, остальные номера (неиспользованные) 1, 2 и 3 в числе Я (по замечанию 1) располагаем в порядке убывания, то есть /2 = 3, /3 = 2, /4 = 1, тогда получаем, что Я = 4321, что совпадает с 24-й перестановкой из примера 5.
N = N4 = 14. По примеру 5, Я = 3142. Вычислим Я по (5):
*1 = [14/6] = 2; *1 = [(14 + 6 - 1)/6] = 3;
N3 = 14 — 2(4 - 1)! = 2;
1\ есть й-Й, то есть третий по величине элемент из элементов 1, 2, 3, 4, отсюда получаем, что 1\ = 3;
е2 = [2/2] = 1; г2 = [(2 + 2 - 1)/2] = 1; ЛГ2 = 2 - 1(3 - 1)! = 0;
12 есть г2-Й, то есть первый по величине элемент из элементов 1, 2, 4, отсюда получаем, что /2 = 1;
ез = [0/1] = 0; *3 = [(0 + 1 - 1)/1] = 0,
следовательно, остальные номера (неиспользованные) 2 и 4 в числе Я (по замечанию 1) располагаем в порядке убывания, то есть /3 = 4, /4 = 2, тогда получаем, что Я = 3142, что совпадает с 14-й перестановкой из примера 5.
3. Способы моделирования
ПЕРЕСТАНОВОК
1. Если установлено взаимно однозначное соответствие между всеми перестановками Я и их номерами IV, что было сделано в п.2, то моделирование перестановок производим методом маркировки (см. [1]), при котором отрезок [0,1] делим на г! равных частей. Генерируем случайное число х и считаем смоделированной перестановку с номером части отрезка [0,1], на которую попадает число х.
Замечание 2. Если г! так велико, что 1/г! меньше точности генерируемого случайного числа, то оно будет соответствовать нескольким номерам частей отрезка [0,1]. Тогда среди них равновероятно методом маркировки выбираем одну конкретную перестановку.
■©
2. Можно моделировать перестановки без их предварительной нумерации путем выполнения следующих шагов при их размере г:
1. генерируем г случайных чисел х = (®1 ) • • • ) ®г)!
2. строим для последовательности х вариационный ряд Хф = (х^, • • •, £(г));
3. выписываем номера элементов х в порядке просмотра вектора £(•), тем самым получаем перестановку Я.
Замечание 3. В шаге 3 можно поменять местами ВеКТОрЫ X И Х(,у
О МЕТОДЕ МАРКИРОВКИ
Для полноты изложения приведем кратко основные сведения о методе маркировки (см. [1]).
Метод маркировки является одним из методов генерирования («разыгрывания») дискретной случайной величины с заданным законом распределения
Р(Х = хк) = рк.
На отрезке [0,1] изобразим точки вида
Х^=1> з = 1,2,...
Пусть г — возможное значение случайной величины Я, равномерно распределенной на отрезке [0,1], тогда
Р(0 < г <р\) =Р1,
Р(Р1 < г < Р! + Р2) = Р2, ■ ■ ■ ,
(к-1 к \
< г < ) =Рк, • • •
i= 1 i=1 /
Отсюда следует, что попадание случайного числа Я на к-й отрезок моделирует полученное значение случайной величины X = хк.
Замечание. Для многих основных распределений так называемый коэффициент воспроизводимости = рк+\/рк имеет для всех к удобное общее выражение как функции от к. Поэтому в данном случае при использовании метода маркировки нет необходимости загрузки в память всего ряда распределения, вместо этого {рк} вычисляется по мере необходимости по формуле
Рк+1 = 1кРк-
Литература
1. Энатская Н. Ю., Хакимуллин Е. Р. Стохаг стическое моделирование. М.: МИЭМ, 2012.
СВЕДЕНИЯ ОБ АВТОРАХ:
Колчин Андрей Валентинович Kolchin, Andrey
к. ф.-м. н. e-mail: [email protected]
эл. почта: [email protected]
Энатская Наталия Юрьевна
доцент, к. ф.-м. н.
Московский институт электроники и математики Национального исследовательского университета «Высшая школа экономики» ул. М. Пионерская, 12, Москва,
Россия, 113054
эл. почта: [email protected]
Enatskaya, Natalia
Moscow Institute of Electronics and Mathematics, Higher School of Economics 12 M. Pionerskaya St.
113054 Moscow, Russia e-mail: [email protected]