Pull to refresh

Comments 12

Никогда не понимал стремление получить функцию которая растёт быстрее других. Всегда же можно придумать что-то растущее быстрее, или нет? Вот возьмём:
A(A(n)), она же растёт быстрее чем A(n)?

Можно придумать, но расти это будет все равно не так быстро. Математики придумали кучу всяких операций для выражения действительно больших чисел :) О действительно БОЛЬШИХ числах (часть 1), Гугология (это не опечатка) для программистов.

она будет примитивно-рекурсивной?
Голову на отсечение не дам, но если функция аккермана не является, то эта скорее всего тоже, или вы к тому что это ещё надо доказать?
Да нет, так просто, давно я это все изучал…
Эта функция не будет относиться к ПРФ, т.к. она строго больше функции Аккермана, и поэтому для неё не выполнятся свойство из пункта 4.
Да, такая функция будет расти, конечно, быстрее :)

Вообще, действительно, придумать быстрорастущую функцию — не rocket science. Тут вся суть утверждения в том, что ПРФы в принципе не способны расти сколь угодно быстро.

Ну а ещё для нас важно, что функция Аккермана растёт быстро, потому что это значит, что обратная к ней функция растёт медленно. И этим обосновывается «почти константная» асимптотика методов DSU.
Грубо говоря, примитивно-рекурсивные функции — это всё, что получается из простейших с помощью итерации. Итерируем прибавление единицы — получаем сложение. Итерируем сложение — получаем умножение. Итерируем умножение — получаем экспоненту. Итерируем экспоненту — получаем гиперэкспоненту. Итерируем гиперэкспоненту — получаем чёрт знает что, но его тоже можно дальше итерировать. А теперь возьмём функцию, которая «итерирует сама себя». Точнее, возьмём функцию с дополнительным аргументом n, причём функция A(n+1,...) получается итерацией функции A(n,...) Это и есть функция Аккермана.
Итерируем экспоненту — получаем гиперэкспоненту. Итерируем гиперэкспоненту — получаем чёрт знает что, но его тоже можно дальше итерировать.

Или Тетрация и пентация.


А теперь возьмём функцию, которая «итерирует сама себя». Точнее, возьмём функцию с дополнительным аргументом n, причём функция A(n+1,...) получается итерацией функции A(n,...)

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

Эта функция появилась не просто так. Математики хотели максимально подробно изучить класс всех частично-рекурсивных функций, т.е. вычислимых. Оказалось, что аккермановская функция не является ПРФ, но остается ЧРФ, мало того, она еще и тотальна (всюду определена). Но и теории алгоритмов, и в основаниях математики нас больше интересует доказуемость тотальности, т.е. доказательство того, что алгоритм сходится на любом входе. И вот тут начинаются проблемы.

Про ПРФ и Аккермана мы можем не более чем двумя вложенными индукциями доказать их тотальность. Но если мы теперь в схеме построения рекурсий в качестве базовой функции вместо S(x)=x+1 возьмем аккермана и точно так же выстроим последовательность быстрорастущих функций, то для доказательства их тотальности потребуется еще больше вложенных индукций. И так далее.

Сложность этих функций и соответствующих им формальных арифметических теорий, способных доказывать их тотальность, измеряется ординалами. Так, аксиоматика EA позволяет строить рекурсии только до ординала \omega^\omega, а арифметика Пеано первого порядка (PA) — до ординала \epsilon_0.
Оказывается, что класс доказуемо тотальных функций арифметики PA хоть и большой (он включает ПРФ и аккермана), но не покрывает все вычислимые функции.
Если мы в описанной иерархии дойдем до функции с номером epsilon_0, то она уже не будет лежать в данном классе.

Тем самым мы умеем сравнивать силу формальных систем с помощью ординалов. Этими вопросами занимается ординальная теория доказательств. На основе этой шкалы мы также можем судить, каким формализмом (читай — языком программирования) лучше пользоваться, если мы хотим гарантировать сходимость алгоритмов.

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

Спасибо, это очень круто! Я не знал раньше об этом свойстве функции Гудстейна.

Sign up to leave a comment.

Articles