Десять
Рассуждения о десятичной системе счисления
2018-04-13 02:55:37

Время

Все мы пользуемся одной системой времени, и мало кто задумывается о том, что было бы, если система была другой. Что, если бы время было основано не на 60-ричной системе счисления, а, например, на привычной людям десятичной? Почему в часе 60 минут, в минуте 60 секунд, а в сутках не 60 часов, а 24?
Для интереса построим следующую временную систему. Пусть в сутках будет 10 часов, в часе - 100 минут, а в минуте - 100 секунд. Любую систему будем записывать тройкой чисел: часов в суткахминут в часесекунд в минуте. Так, описанная система будет записываться как 10-100-100, а привычная система, которой мы пользуемся - 24-60-60. Можно было бы рассмотреть систему 10-10-10, но тогда длительность секунды будет очень большой - больше минуты в системе 24-60-60 (в системе 10-100-100 секунда всего на 16% быстрее секунды в 24-60-60).
Итак, в системе 10-100-100 можно будет называть или записывать время числом от 0 до 999. Если стоит учитывать секунды, то можно добавлять дробную часть. В текущей системе это возможно только с допущением "дыр" (числа между 1259 и 1300 некорректны, как запись времени). В системе 10-100-100 любое число от 0 до 999 описывает конкретное время. Помимо удобной записи, упрощается подсчет разницы во времени. Расстояние между двумя точками времени в минутах в точности равна разнице между числами, которыми эти точки записываются. Так, например, между временем 3:25 и 7:50 в системе 10-100-100 ровно 425 (750-325) минут, а в системе 24-60-60 — 265.
00:00:00
0.0

Цифры

Хорошо, пойдем дальше. Было бы удобно, будь время привязано к десятичной системе, как всё остальное. Но. Почему к десятичной? Почему не к двоичной, не к 5-ричной, и даже не к 60-ричной? Казалось бы, ответ очевиден — десять пальцев на руках. Но это было давно, может в те времена это и было удобно, но сейчас мало кто передаёт друг другу численную информацию через пальцы на руках, да и дети учатся гораздо быстрее. Почему система счисления не поменялась за всё это время?
Просто так получилось.
Кто-то мог подумать, что дело в удобстве, что в другой системе всё намного сложнее: складывать, умножать, или даже просто ощущать число. Однако, это всё дело привычки: пользуйся мы с рождения только 16-ричной системой счисления, нам показалось бы, что десятичная система — та, к которой мы все так привыкли — очень неудобная. Тем более что в 16-ричной системе счисления запись числа на 17% короче записи того же числа в текущей системе.
Если развивать тему того, какая система будет удобнее для использования в повседневной жизни, то необходимо учитывать как минимум два фактора: длину числа (X) и количество различных цифр (Y). Чем меньше первая характеристика, тем короче запись и быстрее произношение произвольного числа. Чем меньше вторая характеристика, тем проще научиться эти числа использовать. Увеличивая основание системы счисления, мы уменьшаем длину числа, но увеличиваем количество различных цифр. Если задать вес каждой характеристике (\(\alpha\) и \(\beta\), соответственно), то можно получить следующую формулу, описывающую сложность системы счисления (\(\sigma\) - основание системы счисления):
$$Complexity(\sigma, \alpha, \beta) = \alpha \cdot log_{\sigma}(A) + \beta \cdot \frac{\sigma}{B} $$
Чем больше вес, тем более значима характеристика. \(A\) и \(B\) - константы. Для того, чтобы сократить количество констант и переменных, поделим выражение на \(\beta\) и умножим на \(B\). Отношение \(\alpha/\beta\) запишем как \(\gamma\), перейдя таким образом к относительной весовой характеристике: важно лишь то, во сколько раз первая характеристика (X) более значима, чем вторая (Y). Теперь можно переписать формулу следующим образом:
$$ Complexity(\sigma, \gamma) = \gamma \cdot B \cdot log_{\sigma}(A) + \sigma = \sigma + \gamma \cdot \frac{B \cdot ln(A)}{ln(\sigma)} $$
Значение \(C=B\cdot ln(A) \) можно воспринимать как коэфициент метрики, переводящий X в пространство значений Y. Его можно задать, фиксировав основание системы счисления и задав \(\frac{C}{ln(\sigma)} = \sigma\). Для справедливости фиксируем основание в значении 10 и получаем: \(C = 10 \cdot ln(10)\). Окончательная формула будет следующей:
$$ Complexity(\sigma, \gamma) = \gamma \cdot log_ {\sigma}(10) + \frac{\sigma}{10} $$
Заметим, что для фиксированной \(\gamma\), мы получаем линейную формулу. Это очень плохо, т. к., например, нельзя найти параметр \(\gamma\) для которого фиксированная система счисления будет лучшей. Чтобы избавиться от этой проблемы, поделим всё значение на \(\min\limits_{\tilde{\sigma}} (Complexity(\tilde{\sigma}, \gamma))\). Окончательный вид функции для оценки сложности системы:
$$ C(\sigma, \gamma) = \frac{Complexity(\sigma, \gamma)}{\min\limits_{\tilde{\sigma}} (Complexity(\tilde{\sigma}, \gamma))} $$
Ниже можно увидеть графики сложности \(C_{\gamma}(\sigma)\) для различных значений \(\gamma\) (rate). Точками отмечены минимумы этих функций.
Можно заметить, что десятичная система счисления находится в диапазоне значений \(\gamma\) от 2 до 3. А теперь посчитаем сложности для различных оснований — \(C_{\sigma}(\gamma)\). Полученные графики представлены ниже.
С двоичной системой счисления всё понятно — она не для нас. Однако, есть смысл рассмотреть основания выше 10, так как для высоких значений коэффициента \(\gamma\) именно они будут оптимальными. Можно провести аналогию с языками. Языки с иероглифами, где одним "символом" можно записать целое предложение, похожи на системы счисления с большим основанием: чем больше основание, тем больше различных иероглифов. Однако, плюс таких систем в том, что как только ты их выучиваешь, передача и запись информации происходит быстрее. Как в языках с иероглифами, в которых некоторые длинные конструкции можно записать с помощью одного-двух символов, так и в системах счисления с большим основанием, запись и произношение чисел получается короче.

1000

Теперь рассмотрим круглые числа. Они ведь тоже жестко привязаны к системе счисления. Вот почему нам кажется число 50 более круглым, чем число 49? Это из-за того, что у первого на конце ноль? Да, справедливо. Но если записать эти числа в семиричной системе счисления, то получится 101 и 100 соответственно, и теперь уже второе кажется более круглым.
Эти детали сильно влияют на уровень нашего восприятия некоторых знаменательных дат. Мы привыкли считать числа с нулями на конце более удобными, а такие же даты — более красивыми. Мы отмечаем юбилеи; празднуем события более красочно, когда им наступило 50 или 100 лет; празднуем серебряные, золотые свадьбы. И всё это потому что эти числа делятся на 10. Стоит только отвязаться от системы счисления, и мы получим множество других, возможно даже более интересных вариантов выделения дат.
Возьмём юбилеи. Рассмотрим 10-й, 20-й, ... 100-й дни рождения. Мы считаем эти события ключевыми, потому что они красиво записываются и потому что они редкие. Если отстраниться от вида записи числа, то остается только то, что юбилеи отдельно взятого человека зачастую можно пересчитать по пальцам рук. Для чистоты эксперимента, найдём статистическое распределение количества празднуемых юбилеев.
Ниже приведены следующие графики: зеленым - график вероятности прожить \(x\) лет, красным - нормализованный график вероятности умереть в определенном возрасте.
А здесь приведен график празднуемых юбилеев. По оси \(x\) - номера юбилеев, по \(y\) - вероятность отпраздновать его.
Теперь рассмотрим различные альтернативы выделения дат без привязки к системе счисления. Ниже представлены сравнительные графики различных систем: текущая, простые числа, квадраты, совершенные числа, почти совершенные, суперпростые и магические.
Самые близкие к текущей системе - суперпростые (3, 5, 11, 17, 31, 41, 59, 67, 83, 109) и почти совершенные (1, 2, 4, 8, 16, 32, 64, 128). Но если не рассматривать юбилеи в раннем возрасте (предположим, что нам это становится интересным с 14 лет), то графики будут следующие.
Результаты немного изменились. Суперпростые остались довольно близки к текущей системе, а почти совершенные сменились на квадраты (1, 4, 9, 16, 25, 36, 49, 64, 81, 100). Забавно, что квадрат любого числа в определенной системе счисления записывается как 100. То есть эта система очень похожа на текущую не только по характеристикам редкости, но и по смыслу.
Мы разговариваем на определенных языках, пользуемся определенными единицами измерения. И если нужно посчитать что-то в дюймах, а не в метрах, или же объяснить человеку что-то на чужом для тебя языке, то мы это сделаем. Да, это будет сложнее, чем обычно, но мы спокойно принимаем такие ситуации. Однако, с системой счисления всё гораздо интереснее. Наш мозг просто отказывается принимать другую систему. Даже представить сложно, что считать, называть числа, запоминать их в другой системе может быть так же просто (если не проще) как и в десятичной. Если отстраниться от этого ощущения и рассуждать объективно, то можно заметить, что другие системы не хуже той, что мы пользуемся сейчас. И кто знает, может, прогресс нашей эволюции был бы более быстрым, выбрав мы другую систему счисления в самом начале.