Это не официальный сайт wikipedia.org 01.01.2023

Стрелочные обозначения Кнута — Википедия

Стрелочные обозначения Кнута

(перенаправлено с «Стрелки Кнута»)

В математике стрелочная нота́ция Кну́та — это метод для записи больших чисел. Её идея основывается на том, что умножение — множественное сложение, возведение в степень — множественное умножение. Была предложена Дональдом Кнутом в 1976 году[1]. Тесно связана с функцией Аккермана и последовательностью гипероператоров.

Тетрация, записанная с помощью стрелочной нотации Кнута:

a b =   b a = a a . . . a = a ( a ( a ) ) b b .

Пентация в обозначениях Кнута:

a b = a ( a ( a ) ) b .

В указанных обозначениях присутствует b операндов, каждый из которых равен a, соответственно операции повторяются b 1 раз.

ВведениеПравить

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

Умножение натуральных чисел может быть определено через повторно производимую операцию сложения («сложить b копий числа a»):

a × b = a + a + + a b  ,

например,

4 × 3 = 4 + 4 + 4 = 12 3  .

Возведение числа а в степень b может быть определено как повторно производимая операция умножения («перемножить b копий числа a»), и в обозначениях Кнута эта запись выглядит как одиночная стрелочка, указывающая вверх:

a b = a b = a × a × × a b  

Например,

4 3 = 4 3 = 4 × 4 × 4 = 64 3  

Такая одиночная стрелка вверх использовалась в качестве значка степени в языке программирования Алгол.

Продолжая далее последовательность операций за пределы возведения в степень, Дональд Кнут ввёл понятие оператора «двойная стрелочка» для записи тетрации (многократного возведения в степень):

a b =   b a = a a . . . a = a ( a ( a ) ) b b  .

Например,

4 3 =   3 4 = 4 4 4 = 4 ( 4 4 ) = 4 256 1 , 3 × 10 154 3 3  .

Здесь и далее вычисление выражения всегда идёт справа налево. Также и стрелочные операторы Кнута (как и операция возведение в степень) по определению обладают правой ассоциативностью (очерёдностью справа налево). Согласно данному определению,

3 2 = 3 3 = 27  ,
3 3 = 3 3 3 = 3 27 = 7 625 597 484 987  ,
3 4 = 3 3 3 3 = 3 7 625 597 484 987 1 , 3 × 10 3 638 334 640 024  ,
3 5 = 3 3 3 3 3 = 3 3 7 625 597 484 987  ,
и так далее.

Уже это приводит к довольно большим числам, но система обозначений на этом не заканчивается. Оператор «тройная стрелочка» используется для записи повторного возведения в степень оператора «двойная стрелочка» (также известного как «пентация»):

a b = a ( a ( a ) ) b  ,

затем оператора «четверная стрелочка»:

a b = a ( a ( a ) ) b  

и т. д. Общее правило оператор «n-я стрелочка», в соответствии с правой ассоциативностью, продолжается вправо в последовательную серию операторов «n-1 стрелочка». Символически это можно записать следующим образом:

a     b = a     a     a     a     a     n       n 1   n 1       n 1           b  .

Например:

3 2 = 3 3 = 3 3 3 = 3 27 = 7 625 597 484 987  ,
3 3 = 3 3 3 = 3 ( 3 3 3 ) = 3 3 3 3 3 3 = 3 3 3 7625597484987  .

Форма обозначения a n b   обычно используется для записи a b   с n стрелочками.

Система обозначенийПравить

В таких выражениях как a b  , обычно для обозначения возведения в степень пишут показатель степени b   как верхний индекс основания a  . Но многие другие среды — такие как языки программирования и e-mail — не поддерживают подобную двумерную конфигурацию. Поэтому пользователи должны использовать линейную форму записи a b   для таких сред; стрелочка наверх предлагает возвести в степень степени. Если среди доступных символов нет стрелочки наверх, тогда вместо неё используется корректурный знак вставки «^».Верхний индекс записи a b   сам по себе не приспособлен к обобщению, что объясняет, почему Дональд Кнут вместо такой формы записи выбрал линейную форму записи a b  .


Обозначение «↑»Править

Попытка написать выражение a b  , используя знакомую форму записи с показателями степени, порождает башню степеней. Например:

a 4 = a a a a = a a a a  .

Если b является переменной величиной (или очень большое), башня степеней может быть записана, используя точки и с пометкой, показывающей высоту башни

a b = a a . . . a b  .

Используя такую форму записи, выражение a b   может быть записано как набор (стек) таких степенных башен, каждая из которых показывает степень вышележащей

a 4 = a a a a = a a . . . a a a . . . a a a . . . a a  .

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

a b = a a . . . a a a . . . a a } b  .

Более того, выражение a b   может быть записано, используя несколько колонок подобных степенных башен, где каждая колонна показывает число степенных башен в наборе слева

a 4 = a a a a = a a . . . a a a . . . a a } a a . . . a a a . . . a a } a a . . . a a a . . . a a } a  .

В более общем случае:

a b = a a . . . a a a . . . a a } a a . . . a a a . . . a a } } a b  .


Так можно писать неограниченно долго, чтобы представить a n b   как итерацию возведения в степень для любого a, n и b (хотя понятно, что и это становится достаточно громоздким).

Использование тетрацииПравить

Форма записи b a   в виде тетрации позволяет упростить такие схемы, при этом продолжая использовать геометрическое представление (мы можем их назвать тетрационными башнями).

a b = b a  ,
a b = a . . . a a b  ,
a b = a . . . a a a . . . a a a } b  .

Наконец, в качестве примера, четвёртое число Аккермана 4 4 4   может быть записано в виде:

4 . . . 4 4 4 . . . 4 4 4 . . . 4 4 4 = 4 . . . 4 4 4 . . . 4 4 4 4 4 4  .

ОбобщениеПравить

Некоторые числа настолько большие, что даже запись стрелочками Кнута становится слишком громоздкой; в этом случае использование оператора n-стрелочка n   предпочтительней (и также для описания с изменяемым числом стрелочек), или эквивалентно, гипероператорам. Но некоторые числа настолько огромны, что даже подобная запись недостаточна. Например, число Грэма. Для его записи может быть использована цепочка Конвея: цепочка из трёх элементов эквивалентна другой системе записи, но цепочка из четырёх и более элементов является более мощной формой записи.

a n b = hyper ( a , n + 2 , b ) = a b n (Knut) (Conway)  

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

ОпределениеПравить

Обозначение стрелочка вверх формально определяется так

a n b = { a b , если  n = 1 ; 1 , если  b = 0 ; a n 1 ( a n ( b 1 ) ) , в ином случае  

для всех целых a , b , n ,   где b 0 , n 1  .

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

a b c = a ( b c )  , но не ( a b ) c  ;
3 3 = 3 3 3   равно 3 ( 3 3 ) = 3 27 = 7625597484987  , но не ( 3 3 ) 3 = 27 3 = 19683.  

Есть хорошая причина для подобного выбора направления вычисления справа налево. Если бы мы использовали способ вычисления слева направо, тогда a b   было бы равно a ( a ( b 1 ) )  , и тогда   в действительности не являлся бы новым оператором.

Правая ассоциативность также естественна по следующей причине. Мы можем переписать повторяемые стрелочные выражения a n n a ,   которые появляются при расширении a n + 1 b   в виде a n n a n 1  , где всe a становятся левыми операндами стрелочных операторов. Это важно, так как стрелочные операторы не являются коммутативными.

Записывая ( a m ) b   как функциональный показатель степени b функции f ( x ) = a m x ,   мы получим a n b = ( a n 1 ) b 1  .

Определение можно продолжить ещё на один шаг, начиная с a n b = a b   для n = 0, так как возведение в степень есть повторяемое умножение, начиная с 1. Экстраполировать ещё на один шаг, записывая умножение как повторяемое сложение, не совсем верно так как умножение есть повторяемое сложение, начиная с 0 вместо 1. «Экстраполируя» снова на один шаг, записывая добавочный n как повторяемое добавление 1, требует начинать с числа a. Это отличие также подчёркивается в определении гипероператора, где начальные значения для сложения и умножения задаются раздельно.

Таблица значенийПравить

Расчёт 2 m n   может быть переформулирован в терминах бесконечной таблицы. Мы размещаем числа 2 n   в верхнем ряду и заполняем колонку слева числом 2. Для определения числа в таблице следует взять число, ближайшее слева, затем найти сверху требуемое число в предыдущем ряду, в позиции, заданной только что полученным значением.

Значения 2 m n   = hyper(2, m + 2, n) = 2 → n → m
m\n 1 2 3 4 5 6 Формула
1 2 4 8 16 32 64 2 n  
2 2 4 16 65536 2 65536 2 , 0 × 10 19 , 729   2 2 65536 10 6 , 0 × 10 19 , 728   2 n  
3 2 4 65536 2 2 . . . 2 65536       2 n  
4 2 4 2 2 . . . 2 65536         2 n  

Таблица такая же, как в статье функция Аккермана, за исключением сдвига в значениях m   и n  , и в добавке в размере 3 ко всем значениям.

Расчёт 3 m n  

Мы размещаем числа 3 n   в верхнем ряду и заполняем колонку слева числом 3. Для определения числа в таблице следует взять число, ближайшее слева, затем найти сверху требуемое число в предыдущем ряду, в позиции, заданной только что полученным значением.

Значения 3 m n   = hyper(3, m + 2, n) = 3 → n → m
m\n 1 2 3 4 5 Формула
1 3 9 27 81 243 3 n  
2 3 27 7,625,597,484,987 3 7 , 625 , 597 , 484 , 987     3 n  
3 3 7,625,597,484,987 3 3 . . . 3 7 , 625 , 597 , 484 , 987       3 n  
4 3 3 3 . . . 3 7 , 625 , 597 , 484 , 987         3 n  

Расчёт 10 m n  

Мы размещаем числа 10 n   в верхнем ряду и заполняем колонку слева числом 10. Для определения числа в таблице следует взять число, ближайшее слева, затем найти сверху требуемое число в предыдущем ряду, в позиции, заданной только что полученным значением.

Значения 10 m n   = hyper(10, m + 2, n) = 10 → n → m
m\n 1 2 3 4 5 Формула
1 10 100 1000 10,000 100,000 10 n  
2 10 10,000,000,000 10 10 , 000 , 000 , 000   10 10 10 , 000 , 000 , 000   10 10 10 10 , 000 , 000 , 000   10 n  
3 10 10 10 . . . 10 10   10 10 . . . 10 10 10   10 10 . . . 10 10 10 10     10 n  
4 10 10 . . . 10 10 10   10 . . . 10 10 10 10       10 n  

Для 2 ≤ n ≤ 9 численное расположение 10 m n   является лексикографическим порядком с m как наиболее значимым числом, так что порядок чисел этих 8 колонок есть просто линия-за-линией. То же самое применимо и для чисел в 97 колонках с 3 ≤ n ≤ 99, и мы начинаем с m = 1 даже для 3 ≤ n ≤ 9,999,999,999.

ПримечанияПравить

  1. Knuth, Donald E. Mathematics and Computer Science: Coping with Finiteness (англ.) // Science : journal. — 1976. — Vol. 194. — P. 1235—1242. — doi:10.1126/science.194.4271.1235.

СсылкиПравить