Не могли бы вы указать, как построить функцию Аккермана (на самом деле меня интересует версия, предложенная Роузой Петером и Рафаэлем Робинсоном) с помощью стандартных мюрекурсивных операторов? Я пробовал оригинальные статьи Петера и Робинсона, но в работе Петера используется язык, отличный от английского, и работы Робинсона «Рекурсия и двойная рекурсия» и «Примитивные рекурсивные функции» также не помогают: первая из них кажется более актуальной, но использует ее так называется двойной операцией рекурсии для определения функции Аккермана, поэтому в этом случае ищется явное определение оператора в мюррекурсивных терминах.
Наиболее близко к ответу идет П. Смит в «Введение в теоремы Годеля» (CUP, 2007) (29.4 Функция Аккерманна-Петера µ-рекурсивна), но он приходит к следующему: «сделать аргумент водонепроницаемым довольно утомительно, хотя и не сложно. Изучать детали здесь нечего, поэтому мы не будем.
Я также попробовал книгу Рожи Петера «Рекурсивные функции» (1967, Academic Press). Существует множество вариантов операторов рекурсии. Обычно одно сводится к другому. Я считаю, что есть тип оператора рекурсии, который подходит для определения функции Аккермана и последовательности шагов, которые сводят ее к примитивным операторам перенаправления и минимизации, но я оказался не в состоянии исследовать весь путь вниз.
источник
Ответы:
Разбить функцию Аккермана до элементарных операторов было бы довольно долго, но вот набросок:
Обратите внимание, что при вычислении рекурсивно, в любой точке вычисления вы имеете дело с выражением вида A ( m 1 , A ( m 2 , … , A ( m kA(m,x) . биективная функция сопряжения p с обратным ( π 1 , π 2 ) , мы можем закодировать это состояние как p ( z , p ( k)A(m1,A(m2,…,A(mk,z)…) p (π1,π2) (просто p ( z , 0 ) в случае k = 0 ). Затем мы можем определить одношаговую функцию оценки, учитывая состояние:p(z, р ( к , р ( мК, … , Р ( м2, м1) … ) p ( z, 0 ) к = 0
;е ( р ( г, 0 ) ) = p ( z, 0 )
;е ( р ( г, p ( k , p ( 0 , c ) ) ) ) = p ( z+ 1 , р ( к - 1 , с ) )
;e ( p ( 0 , p ( k , p ( m + 1 , c ) ) ) )) = p ( 1 , p ( k , p ( m , c ) ) )
.е ( р ( г+ 1 , p ( k , p ( m + 1 , c ) ) ) ) = p ( z, p ( k + 1 , p ( m + 1 , p ( m , c ) ) ) )
Затем вы получаете n-шаговую функцию оценки, используя примитивную рекурсию:
иЕ( 0 , м , х ) = р ( х , р ( 1 , м ) ) .Е(n+1,m,x)=e(E(n,m,x))
Наконец, оберните рекурсию вокруг Eμ E чтобы найти точку, в которой мы до состояния вида - z будет A ( m , x ) .p(z,0) z A(m,x)
источник
Это вариант идеи, опубликованной Kaveh, но в любом случае я публикую ее, поскольку она позволяет вам подметать многие неприятные детали под ковер, фактически не делая никаких действий руками.
Ключевым фактом является то, что график функции Аккермана примитивно рекурсивен. Нетрудно найти очень грубую примитивную рекурсивную границу в коде для таблицы значений Аккермана, необходимых для проверки того, что A ( m , n ) = w . Не пытайтесь получить четкие границы - чем тяжелее, тем легче! Что-то вроде B ( m , n , w ) = 2 m w wB ( м , н , ш ) A ( m , n ) = w B ( м , н , ш ) = 2м швес должно быть достаточно хорошо, но это зависит от вашего выбора схемы кодирования. Поскольку проверка значений таблицы может быть описана ограниченной формулой, она является примитивно-рекурсивной.
Если у вас есть примитивно-рекурсивное определение для графа функции Аккермана, просто определите A ( m , n ) = µ wG ( м , н , ш ) .A ( m , n ) = μ wG ( м , н , ш )
К сожалению, эта стратегия не работает для всех функций, определенных двойной (или множественной) рекурсией. Причина, по которой она работает для функции Аккермана - как вы увидите, пытаясь определить хороший - в том, что она растет очень монотонно. В общем случае вы должны использовать идею Каве и иметьB ( м , н , ш ) искать соответствующую таблицу значений. По сути, это та же самая причина, по которойтеореме Клини о нормальной форметребуется проекция после примененияоператора μ .μ μ
источник