Оптимальная система счисления

May 08, 2018 13:45

Давно хотел определить с точки зрения банальной эрудиции и формальной математики, какая из позиционных систем счисления является наиболее удобной, в некотором смысле - эргономичной. Потому что - как многим известно - привычная современной цивилизации десятичная система выбрана не из соображений оптимальности, а прямо вытекает из анатомии человека. Было бы не 10 пальцев на руках - укоренилось бы другое основание. Когда люди считали окружающие предметы буквально по пальцам, десятичная система была разумным выбором, да и то: почему именно пальцы-"штуки"? Кому-то было удобнее по фалангам 4 пальцев одной руки, указывая на них большим - так получила некоторую популярность 12-ричная система. Но дальше - просто сила привычки, QWERTY-эффект в чистом виде: используем не потому, что удобнее всего, а потому, что так сложилось исторически, в силу традиции.
___

Как математически определить удобство использования той или иной системы счисления? Во-первых можно рассмотреть, как в них записываются числа. Чем больше основание n, тем меньше разрядов требует одно и то же число, но при этом растет "алфавит" - количество цифр, что влечет за собой и размеры таблиц сложения и умножения, и все такое прочее. Результирующим будет произведение-комбинация этих факторов: lg(n) * (1/n). Логарифм (все равно какой, взял десятичный) основания системы отражает компактность записи чисел, обратное число - компактность алфавита.

Если проще, можно рассмотреть пример: у нас есть 60 дощечек, на которых можно написать повторяющиеся цифры - как нужно поступить, какую позиционную систему выбрать, чтобы при помощи этого набора выразить максимальное количество чисел? Можно сделать по 30 нулей и единиц, тогда в двоичной системе можно будет записать 2^30 - чуть более миллиарда различных чисел. Если сделать по 20 штук "0", "1" и "2" - то 3^20 - почти 3,5 миллиарда чисел в троичной системе. 4 цифры на 15 разрядов: 4^15=2^30, максимум функции пройден, дальше на убыль: 5^12 - менее четверти миллиарда, 6^10 - 60 миллионов, наконец 10^6 (привычная нам десятичная система) - миллион, совсем смех. 12^5 - вчетверо меньше... А можно просто 60 разных цифр и один разряд, как вавилоняне - вот и будут лишь числа от 0 до 59.

Так вот, эти выкладки - давно уже не секрет, кто их только не делал. В непрерывном случае максимум приходится на число e=2,718..., так что основание 3 выглядит лучше всех, 2 и 4 - одинаково чуть похуже: http://phg.su/basis2/X51.HTM - наглядно.
___

Но этого явно мало. При таком подходе учтено удобство записи чисел, но есть же еще и вычисления, операции над ними. Частично это уже учтено (см. выше фразу про таблицы сложения-умножения). И здесь приходится к месту аргумент, который - если кто в курсе - был основным доводом у сторонников двенадцатеричной системы: 12 делится нацело на 1, 2, 3, 4, 6 и собственно 12 против 1, 2, 5 и 10 у десятки. Это еще Перельман описывал в "Занимательной арифметике". И действительно, чем больше круглых чисел в произведениях и чем меньше периодических дробей в частных - очевидно, тем удобнее и быстрее подсчеты. Таким образом, домножаем нашу комбинацию двух факторов на третий - количество делителей числа d(n).

Итоговая формула: коэффициент эргомичности системы счисления q(n) = lg(n) / n * d(n) * 2,5 - домножил для приведения коэффициента десятичной системы к единице. Мы вправе это делать, поскольку основание логарифма все равно взято произвольно, у абсолютных значений q(n) нет смыслового наполнения. Ниже - таблица 25 лидеров:

n
lg(n)
d(n)
q(n)

12
1,079
6
1,349

6
0,778
4
1,297

24
1,380
8
1,150

4
0,602
3
1,129

8
0,903
4
1,129

18
1,255
6
1,046

10
1,000
4
1,000

30
1,477
8
0,985

20
1,301
6
0,976

36
1,556
9
0,973

16
1,204
5
0,941

60
1,778
12
0,889

48
1,681
10
0,876

14
1,146
4
0,819

40
1,602
8
0,801

3
0,477
2
0,795

9
0,954
3
0,795

15
1,176
4
0,784

28
1,447
6
0,775

72
1,857
12
0,774

42
1,623
8
0,773

2
0,301
2
0,753

32
1,505
6
0,706

5
0,699
2
0,699

120
2,079
16
0,693

Итак, "дозеналисты" были правы, у основания 12 действительно отличная репутация! А привычная нам десятка занимает седьмую позицию - достойную, но существенно уступающую. Если отойти в бытовую сферу, то главный недочет десятки - то, что она не делится на 3, а между тем на 3 делить приходится крайне часто. Ну и чтобы четвертые доли содержали лишь один знак после запятой вместо двух - тоже хороший бонус. Вкупе с сокращением длины больших чисел на 8% это оправдывает заучивание чуть большей таблицы умножения.
А с учетом огромной роли двоичной системы и бинарной логики в нашу компьютерную эпоху (тернарную пытались одно время привить, но не зашло) следует обратить внимание на основания 4, 8, 16. Переводить из них в двоичную - вообще плевое дело. Кстати, у 4 и 8, а также 3 и 9 коэффициенты равны, это не издержки округления.

Само собой, прикидка крайне грубая и многих вещей не учитывает. Но тут, как говорится, выделяйте гранты на дальнейшие исследования.

Тема поста интересна в первую очередь френдам aaamibor, doncunita, lrlay777, sly2m, spamsink, vmenshov и другим.

ПРОДОЛЖЕНИЕ ПОСТА С УТОЧНЕНИЕМ ФОРМУЛЫ: https://sevabashirov.livejournal.com/270269.html

числа, занимательные бредни, ©

Previous post Next post
Up