Коточигов Александр Михайлович
УДК 21.7.12
АЛГОРИТМ НУМЕРАЦИИ ЭЛЕМЕНТОВ ВЫБОРКИ
Аннотация
Заметка содержит описание алгоритма, нумерации элементов выборки т элементов из п. Благодаря использованию биномиальных разложений натуральных чисел, алгоритм становится универсальным и удобным для приложений.
Ключевые слова: выборка т элементов из п, биномиальные коэффициенты, биномиальное разложение.
Музыкант: « Вам понравился камерный концерт?»
Математик: «Тривиальный случай, «к»равно трем.»
ВВЕДЕНИЕ
Цель заметки - описать алгоритм, позволяющий упорядочить (занумеровать) элементы множества, представляющего собой выборку из n элементов по т. Интерес к этой задаче возник при попытке анализировать структуру многогранника, являющегося выпуклой оболочкой заданного множества точек.
Поясним задачу и рассмотрим вначале случай, когда размерность равна трем. Алгоритм описания граней прост. Надо перебрать все наборы из трех точек, образующих плоскость, и выбрать те плоскости, у которых все заданные точки лежат в одном полупространстве. Следующий этап - описание ребер многогранника - более сложен. Фиксируем одну вершину. Далее будем перебирать все остальные вершины и выяснять, лежит ли средняя точка отрезка, соединяющего вершины, внутри многоугольника. Здесь проблем с упорядочением выборки еще не возникает. Они появляются с повышением размерности. Предположим, вам надо по поверхности многогранника провести гусеницу из точки А в точку В. Размерность многогранника 20, размерность гусеницы 10. Части поверхности, имеющие размерность меньше 10, гусеница может только пересекать. Как проложить оптимальный
© Коточигов А.М., 2012
и, главное, безопасный путь? Задача может иметь и более серьезную интерпретацию. Допустим, вы должны контролировать некий процесс (перевести его из состояния А в состояние В), зависящий от 20 параметров. Контроль заключается в том, что значения параметров должны постоянно «находиться» на поверхности заданного многогранника. Условия контроля таковы, что в любой момент десять параметров должны оставаться «свободными», то есть найдется такое 10-мерное пространство, что при небольших движениях в нем точка не уходит с поверхности многогранника.
Для описания т-мерных элементов границы многогранника надо фиксировать вершину и перебирать все наборы из т вершин, не содержащие фиксированной вершины. Работа с такими объектами значительно упростится, если будет предъявлен достаточно простой алгоритм, нумерующий элементы выборки (изоморфизм множества элементов выборки и подмножества натуральных чисел {1, 2, ..., Ы}). Без такой нумерации вы не сможете, например, составить матрицу инцидентности, то есть таблицу, указывающую, какие вершины принадлежат заданному т-мерному элементу границы и какие т-мерные элементы границы содержат заданную вершину.
Конкретизируем нашу задачу. Допустим, имеется п элементов, из которых выбира-
ется т. Множество выборок можно представить в следующем виде Д = {¿>15 82,..., 8п}, где 8] = 0 или 1, 51 + к + 8п = т. Алгоритм нумерации таких объектов будет построен в два этапа. Сначала будет описано биноминальное разложение натуральных чисел, с которыш естественно связаны наборы нулей и единиц несколько иной природы, чем Д. На втором этапе будет описан изоморфизм этих множеств нулей и единиц, который позволит занумеровать элементы множества Д.
БИНОМИНАЛЬНОЕ РАЗЛОЖЕНИЕ НАТУРАЛЬНЫХ ЧИСЕЛ
Напомним базовое для всех последующих конструкций определение числа сочетаний из п элементов по т, то есть количества способов выбрать т различных элементов из п имеющихся, причем порядок следования элементов в выборке безразличен. Для этого числа имеется стандартное обозначение и формула вычисления
п!
Ст = -
т!( п - т)!'
Здесь т = 0, 1, ..., п, при этом возникает стандартное обозначение 0! = 1, позволяющее единообразно описывать все возможн-вые ситуации. Эти числа появляются во многих математических моделях, но самая известная среди них - формула бинома Ньютона. Поэтому их назышают еще биномиальными коэффициентами. Здесь будет приведен алгоритм разложения натурального числа в сумму биномиальных коэффициентов.
До того как выписать формулу разложения, приведем некоторые наводящие соображения. Начнем с известного, легко проверяемого тождества
Сп = Сп-1 + Сп-1 .
Последовательно применяя тождество к последнему слагаемому, легко получить:
Сп = Сп-1 + Сп-2 + Сп-3 + к + Сп-т + 1,
(С1 1 = С1 + С0 = С1 +1).
^ п-т+1 п-т п-т п-т '
Это и есть разложение, которое мы будем называть биноминальным для числа
к=Ст.
Оказышается, эта формула допускает значительное обобщение.
Предложение 1
Для любого натурального числа к е (1, Ст ] существует единственный набор натуральных чисел
п{, 1 < 1 < ] < т, п > п1 > п2 > к > п]>т- ] таких, что
к = Ст + Ст-1 + ... + Ст-]+1 +1.
п п2 п]
Эта формула известна. Например, ее можно найти в книге [1: с. 22], где она приводится в качестве задачи. Здесь приведено подробное доказательство, по существу, алгоритм разложения, поскольку дальнейшие конструкции опираются на этот алгоритм.
Техническую основу доказательства составляют два совершенно очевидных утверждения.
Предложение 2
Полуоткрытые интервалы (С^, С^], р = т,..., п -1 образуют дизъюнктное покрытие интервала (1,С^ ].
Для доказательства достаточно убедить-
Ст т
< Ср+1, что верно, так как р +1
т Ср+1
Ст р +1 - т
> 1.
Пример.
п = 7, т = 4, С74=35,
р = т, С44=1, р = т +1, С54=5, р = т + 2,С64=15, р = т + 3,С74 = 35
(1,35] = (1,5] и (5,15] и(15,35]. Следствие 1
Если число К е (1, См ], то существует число N е [М, N -1], такое что
К е (С£, СМ+1] .
Предложение 3
Если число К е (СМ, СМ+1 ], то число К - СМ1е [1, СМ-1]. 1 1
Это утверждение является простым следствие упомянутого выше тождества
СМ _ СМ СМ -1 СМ ^ КГ <£ СМ
= + CN1 , CN1 < К <
л ^ ТУ' Г^М ^ Г^М г^М г^М -1 1 < К - CN, < СМ+1 - СN = CN, .
Коточигов А. М.
Оно очень важно, так как оно поддерживает самоподобие системы, в терминах которой происходит разложение.
Чтобы обосновать формулу предложения 1, опишем алгоритм разложения.
Предположим, что К е (1, См ].
Шаг 1
Числу К соответствует единственное число Ы1, такое что К е (См, См+1] (следствие 1).
Шаг 2
Получаем число К1 = К - См е [1, СМ-1 ] (предложение 3).
Шаг 3
Если К1 = 1, то разложение закончено
К = С^+1.
Если К1 > 1, то возвращаемся к шагу 1 , полагая К = К1,N = Ых, М = М -1.
Алгоритм сводит доказательство предложения 1 к анализу его действия на число к е (1,С™]. После применения к числу к шага 1 получится число п1 такое, что
ке (С™,С:Л п > „ > т -1.
Шаг 2 дает число к1, такое, что
к=С,т+кх, 1 < кх < Ст-1.
Шаг 3 остановит алгоритм, если к1 = 1 (разложение завершено) или перейдет к шагу 1 и вычислит число п2, такое что
к е (Ст-1, О п > п > п >т-2.
После второго применения шага 2 получится число к2, такое что
к = С + С„- + к2, 1< к2 < С^-2.
Продолжая процесс, на г-м проходе цикла получим числа кг и пг:
к-1 е (Ст-+1,СТ+Г1], п > п > К > пг >т-г
к=С^+к+ст-+1+кг, 1 < кг < С:г-г.
Если кг = 1, то разложение окончено.
Остается проверить, что разложение не может продолжаться более т шагов.
Допустим, алгоритм отработал т - 1 раз, тогда
к = Ст + Ст-1 + ... + С2 + к .,
П П2 Пт _1 т-1'
1 < к , < С1 .
т-1 „т .
Если и на этот раз кт -1 > 1 (процесс разложения не завершился), то далее надо применять шаг 1 и искать число пт, такое что
кт-1 е ^„^ С1т +1] .
Остается заметить, что СЯ = Я и, следовательно, полагая пт = кт-1 -1, получим
к , е (С1 , С' +1] = (к , -1, к ,].
т-1 ^ пт' пт +Ы ^ т-1 ' т-1 -1
В итоге
к = Ст + Ст-1 + ... + С2 + С1 +1,
п п2 „т-1 пт '
то есть разложение завершено. Формула полностью доказана.
Доказанная формула позволяет взаимно однозначно сопоставить каждому числу к е (1, Ст ] некоторый набор из 0 и 1.
Следствие 2
Каждому числу к е (1, С^] взаимно однозначно соответствует набор
{У1,У2,-,УпЬ 73 = 0 или 1, /1 + К + /„ < m, составленный на основе биномиального разложения
к = Ст + Ст-1 + ... + Ст-3+1 +1,
„1 П2 П3 '
п > п > п2 > к > п3 >т- 3, 1 < 3 <т
по следующему правилу: / = 1, если ^ = п при некотором г, иначе = 0. В частности, для любого к.
Обозначим множество всех таких наборов через Г:
Г = {(71,72,к,7„): 73 =0V! /„ =0,
7 + к + /„ < т}.
Следствие 2 устанавливает правило нумерации элементов множества Г.
Описание нумерации элементов выборки из п элементов по т
Наша цель занумеровать элементы множества А, которое было определенно во введении следующими соотношениями:
А = {81,82,...,8„}, 8к =0 v1, 81 + ... + 8„ = т.
Напомним, что число элементов такого множества равно Сп . Чтобы сделать это, достаточно установить взаимно однозначное соответствие между множествами Г и А.
Это можно выполнить, разбив каждое из множеств на дизъюнктные системы под-
множеств, имеющих одинаковое число элементов.
Для множества Г имеется естественное разбиение:
п—1
Г т-г = {(Г1,Г2,к,Гп ): Гп = 0 ЪУг = т - Г}
г = 0,1,..., т -1. Каждому элементу множества Г т_г можно сопоставить набор натуральных чисел (п1,к,пг), п > п > • •• > пг > т - г,
п = 1 «7, = 1, г = 0,1,..., т -1.
Занумеруем элементы этого множества числами к = Ст + Ст-1 +... + Ст-г+1 +1.
п1 п2 пг
Из предложения 1 следует, что таким образом будет установлено взаимно однозначное соответствие между элементами множества Г и множеством чисел {1,2, к, с: }.
Разбиение множества Д подстроим «под разбиение» множества Г:
Дт = {(М2,-А): 8 = 0}, Дт-1 = {(М2,-Л): = 1, Й1 = 0},
Дт-г = {(d1,d2,к, 8п ):
8п = 1, 8 = 1, 1 < ] < г,8г = 0},
г = 2,...,т -1.
Заметим, что если (81,82,...,8п)е Дт-г, то 8г+1 + 8г+2 + к + 8п-1 = т - г при г = 0,...,т -1.
Следовательно, если
(8,82,...,8п)е Дт-г, то у1 = 0, полагая при 1 <, < г, , = п и = 8i при г < , < п, получим О^... ,7п) еГ:-г .
Табл. 1 иллюстрирует правило «перевода» элементов множества Дт-г в элементы множества Гт-г и обратно.
Приведенное рассуждение и таблица справедливы для всех г, больших нуля. Если г = 0, то положение только упрощается, так как в этом случае и 81 + к + 8п-1 = т, и 71 + к + /п-1 = т (см. табл. 2).
Это соответствие взаимно однозначно, Так как изменяемая часть одинакова для соответствующих элементов множества Д т-г
и Г т-г, а неизменяемая часть элементов Д т-г не позволяет двум таким множествам иметь общие элементы, если они имеют разные индексы. Таким образом, установлено взаимно-однозначное соответствие между элементами множеств Г = {/1,72,... ,7п} и
Д = {81,82,к 8п}.
Следствие 3 (правило нумерации элементов множества Д).
Если 8еДт, то 8п = 0 и номер элемента
к = Ст + Ст-1 + к + С1 +1,
п1 п2 п: '
где ,, = 1,к,т все те индексы, для которых 8п, =1.
Если 8 е Дт-1, то 8п = 1, 81 = 0, и номер элемента
к = Ст + Ст-1 + к + С2 +1,
п п2 пт-1 '
где п,, = 1,к, т -1 все те индексы, для которых п i <п и 8п = 1.
Если 8 е Дт-г , то 8п= I 8 = 1,
, = 1, к, г -1, 8Г = 0, и номер элемента
к = Ст + Ст-1 + к + С"
+1,
п пг
где индексы п{,, = 1,к,т - г , такие что
г < п. < п и 8 = 1.
1 п,
В частности, если 8 е Дт (г = т -1),
то 8п = I 8 = I 1 = Iт-2, 8т-1 = 0, и номер элемента
к = С" +1.
п1
Табл. 1
1 г - 1 г г + 1 ... п - 1 п
8еД т-г 1 1 0 совпадение 1
7е Г / т-г 0 0 0 совпадение 0
Табл. 2
1 ... п - 1 п
8еД" совпадение 0
7еГ" совпадение 0
Коточигов А.М.
Биномиальное разложение числа к определяется набором чисел „3. Элементы множества Г строятся по набору „3 по простому правилу: единица на местах, номера которых попали в набор, на остальных позициях нули. Элементы выборки 83 получены из соответствующих элементов 73 добавлением некоторого количества единиц, выделенных в таблице жирным шрифтом. Правила добавления единиц сформулированы в следствии 3. Курсивом выделены позиции
Табл. 3
к п 7 8
1
2 4 (0,0,0,1,0,0,0) (1,1 ,0,1,0,0, 1)
3 4,3 (0,0,1,1,0,0,0) (1 ,0,1,1,0,0, 1)
4 4,3,2 (0,1,1,1,0,0,0) (0,1,1,1,0,0, 1)
5 4,3,2,1 (1,1,1,1,0,0,0) (1,1,1,1,0,0,0)
6 5 (0,0,0,0,1,0,0) (1,1, 0,0,1,0, 1)
7 5,3 (0,0,1,0,1,0,0) (1 ,0,1,0,1,0, 1)
8 5,3,2 (0,1,1,0,1,0,0) (0,1,1,0,1,0, 1)
9 5,3,2,1 (1,1,1,0,1,0,0) (1,1,1,0,1,0,0)
10 5,4 (0,0,0,1,1,0,0) (1 ,0,0,1,1,0, 1)
11 5,4,2 (0,1,0,1,1,0,0) (0,1,0,1,1,0, 1)
12 5,4,2,1 (1,1,0,1,1,0,0) (1,1,0,1,1,0,0)
13 5,4,3 (0,0,1,1,1,0,0) (0,0,1,1,1,0, 1)
14 5,4,3,1 (1,0,1,1,1,0,0) (1,0,1,1,1,0,0)
15 5,4,3,2 (0,1,1,1,1,0,0) (0,1,1,1,1,0,0)
16 6 (0,0,0,0,0,1,0) (1,1, 0,0,0,1, 1)
17 6,3 (0,0,1,0,0,1,0) (1 ,0,1,0,0,1, 1)
18 6,3,2 (0,1,1,0,0,1,0) (0,1,1,0,0,1, 1)
19 6,3,2,1 (1,1,1,0,0,1,0) (1,1,1,0,0,1,0)
20 6,4 (0,0,0,1,0,1,0) (1 ,0,0,1,0,1, 1)
21 6,4,2 (0,1,0,1,0,1,0) (0,1,0,1,0,1, 1)
22 6,4,2,1 (1,1,0,1,0,1,0) (1,1,0,1,0,1,0)
23 6,4,3 (0,0,1,1,0,1,0) (0,0,1,1,0,1, 1)
24 6,4,3,1 (1,0,1,1,0,1,0) (1,0,1,1,0,1,0)
25 6,4,3,2 (0,1,1,1,0,1,0) (0,1,1,1,0,1,0)
26 6,5 (0,0,0,0,1,1,0) (1 ,0,0,0,1,1, 1)
27 6,5,2 (0,1,0,0,1,1,0) (0,1,0,0,1,1, 1)
28 6,5,2,1 (1,1,0,0,1,1,0) (1,1,0,0,1,1,0)
29 6,5,3 (0,0,1,0,1,1,0) (0,0,1,0,1,1, 1)
30 6,5,3,1 (1,0,1,0,1,1,0) (1,0,1,0,1,1,0)
31 6,5,3,2 (0,1,1,0,1,1,0) (0,1,1,0,1,1,0)
32 6,5,4 (0,0,0,1,1,1,0) (0,0,0,1,1,1, 1)
33 6,5,4,1 (1,0,0,1,1,1,0) (1,0,0,1,1,1,0)
34 6,5,4,2 (0,1,0,1,1,1,0) (0,1,0,1,1,1,0)
35 6,5,4,3 (0,0,1,1,1,1,0) (0,0,1,1,1,1,0)
Так как 81 +... + 8„ = т, то среди индексов 5, т-1< 5 < п есть только один, для которого 85 = 1, „ = 5.
Пример (реализации алгоритма).
Таблица 3 иллюстрирует формирование нумерации для выборки 4-х элементов из 7. п = 7, т = 4, С74 =35.
Элементы выборки перечислены в столбце 83, номера элементов находятся в столбце к.
элементов 8], совпадающих с соответствующими элементами 7] .
Отметим простую связь маркировки элементов 8. и множеств Дт-г (разбиения мно-
жества Д). Курсив отмечает элементы множества Д4, одна жирная единица - Д3, две жирных единицы - Д2, три жирных единицы - Д1.
Литература
1. Ландо С.К. Лекции о производящих функциях. М., 2004.
Abstract
The notes contain description of natural renumbering algorithm for units of sample of m elements from n. Algorithm based on presentation of natural numbers as sum of binomial coefficients.
Keywords: sample of m elements from n, binomial coefficients, binomial decomposition.
Коточигов Александр Михайлович, доктор физико-математических наук, профессор СПбГЭТУ, [email protected]
© Наши авторы, 2012. Our authors, 2012.