Комбинаторные алгоритмы для программистов

          

Целые


Целые являются основными объектами в вычислительной комбинаторике. В различных вычислительных теоретико-числовых исследованиях изучаются сами целые числа, но мы будем использовать их главным образом при подсчете и индексировании. В последнее время установлено, что полезны различные представления. В этой лекции обсудим общий класс позиционных представлений.

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

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

Целые
каждое положительное целое число имеет единственное представление в виде конечной последовательности

Целые

(2.1)

в которой каждое

Целые
- целое, удовлетворяющее условию
Целые
и
Целые
. Нуль представляется последовательностью
Целые
.
Целые
называется основанием системы
Целые
. Целое, соответствующее последовательности (2.1), имеет вид

Целые

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

Целые

На протяжении истории использовались различные значения

Целые
. Например, древние вавилоняне использовали
Целые
, а индейцы племени Майя —
Целые
. Сегодня наиболее широко используется
Целые
- десятичная система, которую мы унаследовали от арабов, и
Целые
- двоичная система, которая лежит в основе современных вычислительных устройств. В действительности она применяется лишь на самом низком уровне аппаратного оборудования; в сложных вычислительных устройствах и базисных языках удобнее использовать
Целые
или
Целые
.

Единственность этого представления можно доказать методом от противного. Числа

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

Целые

Если

Целые
, то без потери общности предположим, что
Целые
. Тогда, поскольку

Целые

и поскольку

Целые
, мы заключаем, что

Целые

(2.2)

что невозможно. Таким образом, мы должны иметь

Целые
. Аналогично, если
Целые
, мы имели бы снова неравенство (2.2) и отсюда с необходимостью
Целые
.
Следовательно, число

Целые


имеет два различных представления, что противоречит предположению, что
Целые
- наименьшее из таких чисел.

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

Алгоритм 1. Преобразование числа
Целые
в его представление
Целые
в системе счисления с основанием
Целые
.


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

Важным обобщением систем счисления с основанием
Целые
являются смешанные системы счисления, в которых задается не единственное основание
Целые
, а последовательность оснований
Целые
и последовательность (2.2) соответствует целому
Целые


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

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

Пример. Рассмотрим нашу систему измерения времени: секунды, минуты, часы, дни недели и годы. Это - в точности смешанная система с
Целые
.

Представление целого
Целые
в смешанной системе счисления
Целые
осуществляется с помощью алгоритма 2, который является простым обобщением алгоритма 1. Вместо того, чтобы для получения
Целые
в качестве делителя всегда использовалась
Целые
, в алгоритме 2 используется
Целые
.

Алгоритм 2. Преобразование числа
Целые
в его представление
Целые
в смешанной системе счисления
Целые



Содержание раздела