Из Википедии, бесплатной энциклопедии
  (Перенаправлено из обратной функции Аккермана )
Перейти к навигации Перейти к поиску

В теории вычислимости , то функция Аккермана , названная в честь Вильгельма Аккермана , является одним из самых простых [1] и ранних обнаруженных примеров полной вычислимой функции , которая не является примитивно рекурсивным . Все примитивно-рекурсивные функции являются итоговыми и вычислимыми, но функция Аккермана показывает, что не все итоговые вычислимые функции являются примитивно-рекурсивными. После публикации Аккермана [2]его функции (у которой было три неотрицательных целочисленных аргумента) многие авторы модифицировали ее для различных целей, так что сегодня «функция Аккермана» может относиться к любому из многочисленных вариантов исходной функции. Одна из распространенных версий, функция Аккермана – Петера с двумя аргументами , определяется следующим образом для неотрицательных целых чисел m и n :

Его ценность быстро растет даже при небольших затратах. Например, A (4, 2) представляет собой целое число из 19729 десятичных цифр [3] (эквивалент 2 65536 −3 или 2 2 2 2 2 −3).

История [ править ]

В конце 1920-х годов математики Габриэль Судан и Вильгельм Акерманн , ученики Дэвида Гильберта , изучали основы вычислений. И Судану, и Аккерману приписывают [4] открытие тотальных вычислимых функций (называемых просто «рекурсивными» в некоторых источниках), которые не являются примитивно рекурсивными . Судан опубликовал менее известную функцию Судана , а вскоре после этого и независимо, в 1928 году, Аккерман опубликовал свою функцию (греческая буква фи ). Функция трех аргументов Аккермана определена так, что для p= 0, 1, 2, он воспроизводит основные операции сложения , умножения и возведения в степень как

а для p > 2 он расширяет эти базовые операции способом, который можно сравнить с гипероперациями :

(Помимо исторической роли полностью вычислимой, но не примитивно-рекурсивной функции, исходная функция Аккермана расширяет основные арифметические операции за пределы возведения в степень, хотя и не так гладко, как варианты функции Аккермана, специально разработанные для эта цель, такие как Гудстейна гипероператор последовательности.)

В На Бесконечного , [5] Давид Гильберт выдвинул гипотезу о том , что функция Аккермана не примитивно рекурсивная, но это было Ackermann, Гильберта личный секретарь и бывший студент, который на самом деле доказал гипотезу в своей статье О построении Гильберта вещественных чисел . [2] [6]

Позже Рожа Петер [7] и Рафаэль Робинсон [8] разработали версию функции Аккермана с двумя переменными, которая стала предпочтительной для многих авторов.

Обобщенная последовательность гиперопераций , например , также является версией функции Аккермана. [9]

В 1963 году Р. К. Бак основал интуитивно понятный вариант с двумя переменными (F [10] ) на последовательности гиперопераций : [11]

По сравнению с большинством других версий функция Бака не имеет несущественных смещений:

Определение и свойства [ править ]

Исходная функция Аккермана с тремя аргументами рекурсивно определяется следующим образом для неотрицательных целых чисел m , n и p :

Из различных версий с двумя аргументами вариант, разработанный Петером и Робинсоном (называемый некоторыми авторами «функцией Аккермана»), определен для неотрицательных целых чисел m и n следующим образом:

Может быть не сразу очевидно, что оценка всегда завершается. Однако рекурсия ограничена, потому что в каждом рекурсивном приложении либо m уменьшается, либо m остается прежним, а n уменьшается. Каждый раз, когда n достигает нуля, m уменьшается, так что в конечном итоге m также достигает нуля. (Выражаясь более технически, в каждом случае пара ( m , n ) уменьшается в лексикографическом порядке на парах, что является хорошим упорядочениемточно так же, как упорядочивание отдельных неотрицательных целых чисел; это означает, что нельзя идти вниз в порядке бесконечного числа раз подряд.) Однако, когда m уменьшается, нет верхней границы того, насколько n может увеличиваться, и часто оно будет значительно увеличиваться.

Функция Петера-Аккермана также может быть выражена по отношению к различным другим версиям функции Аккермана:

  • гипероперация :
  • гипероперация , представленная в нотации Кнута со стрелкой вверх (расширенная до целочисленных индексов ≥ −2):
  • гипероперация , представленная в нотации стрелок Конвея :
Следовательно
( n = 1 и n = 2 соответствовали бы A ( m , −2) = −1 и A ( m , −1) = 1 , которые можно было бы логически сложить.)

Для малых значений m, таких как 1, 2 или 3, функция Аккермана растет относительно медленно по отношению к n (не более чем экспоненциально ). Однако при m ≥ 4 он растет гораздо быстрее; даже A (4, 2) составляет примерно 2 × 10 19 728 , а десятичное разложение A (4, 3) очень велико по любым типичным меркам.

Интересным аспектом функции (Петера-) Аккермана является то, что единственная арифметическая операция, которую она когда-либо использует, - это сложение 1. Ее быстрорастущие возможности основаны исключительно на вложенной рекурсии. Это также означает, что время его работы, по крайней мере, пропорционально его производительности, и поэтому оно также чрезвычайно велико. На самом деле, в большинстве случаев время работы намного больше, чем результат; Смотри ниже.

Версия с одним аргументом f ( n ) = A ( n , n ), которая увеличивает как m, так и n одновременно, затмевает любую примитивную рекурсивную функцию, включая очень быстрорастущие функции, такие как экспоненциальная функция , факториальная функция, многозначная функция. и суперфакторные функции, и даже функции, определенные с использованием нотации Кнута со стрелкой вверх (кроме случаев, когда используется индексированная стрелка вверх). Видно, что f ( n ) примерно сравнимо с f ω ( n ) в быстрорастущей иерархии. Этот экстремальный рост можно использовать, чтобы показать, что f , которая, очевидно, вычислима на машине с бесконечной памятью, такой как машина Тьюринга, и, следовательно, является вычислимой функцией , растет быстрее, чем любая примитивно рекурсивная функция, и поэтому не является примитивно рекурсивной.

В категории с экспонентами , используя изоморфизм (в информатике это называется каррированием ), функция Аккермана может быть определена с помощью примитивной рекурсии по функционалам более высокого порядка следующим образом:

где S ( n ) = n + 1 - обычная функция-последователь, а Iter обозначает функциональный оператор мощности , также определяемый примитивной рекурсией:

Функция , определенная таким образом согласуется с функцией Ackermann , определенной выше: .

Количество рекурсий до возвращения Аккермана (3,3)


Примеры расширений [ править ]

Чтобы увидеть, как функция Аккермана так быстро растет, полезно расширить некоторые простые выражения, используя правила из исходного определения. Например, полностью оценить можно так:

Чтобы продемонстрировать, как вычисления выполняются за много шагов и в большом количестве:

Таблица значений [ править ]

Вычисление функции Аккермана можно переформулировать в терминах бесконечной таблицы. Сначала разместите натуральные числа в верхнем ряду. Чтобы определить число в таблице, возьмите число сразу слева. Затем используйте это число, чтобы найти необходимое число в столбце, заданном этим числом, и на одну строку вверх. Если слева от него нет числа, просто посмотрите на столбец с заголовком «1» в предыдущей строке. Вот небольшая верхняя левая часть таблицы:

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

Несмотря на большие значения, встречающиеся в этом раннем разделе таблицы, были определены некоторые даже большие числа, такие как число Грэма , которое нельзя записать с помощью небольшого количества стрелок Кнута. Это число строится с помощью техники, аналогичной рекурсивному применению функции Аккермана к самому себе.

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

Доказательство того, что функция Аккермана не является примитивно рекурсивной [ править ]

В некотором смысле функция Аккермана растет быстрее, чем любая примитивно рекурсивная функция, и поэтому сама по себе не является примитивно рекурсивной.

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

Как только это установлено, следует, что само по себе не является примитивно рекурсивным, поскольку в противном случае установка привела бы к противоречию

Доказательство [12] проводится следующим образом: определить класс всех функций, которые растут медленнее, чем функция Аккермана

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

Обратный [ править ]

Поскольку рассмотренная выше функция 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 установлено на константу, так что обратная функция применяется к конкретной строке. [13]

Функция, обратная функции Аккермана, является примитивно рекурсивной. [14]

Использовать в качестве эталона [ править ]

Функция Аккермана, благодаря своему определению в терминах чрезвычайно глубокой рекурсии, может использоваться в качестве эталона способности компилятора оптимизировать рекурсию. Впервые функция Аккермана была опубликована таким образом в 1970 году Драго Вайда [15] и почти одновременно в 1971 году Ингве Сундбладом. [16]

Основополагающая статья Сандблада была подхвачена Брайаном Вичманном (соавтором теста Уетстона ) в трилогии статей, написанных между 1975 и 1982 годами [17] [18] [19].

См. Также [ править ]

  • Теория вычислимости
  • Двойная рекурсия
  • Быстрорастущая иерархия
  • Функция Гудштейна
  • Примитивная рекурсивная функция
  • Рекурсия (информатика)

Ссылки [ править ]

  1. ^ Монино & Hinchey 2003 , стр. 61.
  2. ^ Б Ackermann 1928 .
  3. ^ "Десятичное разложение A (4,2)" . kosara.net . 27 августа, 2000. Архивировано из оригинала на 20 января 2010 года.
  4. ^ Calude, Marcus & Tevy 1979 .
  5. ^ Гильберт 1926 , стр. 185.
  6. ^ Хейенорта 1967 .
  7. ^ Петер 1935 .
  8. ^ Робинсон 1948 .
  9. Перейти ↑ Ritchie 1965 , p. 1028.
  10. ^ с обратным порядком параметров
  11. ^ Бак 1963 .
  12. Ву, Чи (17 декабря 2009 г.). «Функция Аккермана не является примитивно рекурсивной | planetmath.org» . planetmath.org . Архивировано из оригинала на 2013-05-09.
  13. ^ Pettie 2002 .
  14. Перейти ↑ Matos 2014 .
  15. Перейти ↑ Vaida 1970 .
  16. ^ Sundblad 1971 .
  17. Перейти ↑ Wichmann, 1976 .
  18. Wichmann 1977 .
  19. Перейти ↑ Wichmann 1982 .

Библиография [ править ]

  • Акерманн, Вильгельм (1928). "Zum Hilbertschen Aufbau der reellen Zahlen" . Mathematische Annalen . 99 : 118–133. DOI : 10.1007 / BF01459088 .
  • Бак, Р.С. (1963). «Математическая индукция и рекурсивные определения» . Американский математический ежемесячник . 70 (2): 128–135. DOI : 10.2307 / 2312881 .
  • Калуд, Кристиан; Маркус, Соломон ; Теви, Ионел (ноябрь 1979 г.). «Первый пример рекурсивной функции, которая не является примитивно рекурсивной» . Historia Math . 6 (4): 380–84. DOI : 10.1016 / 0315-0860 (79) 90024-7 .
  • ван Хейеноорт, Жан (1967). От Фреге до Гёделя: Справочник по математической логике, 1879–1931 . Издательство Гарвардского университета.
  • Гильберт, Дэвид (1926). "Über das Unendliche". Mathematische Annalen . 95 : 161–190. DOI : 10.1007 / BF01206605 .
  • Матос, Армандо Б. (7 мая 2014 г.). «Обратная функция Аккермана примитивно рекурсивна» (PDF) .
  • Монен, Жан-Франсуа; Хинчи, MG (2003). Понимание формальных методов . Springer. п. 61. ISBN 9781852332471.
  • Петер, Рожа (1935). "Конструкция ничтрекурсивер Функционен". Mathematische Annalen . 111 : 42–60. DOI : 10.1007 / BF01472200 .
  • Петти, С. (2002). «Нижняя граница в стиле обратного Аккермана для онлайн-задачи проверки минимального остовного дерева». 43-й ежегодный симпозиум IEEE по основам информатики, 2002 г. Материалы : 155–163. DOI : 10.1109 / SFCS.2002.1181892 .
  • Ричи, Роберт Уэллс (ноябрь 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 .
  • Вайда, Драгонь (1970). «Проверка компилятора для языка, подобного Алголу». Бюллетень Mathématique de la Société des Sciences Mathématiques de la République Socialiste de Roumanie, Nouvelle Série . 14 (60) (4): 487–502. JSTOR  43679758 .
  • Вичманн, Брайан А. (март 1976 г.). «Функция Аккермана: исследование эффективности вызывающих процедур». BIT Численная математика . 16 : 103–110. DOI : 10.1007 / BF01940783 .
  • Вичманн, Брайан А. (июль 1977 г.). «Как вызывать процедуры, или размышления о функции Аккермана». BIT Численная математика . 16 : 103–110. DOI : 10.1002 / spe.4380070303 .
  • Вичманн, Брайан А. (июль 1982 г.). «Последние результаты теста вызова процедуры, функция Аккермана» (PDF) .

Внешние ссылки [ править ]

  • «Функция Аккермана» . Энциклопедия математики . EMS Press . 2001 [1994].
  • Вайсштейн, Эрик В. «Функция Аккермана» . MathWorld .
  •  Эта статья включает материалы, являющиеся общественным достоянием  из  документа NIST :  Блэк, Пол Э. «Функция Аккермана» . Словарь алгоритмов и структур данных .
  • Анимированный калькулятор функции Аккермана
  • Скотт Ааронсон , кто может назвать самое большое число? (1999)
  • Функции Аккермана . Включает таблицу некоторых значений.
  • Гипероперации: функция Аккермана и новая арифметическая операция
  • Большие номера Роберта Munafo в описывает несколько вариаций на определение A .
  • Габриэль Ниваш, Обратный Аккерман без боли об обратной функции Аккермана.
  • Раймунд Зайдель, Понимание обратной функции Аккермана (презентация в формате PDF).
  • Функция Аккермана, написанная на разных языках программирования (на Rosetta Code )
  • Функция Аккермана ( Архивировано 24 октября 2009 г.) - Некоторое исследование и программирование Гарри Дж. Смита.