Россия |
Целые и последовательности (последовательное распределение)
Введение
Большинство вычислительных устройств в качестве основных объектов допускает только двоичные наборы, целые и символы, поэтому, прежде чем работать с более сложными объектами, их необходимо представить двоичными наборами, целыми или символами. Например, числа с плавающей запятой кодируются целыми - мантиссой и порядком этого числа, но такое кодирование обычно незаметно для пользователя. В противоположность этому, рассмотренные во второй и третьей лекции способы кодирования объектов (множества, последовательности, деревья) всегда адресованы пользователю.
Любой заданный класс объектов может иметь несколько возможных представлений, и выбор наилучшего из них решающим образом зависит от того, каким образом объект будет использован, а также от типа производимых над ним операций. Поэтому рассмотрим не только свойства самих представлений, но также и некоторые приложения.
Целые
Целые являются основными объектами в вычислительной комбинаторике. В различных вычислительных теоретико-числовых исследованиях изучаются сами целые числа, но мы будем использовать их главным образом при подсчете и индексировании. В последнее время установлено, что полезны различные представления. В этой лекции обсудим общий класс позиционных представлений.
Мы будем рассматривать только неотрицательные целые. Кроме того, к любому представлению неотрицательных целых легко присоединить одиночный знаковый двоичный разряд.
Позиционные системы для представления целых чисел очень широко известны,
поскольку они встречаются во многих разделах математики, начиная с "новой
математики" и кончая углубленным курсом теории чисел. В системе счисления
с основанием каждое положительное целое число имеет
единственное представление в виде конечной последовательности
![]() |
( 2.1) |















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





![]() |
( 2.2) |





Для доказательства того, что каждое положительное целое имеет представление
по основанию достаточно задать алгоритм, конструирующий (с
необходимостью единственное) представление данного числа
Алгоритм 1. Преобразование числа в его представление
в системе счисления с основанием
.
Он строит последовательность путем
повторения деления на
и записи остатков. Пусть на первом шаге при
делении
на
остаток будет
Частное,
полученное в результате первого шага, делим на
вновь полученное частное делим на
и так далее. Полученная в
результате такого процесса последовательность остатков и будет требуемым
представлением
по основанию
Важным обобщением систем счисления с основанием являются смешанные системы счисления, в которых задается не единственное основание
а последовательность оснований
, и последовательность
(2.2) соответствует целому






Смешанные системы счисления могут вначале показаться странными, но в действительности в повседневной жизни они встречаются почти так же часто, как и десятичные.
Пример. Рассмотрим нашу систему измерения времени: секунды, минуты, часы,
дни недели и годы. Это - в точности смешанная система с
Представление целого в смешанной системе
счисления
осуществляется с помощью алгоритма 2, который является простым обобщением алгоритма 1. Вместо того, чтобы для получения
в качестве делителя всегда использовалась
в алгоритме 2 используется
Алгоритм 2. Преобразование числа в его
представление
в смешанной системе счисления
.
Последовательности
Бесконечная последовательность






![]() |
( 2.3) |


В комбинаторных алгоритмах часто приходится встречаться с представлениями конечных последовательностей (или начальных сегментов бесконечных последовательностей ) и операциями над ними.