2014
НАУЧНЫЙ ВЕСТНИК МГТУ ГА
№ 210
УДК 510.5
АЛГОРИТМ ПОСТРОЕНИЯ ТАБЛИЦЫ ПЕРЕСТАНОВОК МЕТОДОМ ПОСЛЕДОВАТЕЛЬНЫХ ПРИРАЩЕНИЙ
Е.П. ПЕГОВА
Статья представлена доктором физико-математических наук, профессором Козловым А.И.
Предлагается алгоритм построения таблицы перестановок без повторений из N элементов в виде числового ряда, складывающегося из прибавления к предыдущему члену некоторого числа, вычисляемого по определенному правилу.
Ключевые слова: перестановки, алгоритм.
Введение
Перестановкой порядка N называется расположение N различных объектов в ряд в некотором порядке. Например, для трех объектов а, b и с существует шесть перестановок: abc, acb, bac, Ьса, cab, cba. Д ля множества из N элементов можно построить N! различных перестановок.
Необходимость построения таблицы перестановок возникает при решении задач, требующих перебора: задачи составления расписаний; задачи нахождения оптимального маршрута (задача коммивояжера); решение логических задач; решение ряда задач оптимизации; задачи шифрования.
Для составления таблицы перестановок из n элементов есть много алгоритмов (первым, вероятно, был Пандит Нарайана, Индия, XIV в.): построение перестановки по таблице инверсий [1] методом лесенки с беспорядками [3], алгоритм Дейкстры - алгоритм на графах, который находит кратчайшее расстояние от одной из вершин графа до всех остальных [4], методы Кнута [2].
Эти методы основаны на манипуляции с цифрами как с символами, входящими в определенное множество, и не представляют таблицу перестановок как упорядоченный ряд чисел.
От приведенных выше способов предлагаемый ниже метод отличается тем, что последовательность таблицы перестановок представляется как возрастающий ряд чисел, имеющий вполне конкретную закономерность вычисления.
Постановка задачи
Представить таблицу перестановок из n элементов как ряд чисел, упорядоченных по возрастанию, каждый элемент которого вычисляется из предыдущего путем прибавления к нему некоторого приращения, вычисляемого по определенному алгоритму.
Составим таблицу перестановок из трех элементов, выстроим их в порядке возрастания и подсчитаем разности между соседними числами соответствующих уровней. Нетрудно заметить, что все четные члены ряда перестановок вычисляются из предыдущего члена прибавлением числа 9, умноженного на некоторый множитель. Будем считать, что все четные члены относятся к первому уровню. Множитель для чисел первого уровня вычисляется из предыдущего члена как разность между крайней правой и второй справа цифрой.
Ко второму уровню отнесем все нечетные члены ряда, находящиеся внутри третьего уровня. Приращения каждого последующего члена во втором уровне равно числам 90 и 99, умноженным на некоторый множитель.
Таблица 1
Структура построения перестановок из трех элементов
№ пп Перестановки Разности Множитель
1 ур. 2 ур.
1 123
2 132 132-123=9 1 (3-2=1)
3 213 213-123=90 1 (2-1=1)
4 231 231-21[3=9*2 2 (3-1=2)
5 312 312-203=99 1 (1-2<0 и 0-2<0, след.1 )
6 321 321-312=9 1 (2-1=1)
158
Е.П. Пегова
Множитель для всех уровней вычисляется из предыдущего числа уровня следующим образом: в предыдущем числе уровня вычисляется разность между цифрой, стоящей в позиции уровня и расположенной слева от нее. В случае если разность отрицательная, то считается количество цифр слева, последовательно больших цифры, расположенной слева от позиции уровня, и к этому числу прибавляется единица. В приведенном ниже листинге множитель подсчитывается одинаково для всех значений, как количество последовательно больших цифр плюс единица.
Соответственно числа третьего уровня имеют приращения 900, 990 и 999, помноженные на число множителя. В следующих таблицах приведены схемы расчета перестановок для п=3 (табл. 1) и п=4 (табл. 2).
Количество уровней в таблице равно (п-1). Следовательно, в табл. 1 количество уровней 2, а в табл. 2 количество уровней 3. Минимальное, первое число относится к высшему уровню.
Таблица 2
Структура построения перестановок из четырех элементов
Перестановки Разности Множитель Перестановки Разности Множитель
1 ур. 2 ур. 3 ур. 1 ур. 2 ур. 3 ур.
1 1234 13 3124 3124-2134=990 1 (1-2<0 и 0-2<0, след. =1)
2 1243 1243-1234 =9 1 (4-3=1) 14 3142 3142-3124=9*2 2 (4-2=2)
3 1324 1324-12 3(4=90 1 (3-2=1) 15 3214 3214-3124=90 1 (2-1=1)
4 1342 1342-1324=9*2 2 (4-2=2) 16 3241 3241-3214=9*3 3 (4-1=3)
5 1423 1423-13^)4=99 1 (2-3<0, 1-3<0, след.=1) 17 3412 3412- 32Ц4=99*2 2 (1-2<0, но 3-2=1, след. =2)
6 1432 1432-1423=9 1 (3-2=1) 18 3421 3421-3412 =9 1 (2-1=1)
7 2134 2134-12 34=900 1 (2-1=1) 19 4123 4123-31 24=999 1 (1-3<0 и 0-3<0, след. =1)
8 2143 2143-2134 =9 1 (4-3=1) 20 4132 4132-4123 =9 1 (3-2=1)
9 2314 2314-21 34=90*2 2 (3-1=2) 21 4213 4213-41 23=90 1 (2-1=1)
10 2341 2341-231(4=9*3 3 (4-1=3) 22 4231 4231-421|3=9*2 2 (3-1=2)
11 2413 2413-2304=99 1 (1-3<0 и 2-3<0, след. =1) 23 4312 4312-42Ц3=99 1 (1-2<0, =1) и 4-2>1, след. =1
12 2431 2431-2413=9*2 2 (3-1=2) 24 4321 4321-4312=9 1 (2-1=1)
В строке 17 табл. 2 множитель равен 2, потому что число 3214 находится на втором уровне, разность 1-2 отрицательная, и слева от единицы расположены две цифры, последовательно большие, чем 1.
Задача усложняется, если количество перебираемых чисел n больше 9. В этом случае вычисления нужно выполнять в системе счисления, большей, чем n.
Нетрудно заметить, что ряд множителей один и тот же для всех перестановок:
1, 1, 2, 1, 1, 1, 1, 2, 3, 1, 2, 1 , 2, 1, 3 , 2, 1, 1, 1, 1, 2, 1, 1...
Максимальный множитель таблицы перестановок из n равен n-1.
Выводы
Предложенный алгоритм построения таблицы перестановок имеет по сравнению с существующими следующие преимущества: 1) представляет таблицу как возрастающий ряд чисел, в котором каждый последующий член вычисляется из предыдущего (в своем уровне) путем прибавления некоторого значения, вычисляемого по определенным правилам; 2) позволяет составлять перестановки из количества элементов, большего 10; 3) достаточно прост с точки зрения написания компьютерной программы.
ЛИТЕРАТУРА
1. Стенли Р. Перечислительная комбинаторика. - М.: Мир, 1990.
2. Дональд Э. Кнут. Искусство программирования. Т. 1. Основные алгоритмы. - М.: Вильямс, 2010.
3. Мельников C. Delphi и Turbo Pascal на занимательных примерах. - СПб.: БХВ-Петербург, 2006.
4. Дейкстра Э. Дисциплина программирования. - М.: Мир, 1978.
Алгоритм построения таблицы перестановок методом последовательных приращений
159
THE BUILDING ALGORITHM OF THE TABLE OF THE TRANSPOSITIONS BY THE CONSEQUENT INCREMENTATIONS METHOD
Pegova E.P.
Algorithm of the building of the table of the transpositions is offered without repetitions from N element in the manner of numeric row.
Keywords: transpositions, algorithm.
Сведения об авторе
Пегова Елена Петровна, окончила МАИ (1979), старший преподаватель, заведующая лабораторией компьютерной графики МГТУ ГА, автор 2 научных работ, область научных интересов -программирование, компьютерное моделирование, инженерная графика.