Научная статья на тему 'Троичная система и равновесие'

Троичная система и равновесие Текст научной статьи по специальности «Математика»

CC BY
636
77
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по математике, автор научной работы — Агафонова Ирина Витальевна, Дмитриева Оксана Михайловна

Статья написана совместно с О.М. Дмитриевой. Авторы рассказывают об уравновешенной троичной системе счисления, о свойствах этой системы. Разобраны задачи о взвешивании и логические задачи, изящно решаемые с помощью симметричного троичного представления чисел.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Троичная система и равновесие»

Агафонова Ирина Витальевна, Дмитриева Оксана Михайловна

ТРОИЧНАЯ СИСТЕМА И РАВНОВЕСИЕ

ЧЕМ ТРИ МОЖЕТ БЫТЬ ЛУЧШЕ ДВУХ?

Учебники информатики рассказывают нам о двоичной системе счисления и о том, почему именно эта система, представляющая данные и команды цифрами 0 и 1, реализована в современных компьютерах.

Известно, однако, что в 60-х годах учеными Московского университета (главный конструктор — Николай Петрович Брусенцов) был спроектирован и успешно работал троичный компьютер, получивший название «Сетунь». Было выпущено несколько десятков машин, размещавшихся по большей части в высших учебных заведениях. Драматическую историю троичного компьютера и его описание можно найти в [1].

Каковы же были причины, побудившие разработчиков выбрать троичное пред-

ставление данных и использовать триты и трайты вместо битов и байтов?

Чаще всего при обсуждении достоинств троичной системы счисления говорят о ее экономичности.

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

Обозначим N (т, х) — количество чисел, которые можно записать с помощью т разрядов системы с основанием х.

В двоичной системе счисления с помощью т разрядов можно записать 2т натуральных чисел, в троичной 3т, и вообще в системе с основанием х будет N (т, х) = хт. На эту запись уйдет тх цифр данной системы.

Зафиксировав количество используемых цифр п = тх, получаем число разрядов

п

т = п/х и количество чисел N(п/х, х) = Xх .

п

Функция х х исследуется средствами математического анализа. Ее график при любом п имеет единственный максимум при х = е = 2,718281828... (см. рисунок 1).

Наиболее близким к е является основание х = 3, оно и будет самым экономичным. Действительно, два троичных разряда (6 цифр) позволяют записать 9 чисел, в то время как три двоичных разряда (тоже 6 цифр) — только 8.

Однако название «экономичность» еще не означает выгоду во всех отношени-

ях. Сам отец «Сетуни» Н.П. Брусенцов говорил об «иллюзорной экономности троичного кода» и не ее считал главным достоинством троичной записи. Выбор троичной системы он обосновывал прежде всего тем, что с тремя цифрами возможен натуральный код чисел со знаком, а с двумя невозможен. Брусенцов отмечал, что двоичным кодом естественно представи-мы либо только неотрицательные числа, либо только неположительные. А вот в троичном коде с цифрами +1, 0, —1 (как и во всякой системе с нечетным числом цифр) имеет место естественное представление чисел со знаком. При этом нет необходимости в специальном разряде знака: если старшая значащая цифра числа положительна, то и число положительное, если отрицательна, то число отрицательное.

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

БАЛАНС -1, 0, 1

Поговорим об упомянутой троичной системе подробнее. Троичная система использует представление числа а в виде сум-

0123456739 Рисунок 1.

мы степеней числа 3. Для целого а это выражение

а = ап_1 • 3п—1 + ап-2 • 3п—2 + ... + а • 31 + о Цифры ак могут принимать одно из трех базовых значений и обычно берутся из набора {0, 1, 2}. Например,

11 = 9 + 2= 1 • 32 + 0 • 31 + 2, так что можно записать 11 = (102)3. Нижний индекс 3 означает, что число 102 записано в троичной системе. Если в этой системе надо представить отрицательное число, то знак потребуется указывать дополнительно.

Нас будет прежде всего интересовать троичная система, использующая базовый набор из цифр {-1, 0, 1}. Она называется симметричной, уравновешенной или сбалансированной. Чтобы цифра —1 не отличалась от 0 и 1 лишней позицией для знака, выберем для нее обозначение 1. Так как 11 = 9 + 3 — 1 = 1 • 32+ 1 • 31+ I, то запишем 11=(111) з , где нижний индекс 3 будет означать запись в уравновешенной троичной системе.

Приведем представление целых чисел от — 6 до 6 в уравновешенной троичной системе (см. таблицу 1).

Как видим, знак числа присутствует в самом его представлении: если первая цифра 1, то число отрицательное, а если 1, то положительное. Чтобы из положительного числа а получить это отрицательное число (—а), надо в уравновешенном троичном представлении числа

Таблица 1.

(а) 3

-6 11 0

-5 111

-4 И

-3 10

-2 11

-1

1 1

10

11

1 1 1

1 1 0

Таблица 2.

(a) 3 (а') 3 (а'' ) 3 a / а // а

0 0 1 1 1Т ТТ 0 1 11 -12

0 1 Т 1 1 0 1 0 1 2 6 -8

0 1 0 11 1 1 0 1 3 7 -10

0 1 1 11 1 1 0 0 4 5 -9

произвести одновременную замену всех цифр 1 на 1, а всех 1 на 1. Такую замену назовем инверсией.

Используя n троичных разрядов, можно записать 3n различные целых чисел,

3n -1 3n -1

в том числе - положительных, -

2 2

отрицательных и 0. Это будут числа от (1 1 1... 1 1)з до (111--Ц) з, наибольшее

n цифр n цифр

3n -1

из которых обозначим Q(n) = —2— =

= (1^ц11) 3 .

n цифр

Помимо операции инверсии, отметим еще одну одноместную операцию, возможную в троичной системе — операцию поразрядного циклического сдвига. Циклическим сдвигом вправо числа а, записанного посредством ровно n разрядов троичной симметричной системы (возможно, с добавлением нулей слева) назовем число а , полученное из а поразрядной заменой цифр 0 на 1, 1 на 1 и 1 на 0. Краткая схема замены 0 ® 1 ® 1 ® 0. Таким же образом от а' можно перейти к а" . Очевидно, что а" = а и что а + а' + а' = 0. Число а' получается из а заменой 0 — 1— 1 — 0, то есть двукратный циклический сдвиг вправо — это циклический сдвиг влево.

Например, для а = (11 10) 3 получим а' = (1001) 3, а''= (0111 ) 3. Десятичное представление этих чисел 15, —26 и 11.

Возьмем все Q (n — 1) положительных чисел, записываемых (n — 1) троичными разрядами. К каждому из них припишем слева 0 и для каждого найдем сдвиг вправо (положительное число) и сдвиг влево (отрицательное число). Чисел ста-

нет в 3 раза больше, то есть 30 (п - 1) = О (п) - 1, и их абсолютные величины все будут различны и охватят весь набор положительных чисел, записываемых п троичными разрядами, кроме наибольшего числа О (п), состоящего из п единиц. Это будет очень красивый набор чисел, уравновешенный по всем разрядам. Посмотрим, как он выглядит при п = 3. Исходный набор двухразрядных положительных чисел с приписанными слева нулями состоит из четырех чисел:

a (a ) 3

1 0 0 1

2 0 11

3 0 1 0

4 0 1 1

Занесем в таблицу числа а и их цик/ //

лические сдвиги а и а в троичном и в десятичном представлении и получим 12 чисел (см. таблицу 2).

Обратим внимание на поразрядную симметрию: в каждом троичном разряде поровну цифр 0, 1 и 1 (по 4 цифры).

Этот поразрядно уравновешенный набор из 12 чисел обозначим Х>12 = {+1, +2, +3, +4, +5, +6, +7, +11, -8, -9,-10,-12}. Он будет использован при решении одной из приводимых ниже задач.

Посмотрим, как в троичной уравновешенной системе выглядят основные арифметические операции сложения и умножения.

Таблица сложения в рассматриваемой системе имеет вид

1 + 1 = 11 1 + 0 = 1 1 + 1 = 0

0 + 0 = 0 0 + 1 = 1 1 + 1 = 11

Суммы 1 + 1 и 1 + 1 образуются переносом соответствующей цифры в следующий разряд и добавлением цифры противоположного знака, а остальные суммы получаются еще проще.

Таблица умножения совсем проста:

1 • 1 = 1 1 0 = 0 1 1 =1

00 = 0 01 = 0 11 = 1

Приведем пример умножения «столбиком» (умножаем 39 на 2 в троичной уравновешенной системе): х 1 1 1 0

11

1 1 1

1 1 1

1 0 0 I 0

Положительное целое число можно перевести из обычной десятичной формы записи в уравновешенную троичную слегка измененным обычным алгоритмом последовательного деления с остатком [2]. Изменение заключается в том, что деление на 3 с остатком иногда заменяется делением на 3 «с избытком». А именно: данное число а делят на 3 по правилу деления с остатком. Если остаток 0 или 1, запоминают его, а если остаток 2, то вместо него запоминают остаток, равный 1, и в каче-

а +1

стве частного принимают ^ . По этому

правилу полученное частное снова делят на 3 и т. д., пока частное не станет равно 1. Записывают это частное, а за ним остатки от деления в обратном порядке.

Например, для числа 15 получается последовательность остатков 0, 1, 1 и последнее частное 1 (см. рисунок 2). Это дает представление 15 = (11 10) 3.

НА РАЗНЫХ ЧАШАХ ВЕСОВ

Рассмотрим две задачи о взвешивании, изящно решаемые с помощью симметричного троичного представления чисел.

I. Задача о выборе системы гирь для взвешивания на рычажных весах.

Эта задача, кратко называемая «задачей о гирях» и предложенная в XIII веке итальянским математиком Леонардо Пи-занским (Фибоначчи), формулируется так:

Рисунок 2.

Какой минимальный набор гирь, по одной гире каждого веса, позволяет взвесить на двухчашевых весах всевозможные грузы в 1 кг, 2 кг и т. д. до N кг?

Решение этой задачи известно в двух вариантах:

1) груз находится на одной чаше весов, а все гири должны помещаться на другую;

2) гири разрешается помещать на обе чаши весов, то есть и на ту, где находится груз.

В [3] приведены решения для обоих вариантов, опирающиеся на запись чисел в двоичной и троичной системах счисления, соответственно. Нам представляется интересным показать, как красиво выглядит решение, если прибегнуть к уравновешенной троичной системе. Более того, можно сказать, что эта задача естественно порождает такую систему счисления.

Поместим груз, скажем, на левую чашу весов. Расположение гирь будем отмечать записями из цифр 0, 1 и 1. В этой записи 1 будет означать, что гиря кладется на левую чашу, 1 — что на правую, а 0 — что данная гиря на весы не кладется. Позиция цифры 1 или 1 будет определять вес гири: к-я позиция (при отсчете справа налево) соответствует гире весом 3к-1 кг.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Таблица 3.

число взвешиваний и 2 3 4 5 6

число монет тп 3 12 39 120 363

(тп) з 10 110 1110 11110 111110

Набор гирь, таким образом, состоит из гирь весом 1, 3, 9, 27 и так далее килограммов, а количество используемых гирь зависит от N.

Например, запись 1110 будет означать, что на правую чашу весов кладется гиря в 27 кг, а на левую гири в 9 и 3 кг. Гиря в 1 кг на весы не кладется. Таким образом, взвешен груз в 15 кг, что естественно, так как (см.выше) 15 = (11 10) 3.

27 кг 9 кг 3 кг 1 кг

1 I I 0

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

ли, равен О (п) = —^— , то есть О (1) =1,

О (2) = 4, О (3) = 13, О (4) = 40, О (5) = 121, О (6) = 364 и так далее.

Итак, для взвешивания грузов, например, от 1 до 300 кг достаточно 6 гирь весом в 1, 3, 9, 27, 81, 243 кг, а пяти гирь не хватит, так как О (5) < 300 < О (6). Размещение гирь для веса # производится согласно троичному представлению числа

II. Задача об обнаружении фальшивой монеты.

Имеется N одинаковых с виду монет. Одна из них фальшивая, что можно определить по весу: она легче или тяжелее других. Требуется взвешиванием на двухчашевых весах (без гирь) выявить за минимальное число взвешиваний, какая из монет фальшивая и будет ли она легче или тяжелее остальных?

Эта задача известна в литературе как задача о 12 монетах. Названа она так потому, что, как мы увидим ниже, решается за 3 взвешивания, если монет 12 или меньше, и вообще за п взвешиваний, если чис-

3й - 3

ло монет N <-. Чем

2

больше N, тем сильнее впечатляет приведенный результат: достаточно, например, всего пяти взвешиваний, чтобы обнаружить фальшивую монету среди набора в 120 монет.

3й - 3

Обозначим тп =-и взглянем на

п 2

этот результат в свете троичной уравновешенной системы. Имеем следующее соответствие (таблица 3).

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

Метод решения задачи II, использующий троичную нумерацию монет, назовем методом Дайсона, следуя [4].

Покажем, как работает этот метод при N =12 (классический случай).

Припишем каждой из 12-ти монет номер, снабженный знаком и взятый из поразрядно уравновешенного набора Я12= {+1, +2, +3, +4, +5, +6, +7,-8,-9, -Щ+11,-12} ={001, 01 1 , 010,011, 1 11 , 1 11 , 1 1 0, 1 1 1, 1 01, 1 00, 1 0 1 , 11 1 , 1 1 0} 3.

Порядок взвешивания определяется троичными номерами монет. При /-м взвешивании (/ = 1, 2, 3) на одну чашу весов (назовем ее чаша 1) кладутся монеты, номера которых имеют /-ю цифру 1, на пра-

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

Результат каждого взвешивания обозначим троичной цифрой аг- = 1 , если перевесила чаша 1, аг =1, если перевесила чаша 1, и аг = 0, если весы остались в равновесии.

Цифры а, записанные в порядке взвешиваний, образуют троичное число а = а1 • 3п-1 + а2 • 3п-2 + ... + ап-1 • 31 + ап.

Число а — либо номер какой-то монеты, либо его инверсия (тогда номер будет — а). Эта монета фальшивая. Если ее номер а, то она тяжелее других, а если номер — а, то эта монета легче других .

Этот вывод сделан из следующих соображений.

• Результат а} = 0 говорит о том, что при /-м взвешивании фальшивой монеты на весах не было. В этом случае 0 — /-я цифра в номере монеты.

• Если фальшивая монета была тяжелее других, то результат а} = 1 говорит о том, что при 1-м взвешивании она была на чаше 1, результат а1 = 1 — о том, что при /-м взвешивании она была на чаше 1. Цифра аг — /-я цифра в номере монеты.

• Если фальшивая монета была легче других, то результат а} = 1 говорит о том, что при /-м взвешивании она была на чаше 1, результат а1 = 1 — о том, что при /-м взвешивании она была на чаше 1. Цифра аг — инверсия /-й цифры в номере монеты.

Приведем пример, как за 3 взвешивания определить фальшивую монету среди 12-ти монет, которые пронумеруем числами из набора ^12.

1-е взвешивание: на чаше 1 монеты —8, —9, —10, —12, на чаше 1 монеты 5, 6, 7, 11.

2-е взвешивание: на чаше 1 монеты 5, 6, 7, —12, на чаше 1 монеты 2, 3, 4, 11.

3-е взвешивание: на чаше 1 монеты 2, 5, —10, 11 на чаше 1 монеты 1, 4, 7, 8.

а) Допустим, получилось, что в первый раз тяжелее чаша 1, во второй чаша 1, в третий наборы монет равны по весу.

Результат 11 0 дает число (11 0) 3 = = —6 и показывает, что фальшивой является монета с номером 6 и что эта монета легче других.

Ь) Допустим, получилось, что в первый раз тяжелее чаша 1, во второй и в третий наборы монет равны по весу.

Результат 1 0 0 дает число (1 0 0) 3 = = 9 и показывает, что фальшивой является монета с номером —9 и что эта монета легче других.

НЕ ТОЛЬКО «ДА» И «НЕТ»

О троичной логике слышали многие. Это частный случай конечнозначной логики. Мы лишь слегка коснемся этой обширной темы, рассмотрев известные задачи о задуманном числе [5].

Некто задумал число от 1 до N. Вы должны отгадать это число, задав наименьшее количество вопросов, на которые задумавший обязан правдиво отвечать

1) «да» или «нет»;

2) «да», «нет» или «не знаю».

Решение первой задачи сводится к

записи числа в двоичной системе счисления. Число вопросов зависит от N и для N < 2т не превышает т. Например, для N = 100 < 128 < 27 достаточно семи вопросов, первым из которых может быть вопрос «Будет ли задуманное число больше 40?» Дальнейшие вопросы зависят от ранее полученных ответов и каждый раз делят область отгадывания пополам или почти пополам. Шести вопросов не хватит, так как 100 > 64 = 26.

Можно построить схему вопросов и иначе. Двоичная запись числа 0 < N < 2т содержит не более т цифр. Дополнив, если нужно, эту запись нулями слева, получаем ровно т цифр, каждую из которых можно отгадать за 1 вопрос «Является ли эта цифра единицей?». Так как 0 не задумывается, то при N = 2т в двоичный код можно переводить N—1, чтобы и в этом случае хватило т вопросов, надо только не забыть прибавить 1 к ответу. Придется еще предоставить задумавшему табличку двоичных представлений всех чисел от 1 до N.

Нас больше интересует вторая задача, связанная с троичной системой счисления. При N = 3 ее можно решить за один вопрос, например, такой: «Если я задумал число, отличающееся от твоего, то будет ли оно меньше, чем твое?» Ответ «да» будет означать, что задумано число 3, ответ «нет» — что задумано число 1, а ответ «не знаю» соответствует числу 2.

В таком случае мы можем ожидать, что за один вопрос отгадывается один разряд троичного представления числа и что за т вопросов мы можем отгадать число

из диапазона от 1 до 3т (включая 3т, если не забыть сделанное выше замечание и переводить в этом случае в троичный код не N а N—1). Отрицательные числа не задумываются, так что уравновешенная система здесь не нужна. Число будет записываться в стандартной троичной системе с набором цифр {0, 1, 2}. Будут использоваться все т разрядов, слева при необходимости будут добавлены нули. Вопрос может звучать примерно так: «Если я задумал число, /-я цифра которого отличается от /-й цифры твоего числа, то будет ли она меньше, чем у тебя?» При ответе «да» записываем цифру 2, при ответе «нет» — цифру 0, при ответе «не знаю» — цифру 1.

Если, например, N = 200, то т = 5, так как 34 < 200 < 35. Если на 5 вопросов получена последовательность ответов «не знаю», «да», «не знаю», «нет», «да», то задумано число (12102)3 = 146.

Более естественной выглядит система вопросов, не так явно прибегающая к троичной системе. Ее можно связать с делением диапазона поиска на три части. Формулировки вопросов предоставляются читателю.

Литература

1. Малиновский История вычислительной техники в лицах. Киев: Фирма КИТ, ПТОО «АСК», 1995.

2. Жоуцукова ^.3. Основы информатики в вопросах и ответах. Учебное пособие. Нальчик: Издательский центр «ЭЛЬ-ФА», 1994.

3. Лшановскии Черкасова Л.Л Наборы из нулей и единиц: Заочная школа современного программирования. Занятие 2: Учебное пособие. СПб.: Изд-во ЦПО «Информатизация образования», 1999.

4. Жестоиал Л Как обнаружить фальшивую монету. «Квант», № 10, 1979.

5. Лл$утова Устинов Алгебра и теория чисел. Сборник задач для математических школ. М.: МЦНМО, 2002.

Агафонова Ирина Витальевна, доцент кафедры математики Санкт-Петербургского Морского Технического университета,

Дмитриева Оксана Михайловна, доцент кафедры математики Санкт-Петербургского государственного университета Телекоммуникаций.

© Наши авторы, 2004. Our authors, 2004.

i Надоели баннеры? Вы всегда можете отключить рекламу.