Шрифт:
Другим классом вычислимых функций являются рекурсивные функции, то есть такие функции, в которых значение f(n) можно вычислить на основе значений, которые принимает эта функция для других чисел, меньших n. Большинство функций, постоянно используемых в математике, являются рекурсивными, но все ли они вычислимы? Алан Тьюринг моментально дал отрицательный ответ на этот вопрос: существует множество функций, значение которых не сможет вычислить ни одна машина Тьюринга, более того, если выбрать функцию произвольным образом, то она почти наверняка не будет вычислимой. В то же время по другую сторону Атлантики логик Алонзо Чёрч (1903–1995) из Принстонского университета пришел к тем же выводам, разработав формальную систему, которую он назвал лямбда-исчислением. Обе эти идеи были столь новаторскими, что единственным, кого смогли найти редакторы журнала Proceedings of the London Mathematical Society для рецензирования статьи Тьюринга, оказался именно Чёрч. Так началось их плодотворное сотрудничество, прервавшееся на время войны, результатом которого стал принцип, сегодня известный под названием «тезис Чёрча — Тьюринга». Возможны и другие определения вычислимой функции, но если принять этот тезис, то все они будут эквивалентны существованию машины Тьюринга, вычисляющей значения функции.
Алонзо Чёрч, коллега Тьюринга и создатель лямбда-исчисления.
Чтобы доказать, что почти никакие функции не являются вычислимыми, Алан Тьюринг использовал хитроумный вариант диагонального метода Кантора, рассмотренный в главе 2. В ней мы рассказали, что не существует способа упорядочить список последовательностей, состоящих из нулей и единиц. Когда мы предполагали, что можем расположить одну последовательность после другой, изменяя значения элементов по диагонали, нам удалось сформировать последовательность из нулей и единиц, которая не совпадала ни с одной последовательностью в списке. Аналогичным образом можно показать, что множество функций не является счетным.
Мы указали, что функция — это отображение, сопоставляющее 0 и f(0), 1 и f(1), 2 и f(2) и т. д. до бесконечности. Следовательно, вся информация f содержится в последовательности чисел f(0), f(1), f(2), f(3)… Для простоты будем рассматривать только функции, которые принимают значения 0 и 1, например функцию f, значение которой равно 0 для четных чисел и 1 — для нечетных. В этом случае вся информация f содержится в последовательности 0101010101…, так как если мы хотим найти отображение n, достаточно перейти к n– му члену этой последовательности. Надеемся, мы убедили читателя, что функции, которые принимают только значения 0 и 1, эквивалентны бесконечным последовательностям нулей и единиц. Следовательно, множество функций не является счетным!
Каждая машина Тьюринга вычисляет значение единственной функции, поэтому утверждать, что все функции являются вычислимыми, можно, лишь доказав, что существует по меньшей мере столько же машин, сколько и функций, значения которых мы хотим вычислить. Однако Тьюринг установил, что бесконечное множество его машин намного меньше. Чтобы показать, что множество функций не является счетным, сначала следовало записать их в виде последовательностей из нулей и единиц. Мы можем записать в виде символов любую машину Тьюринга, поскольку она представляет собой конечную последовательность инструкций, и каждую из них можно записать несколькими символами. Как вы уже увидели, (#1,1, L, #3) означает то же, что и «Инструкция номер 1: если считан символ 1, сместиться влево и перейти к третьей инструкции». Представив машину Тьюринга как последовательность инструкций, читатель сможет найти способ, позволяющий записать все возможные машины Тьюринга в виде списка.
Больший интерес для нас будет иметь процесс «гёделизации», рассмотренный в главе 4. Он заключается в присвоении огромных натуральных чисел каждой формуле логики первого порядка так, что по известному числу можно восстановить исходную формулу. Этот метод, примененный к машинам Тьюринга, позволяет свести всю информацию, содержащуюся в программе, к одному числу. Как и в случае с «гёделизацией», машины Тьюринга соответствуют не всем числам, а только тем, которые обладают определенными свойствами. Хотя существует бесконечное множество машин Тьюринга, его размеры не могут превышать размеры множества натуральных чисел, так как всякая машина Тьюринга кодируется с помощью натуральных чисел.
Таким образом, мы доказали, что множество машин Тьюринга является счетным, следовательно, счетным является и множество вычислимых функций, которые по сравнению со множеством всех функций подобны иголке в стоге сена.
Лейбниц, а в начале XX века и Давид Гильберт — мечтали создать машину, способную отличать истинные высказывания от ложных. Как мы отметили в главе 3, программа Гильберта по «очистке» математики от парадоксов заключалась не только в формировании ее устойчивого фундамента — с этим справились древние начиная с Евклида, и пока что основы математики стояли прочно. Для абсолютной уверенности в том, что в будущем никакой Рассел не вытащит из рукава новый парадокс, помимо укрепления логической структуры математики, требовалось рассчитать метаматематические структуры, чтобы доказать, что они способны выдержать вес всего здания науки. Первые два вопроса, которыми задался Гильберт, звучали так: является ли математика полной и непротиворечивой, иными словами, совпадает ли истинное и доказуемое, и нет ли риска столкнуться с противоречиями в математике. За три года до того, как Гёдель доказал, что для арифметики эти требования несовместимы, Давид Гильберт и его ученик Вильгельм Аккерман (1896–1962) добавили к этим вопросам еще один, который был изложен на первом пленарном заседании Международного математического конгресса в 1928 году.
Проблема разрешения (Entscheidungsproblem) заключалась в том, чтобы доказать существование алгоритма, на вход которого подается математическое высказывание, а возвращается — «истина» это или «ложь». Хотя множество аксиом должно быть рекурсивно перечислимым, для множества теорем, как вы увидите далее, это требование невыполнимо. Однако сначала воссоздадим сцену, связанную с новой проблемой Гильберта, свидетелем которой был автор этой книги. Этот случай произошел на Международном математическом конгрессе в Мадриде в августе 2006 года.
Некий математик беседовал с кем-то, кого принял за журналиста. После обмена шутками о шайке воров, от которых пострадали некоторые присутствующие на конференции, один из участников разговора захотел узнать, чем занимается другой.
Это было рискованно: наиболее вероятно, что ответом на вопрос стал бы получасовой монолог, во время которого энтузиазм говорящего рос так же быстро, как угасал интерес слушателя. Однако в этот раз математик решил, что журналист не поймет его объяснений, поэтому ограничился тем, что сказал: «Смотрите: у меня есть машина, в которую я ввожу высказывание, и она отвечает, истинно это высказывание или ложно». Тогда мнимый журналист, который до того момента прекрасно скрывал свое истинное лицо, воскликнул: «Превосходно! Не сможете ли вы как-нибудь одолжить мне эту машину на денек-другой? Я работаю со множеством математических гипотез и совершенно не представляю, истинны они или ложны».