Функция Аккермана - Ackermann function
В теории вычислимости , то функция Аккермана , названная в честь Вильгельма Аккермана , является одним из самых простых и ранних открывшихся примеров полной вычислимой функции , которая не является примитивно рекурсивным . Все примитивно-рекурсивные функции являются итоговыми и вычислимыми, но функция Аккермана показывает, что не все итоговые вычислимые функции являются примитивно-рекурсивными. После публикации Аккерманом своей функции (которая имела три неотрицательных целочисленных аргумента) многие авторы модифицировали ее для различных целей, так что сегодня «функция Аккермана» может относиться к любому из многочисленных вариантов исходной функции. Одна общая версия, функция Петера-Аккермана с двумя аргументами, определяется следующим образом для неотрицательных целых чисел m и n :
Его ценность быстро растет даже при небольших затратах. Например, A (4, 2) представляет собой целое число из 19729 десятичных цифр (эквивалент 2 65536 −3 или 2 2 2 2 2 −3).
История
В конце 1920-х годов математики Габриэль Судан и Вильгельм Акерманн , ученики Дэвида Гильберта , изучали основы вычислений. И Судану, и Аккерману приписывают открытие общих вычислимых функций (называемых просто «рекурсивными» в некоторых источниках), которые не являются примитивно рекурсивными . Судан опубликовал менее известную функцию Судана , а вскоре после этого и независимо, в 1928 году, Аккерман опубликовал свою функцию (греческая буква фи ). Функция Аккермана с тремя аргументами определена так, что для , она воспроизводит основные операции сложения , умножения и возведения в степень как
а для p > 2 он расширяет эти базовые операции способом, который можно сравнить с гипероперациями :
(Помимо своей исторической роли как полностью вычислимой, но не примитивно-рекурсивной функции, исходная функция Аккермана расширяет базовые арифметические операции за пределы возведения в степень, хотя и не так гладко, как варианты функции Аккермана, специально разработанные для эта цель, такие как Гудстейна гипероператор последовательности.)
В О Infinite , Давид Гильберт выдвинул гипотезу о том , что функция Аккермана не примитивно рекурсивная, но это было Ackermann, Гильберта личный секретарь и бывший студент, который на самом деле доказал гипотезу в своей статье О построении Гильберта вещественных чисел .
Позже Рожа Петер и Рафаэль Робинсон разработали версию функции Аккермана с двумя переменными, которая стала предпочтительной для многих авторов.
Обобщенная последовательность гиперопераций , например , также является версией функции Аккермана.
В 1963 году Р. К. Бак основал интуитивно понятный вариант с двумя переменными ( ) на последовательности гиперопераций :
По сравнению с большинством других версий функция Бака не имеет несущественных смещений:
Были исследованы многие другие версии функции Аккермана.
Определение
Как м-арная функция
Исходная функция Аккермана с тремя аргументами рекурсивно определяется следующим образом для неотрицательных целых чисел и :
Из различных версий с двумя аргументами вариант, разработанный Петером и Робинсоном (называемый некоторыми авторами «функцией Аккермана»), определен для неотрицательных целых чисел и выглядит следующим образом:
Функция Петера-Аккермана также может быть выражена по отношению к различным другим версиям функции Аккермана:
- гипероперация , представленная стрелкой вверх Кнута (расширенная до целочисленных индексов ):
- гипероперация , представленная в нотации стрелок Конвея :
- Следовательно
- ( и будет соответствовать и , которые можно было бы логически добавить.)
Как итерированная 1-арная функция
Определим ф п как п -й итерации из F
где id - функция идентичности, а f ○ g обозначает композицию функции .
Представляя функцию Аккермана как последовательность унарных функций, можно установить .
Затем функция становится последовательностью унарных функций, определенных на итерации :
В качестве функции состава ( е ○ г ) ( х ) = е ( г ( х )) является ассоциативной , последняя линия может также быть
Вычисление
Рекурсивное определение функции Аккермана может быть естественно перенесено в систему переписывания терминов (TRS) .
TRS, основанный на 2-арной функции
Определение 2-арной (Петер-) функции Аккермана соответствует правилам редукции
Пример
Вычислить
- Когда применяется стратегия крайнего левого угла (одношаговая) , последовательность сокращения имеет вид
- Когда применяется стратегия крайнего левого внутреннего (одношаговая) , последовательность сокращения имеет вид
Для вычисления можно использовать стек , который изначально содержит элементы .
Затем повторно заменяют два верхних элемента согласно правилам
Схематично, начиная с :
WHILE stackLength <> 1 { POP 2 elements; PUSH 1 to 3 elements in conformance with the rules r1, r2, r3 }
Псевдокод опубликован в Grossman & Zeitman (1988) .
Например, на входе последовательные конфигурации стека:
Это отражает последовательность редукции
Замечания
- Самая левая-самая внутренняя стратегия реализована на 225 компьютерных языках в Rosetta Code .
- Гроссман и Zeitman (1988) указывал, что при вычислении длины максимальной из стека , пока .
TRS, основанный на повторяющейся 1-арной функции
Определение повторяющихся одномерных функций Аккермана приводит к различным правилам редукции
Поскольку композиция функций ассоциативна, вместо правила r6 можно определить
Как и в предыдущем разделе, вычисление может быть реализовано с помощью стека, который поддерживает текущий член.
Первоначально стек содержит три элемента .
Затем повторно три верхних элемента заменяются согласно правилам
Схематично, начиная с :
WHILE stackLength <> 1 { POP 3 elements; PUSH 1 or 3 or 5 elements in conformance with the rules r4, r5, r6; }
Пример
На входе последовательные конфигурации стека
Соответствующие равенства имеют вид
При использовании правила сокращения r7 вместо r6, замены в стеке будут следовать
Последовательные конфигурации стека будут
Соответствующие равенства имеют вид
Замечания
- На любом заданном входе все TRS, представленные выше, сходятся за одинаковое количество шагов. Они также используют те же правила редукции (в этом сравнении правила r1, r2, r3 считаются «такими же, как» правила r4, r5, r6 / 7 соответственно). Например, редукция сходится за 14 шагов: 6 X r1, 3 X r2, 5 X r3. Уменьшение также сходится в 14 шагов: 6 X r4, 3 X r5, 5 X r6 / 7. TRS различаются порядком применения правил сокращения.
- При вычислении по правилам r4, r5, r6 максимальная длина стека остается ниже 2 * . Когда вместо правила r6 используется правило сокращения r7, максимальная длина стека становится меньше 2 (i + 2). Длина стека отражает глубину рекурсии. Поскольку вычисление в соответствии с правилами r4, r5, r7 включает наименьшую максимальную глубину рекурсии, наблюдаемую до сих пор, это эффективно в этом отношении.
- Гроссман и Зейтман (1988) опубликовали по своей сути итеративный алгоритм, который работает быстрее.
Огромные числа
Чтобы продемонстрировать, как вычисление результатов происходит за много шагов и в большом количестве:
Таблица значений
Вычисление функции Аккермана можно переформулировать в терминах бесконечной таблицы. Сначала разместите натуральные числа в верхнем ряду. Чтобы определить число в таблице, возьмите число сразу слева. Затем используйте это число, чтобы найти необходимое число в столбце, заданном этим числом, и на одну строку вверх. Если слева от него нет числа, просто посмотрите на столбец с заголовком «1» в предыдущей строке. Вот небольшая верхняя левая часть таблицы:
п
м
|
0 | 1 | 2 | 3 | 4 | п |
---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | |
1 | 2 | 3 | 4 | 5 | 6 | |
2 | 3 | 5 | 7 | 9 | 11 | |
3 | 5 | 13 | 29 | 61 | 125 | |
4 | 13 |
65533 |
2 65536 - 3 |
|
|
|
5 | 65533 |
|||||
6 | ||||||
м |
Числа здесь, которые выражаются только с помощью рекурсивного возведения в степень или стрелок Кнута , очень большие и занимают слишком много места для записи в виде простых десятичных цифр.
Несмотря на большие значения, встречающиеся в этом раннем разделе таблицы, были определены некоторые даже большие числа, такие как число Грэхема , которое нельзя записать с помощью небольшого количества стрелок Кнута. Это число создается с помощью техники, аналогичной рекурсивному применению функции Аккермана к самому себе.
Это повторение приведенной выше таблицы, но значения заменены соответствующим выражением из определения функции, чтобы четко показать шаблон:
п
м
|
0 | 1 | 2 | 3 | 4 | п |
---|---|---|---|---|---|---|
0 | 0 + 1 | 1 + 1 | 2 + 1 | 3 + 1 | 4 + 1 | п + 1 |
1 | А (0, 1) |
А (0, А (1, 0)) = А (0, 2) |
А (0, А (1, 1)) = А (0, 3) |
А (0, А (1, 2)) = А (0, 4) |
А (0, А (1, 3)) = А (0, 5) |
А (0, А (1, n −1)) |
2 | А (1, 1) |
А (1, А (2, 0)) = А (1, 3) |
А (1, А (2, 1)) = А (1, 5) |
А (1, А (2, 2)) = А (1, 7) |
А (1, А (2, 3)) = А (1, 9) |
А (1, А (2, n −1)) |
3 | А (2, 1) |
А (2, А (3, 0)) = А (2, 5) |
А (2, А (3, 1)) = А (2, 13) |
А (2, А (3, 2)) = А (2, 29) |
А (2, А (3, 3)) = А (2, 61) |
A (2, A (3, n −1)) |
4 | А (3, 1) |
А (3, А (4, 0)) = А (3, 13) |
А (3, А (4, 1)) = А (3, 65533) |
А (3, А (4, 2)) | А (3, А (4, 3)) | A (3, A (4, n −1)) |
5 | А (4, 1) | А (4, А (5, 0)) | А (4, А (5, 1)) | А (4, А (5, 2)) | А (4, А (5, 3)) | А (4, А (5, n −1)) |
6 | А (5, 1) | А (5, А (6, 0)) | А (5, А (6, 1)) | А (5, А (6, 2)) | А (5, А (6, 3)) | А (5, А (6, n −1)) |
Характеристики
Основные пометки
- Может быть не сразу очевидно, что оценка всегда завершается. Однако рекурсия ограничена, потому что в каждом рекурсивном приложении либо уменьшается, либо остается прежним и уменьшается. Каждый раз, когда он достигает нуля, уменьшается, так что в конечном итоге тоже достигает нуля. (Выражаясь более технически, в каждом случае пара уменьшается в лексикографическом порядке по парам, что является хорошим упорядочением , точно так же, как упорядочение отдельных неотрицательных целых чисел; это означает, что нельзя идти вниз в упорядочении бесконечно много раз подряд. .) Однако при уменьшении нет верхней границы того, насколько может увеличиться - и он часто будет значительно увеличиваться.
- Для малых значений m, таких как 1, 2 или 3, функция Аккермана растет относительно медленно по отношению к n (не более чем экспоненциально ). Для , однако, он растет гораздо быстрее; даже составляет примерно 2 × 10 19 728 , а десятичное разложение A (4, 3) очень велико по любым типичным меркам.
- Интересный аспект заключается в том, что единственная арифметическая операция, которую он когда-либо использует, - это сложение 1. Его быстрорастущие возможности основаны исключительно на вложенной рекурсии. Это также означает, что время его работы, по крайней мере, пропорционально его производительности, и поэтому оно также чрезвычайно велико. На самом деле, в большинстве случаев время работы намного больше, чем результат; см. ниже.
- Версия с одним аргументом, которая увеличивает обе и в то же время затмевает каждую примитивную рекурсивную функцию, включая очень быстрорастущие функции, такие как экспоненциальная функция , факториальная функция, много- и сверхфакторные функции и даже функции, определенные с помощью стрелки Кнута вверх обозначение (кроме случаев, когда используется индексированная стрелка вверх). Можно видеть , что примерно сопоставимо с в быстро растущей иерархии . Этот экстремальный рост может быть использован для демонстрации того, что очевидно вычислимо на машине с бесконечной памятью, такой как машина Тьюринга, и, следовательно, является вычислимой функцией , растет быстрее, чем любая примитивно рекурсивная функция, и, следовательно, не является примитивно рекурсивной.
Не примитивно рекурсивный
Функция Аккермана растет быстрее, чем любая примитивно-рекурсивная функция, и поэтому сама по себе не является примитивно-рекурсивной.
В частности, один показывает , что для каждой примитивно рекурсивной функции существует неотрицательное целое число , такое , что для всех неотрицательных целых чисел ,
Как только это установлено, следует, что само по себе не является примитивно рекурсивным, поскольку в противном случае установка привела бы к противоречию
Доказательство проводится следующим образом: определите класс всех функций, которые растут медленнее, чем функция Аккермана.
и показать, что содержит все примитивные рекурсивные функции. Последнее достигается путем демонстрации того, что он содержит постоянные функции, функцию-последователь, функции проекции и что он закрыт при операциях композиции функций и примитивной рекурсии.
Обратный
Поскольку рассмотренная выше функция f ( n ) = A ( n , n ) растет очень быстро, ее обратная функция , f −1 , растет очень медленно. Эту обратную функцию Аккермана f −1 обычно обозначают через α . Фактически, α ( n ) меньше 5 для любого практического входного размера n , поскольку A (4, 4) имеет порядок .
Эта инверсия проявляется во временной сложности некоторых алгоритмов , таких как структура данных с непересекающимся набором данных и алгоритм Шазеля для минимальных остовных деревьев . Иногда в этих настройках используются исходная функция Аккермана или другие варианты, но все они растут с одинаково высокими темпами. В частности, некоторые модифицированные функции упрощают выражение, удаляя −3 и аналогичные члены.
Двухпараметрическая вариация обратной функции Аккермана может быть определена следующим образом, где - минимальная функция :
Эта функция возникает при более точном анализе упомянутых выше алгоритмов и дает более точные временные рамки. В структуре данных с непересекающимся набором m представляет количество операций, а n представляет количество элементов; в алгоритме минимального остовного дерева m представляет количество ребер, а n представляет количество вершин. Существует несколько немного разных определений α ( m , n ) ; например, log 2 n иногда заменяется на n , а функция пола иногда заменяется потолком .
В других исследованиях может быть определена функция, обратная той, где m установлено на константу, так что обратная функция применяется к конкретной строке.
Функция, обратная функции Аккермана, является примитивно рекурсивной.
Использовать как эталон
Функция Аккермана, благодаря своему определению в терминах чрезвычайно глубокой рекурсии, может использоваться в качестве эталона способности компилятора оптимизировать рекурсию. Впервые функция Аккермана была опубликована таким образом в 1970 году Драгоу Вайда и почти одновременно в 1971 году Ингве Сундбладом.
Основополагающая статья Сандблада была подхвачена Брайаном Вичманном (соавтором теста Whetstone ) в трилогии статей, написанных между 1975 и 1982 годами.
Смотрите также
- Теория вычислимости
- Двойная рекурсия
- Быстрорастущая иерархия
- Функция Гудштейна
- Примитивная рекурсивная функция
- Рекурсия (информатика)
Примечания
использованная литература
Библиография
- Акерманн, Вильгельм (1928). "Zum Hilbertschen Aufbau der reellen Zahlen" . Mathematische Annalen . 99 : 118–133. DOI : 10.1007 / BF01459088 . S2CID 123431274 .
- Бак, Р.С. (1963). «Математическая индукция и рекурсивные определения» . Американский математический ежемесячник . 70 (2): 128–135. DOI : 10.2307 / 2312881 . JSTOR 2312881 .
- Калуд, Кристиан; Маркус, Соломон ; Теви, Ионел (ноябрь 1979 г.). «Первый пример рекурсивной функции, которая не является примитивно рекурсивной» . Historia Math . 6 (4): 380–84. DOI : 10.1016 / 0315-0860 (79) 90024-7 .
- Гроссман, Джеррольд У .; Зейтман, Р. Сюзанна (май 1988 г.). «По сути итеративное вычисление функции Аккермана» . Теоретическая информатика . 57 (2–3): 327–330. DOI : 10.1016 / 0304-3975 (88) 90046-1 .
- ван Хейеноорт, Жан (1967). От Фреге до Гёделя: Справочник по математической логике, 1879–1931 . Издательство Гарвардского университета.
- Гильберт, Дэвид (1926). "Über das Unendliche". Mathematische Annalen . 95 : 161–190. DOI : 10.1007 / BF01206605 . S2CID 121888793 .
- Куп, Тим (25 апреля 2021 г.). «Функция Аккермана реализована с помощью цикла for» .
- Матос, Армандо Б. (7 мая 2014 г.). «Функция, обратная функции Аккермана, является примитивно рекурсивной» (PDF) .
- Монен, Жан-Франсуа; Хинчи, MG (2003). Понимание формальных методов . Springer. п. 61. ISBN 9781852332471.
- Мунафо, Роберт (1999a). «Версии функции Аккермана» . Большие числа в MROB . Проверено 30 августа 2021 .
- Мунафо, Роберт (1999b). «Изобретение новых операторов и функций» . Большие числа в MROB . Проверено 30 августа 2021 .
- Петер, Рожа (1935). "Конструкция ничтрекурсивер Функционен". Mathematische Annalen . 111 : 42–60. DOI : 10.1007 / BF01472200 . S2CID 121107217 .
- Петти, С. (2002). «Нижняя граница в стиле обратного Аккермана для онлайн-задачи проверки минимального остовного дерева». 43-й ежегодный симпозиум IEEE по основам информатики, 2002 г. Материалы : 155–163. DOI : 10.1109 / SFCS.2002.1181892 . ISBN 0-7695-1822-2. S2CID 8636108 .
- Ричи, Роберт Уэллс (ноябрь 1965 г.). «Классы рекурсивных функций на основе функции Аккермана» . Тихоокеанский математический журнал . 15 (3): 1027–1044. DOI : 10,2140 / pjm.1965.15.1027 .
- Робинсон, Рафаэль М. (1948). «Рекурсия и двойная рекурсия» . Бюллетень Американского математического общества . 54 (10): 987–93. DOI : 10.1090 / S0002-9904-1948-09121-2 .
- Сундблад, Ингве (март 1971 г.). «Функция Аккермана. Теоретические, вычислительные и манипулятивные исследования формул». BIT Численная математика . 11 (1): 107–119. DOI : 10.1007 / BF01935330 . S2CID 123416408 .
- Вайда, Драгонь (1970). «Проверка компилятора для языка, подобного алгоритму». Бюллетень Mathématique de la Société des Sciences Mathématiques de la République Socialiste de Roumanie . Nouvelle série. 14 (62) (4): 487–502. JSTOR 43679758 .
- Вичманн, Брайан А. (март 1976 г.). «Функция Аккермана: исследование эффективности вызывающих процедур». BIT Численная математика . 16 : 103–110. DOI : 10.1007 / BF01940783 . S2CID 16993343 .
- Вичманн, Брайан А. (июль 1977 г.). «Как вызывать процедуры, или размышления о функции Аккермана». BIT Численная математика . 16 (3): 103–110. DOI : 10.1002 / spe.4380070303 . S2CID 206507320 .
- Вичманн, Брайан А. (июль 1982 г.). «Последние результаты теста вызова процедуры, функция Аккермана» (PDF) .
внешние ссылки
- «Функция Аккермана» . Энциклопедия математики . EMS Press . 2001 [1994].
- Вайсштейн, Эрик В. «Функция Аккермана» . MathWorld .
- Эта статья включает материалы, являющиеся общественным достоянием из документа NIST : Блэк, Пол Э. «Функция Аккермана» . Словарь алгоритмов и структур данных .
- Анимированный калькулятор функции Аккермана
- Функция Акермана, реализованная с помощью цикла for
- Скотт Ааронсон , кто может назвать самое большое число? (1999)
- Функции Аккермана . Включает таблицу некоторых значений.
- Гипероперации: функция Аккермана и новая арифметическая операция
- Большие номера Роберта Munafo в описывает несколько вариаций на определение A .
- Габриэль Ниваш, Обратный Аккерман без боли об обратной функции Аккермана.
- Раймунд Зайдель, Понимание обратной функции Аккермана (презентация в формате PDF).
- Функция Аккермана, написанная на разных языках программирования (на Rosetta Code )
- Функция Аккермана ( Архивировано 24 октября 2009 г.) - Некоторое исследование и программирование Гарри Дж. Смита.