Тени разума. В поисках науки о сознании
Шрифт:
Думаю, нет необходимости давать в рамках основного доказательства определение «формальной системы» (если такая необходимость все же есть, то см. §2.7 ). Вместо этого я воспользуюсь фундаментальным вкладом Тьюринга, который приблизительно в 1936 году описал класс процессов, которые мы сейчас называем «вычислениями» или «алгоритмами» (аналогичные результаты были получены независимо от Тьюринга некоторыми другими математиками, среди которых следует, в первую очередь, упомянуть Черча и Поста). Такие процессы эффективно эквивалентны процедурам, реализуемым в рамках любой математической формальной системы, поэтому для нас не имеет особого значения, что именно понимается под термином «формальная система», коль скоро мы обладаем достаточно ясным представлением о том, что обозначают термины «вычисление» или «алгоритм». Впрочем и для составления такого представления математически строгое определение нам не понадобится.
Те из вас, кто читал мою предыдущую книгу « Новый разум короля» (см. НРК, глава 2), возможно, припомнят, что алгоритм там определяется
Можно представить себе некую особую машину Тьюринга, которая способна имитировать действие любой возможной машины Тьюринга. Такие машины Тьюринга называют универсальными. Иными словами, любая отдельно взятая универсальная машина Тьюринга оказывается в состоянии выполнить любое вычисление (или алгоритм), какое нам только может прийти в голову. Хотя внутреннее устройство современного компьютера весьма отличается от устройства описанной выше конструкции (а его внутренняя «рабочая область», пусть и очень велика, все же не бесконечна, в отличие от идеализированной ленты машины Тьюринга), все современные универсальные компьютеры представляют собой, в сущности, универсальные машины Тьюринга.
2.2. Вычисления
В этом разделе мы поговорим о вычислениях. Под вычислением (или алгоритмом) я подразумеваю действие некоторой машины Тьюринга, или, иными словами, действие компьютера, задаваемое той или иной компьютерной программой. Не следует забывать и о том, что понятие вычисления включает в себя не только выполнение обычных арифметических действий — таких, например, как сложение или умножение чисел, — но и некоторые другие процессы. Так, частью вычислительной процедуры могут стать и вполне определенные логические операции. В качестве примера вычисления можно рассмотреть следующую задачу:
(А)Найти число, не являющееся суммой квадратов трех чисел.
Под «числом» в данном случае я подразумеваю «натуральное число», т.е. число из ряда
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ….
Под квадратомчисла понимается результат умножения натурального числа на само себя, т.е. число из ряда
0, 1, 4, 9, 16, 25, 36, …;
представленные в этом ряду числа получены следующим образом:
0 x 0 = 0 2, 1 x 1 = 1 2, 2 x 2 = 2 2, 3 x 3 = 3 2, 4 x 4 = 4 2, 5 x 5 = 5 2, 6 x 6 = 6 2, ….
Такие числа называются «квадратами», поскольку их можно представить в виде квадратных матриц (пустой матрицей в начале строки обозначен 0):
С учетом вышесказанного решение задачи (А)может происходить следующим образом. Мы поочередно проверяем каждое натуральное число, начиная с 0, на предмет того, не является ли оно суммой трех квадратов. При этом, разумеется, рассматриваются только те квадраты, величина которых не превышает самого числа. Таким образом, для каждого натурального числа необходимо проверить некоторое конечное количество квадратов. Отыскав тройку квадратов, составляющих в сумме данное число, переходим к следующему натуральному числу и снова ищем среди квадратов (не превышающих по величине рассматриваемое число) такие три, которые дают в сумме это самое число. Вычисление завершается лишь тогда, когда мы находим натуральное число, которое невозможно получить путем сложения любых трех квадратов. Попробуем применить описанную процедуру на практике и начнем наше вычисление с нуля. Нуль равен 0 2+ 0 2+ 0 2, что, безусловно, является суммой трех квадратов. Далее рассматриваем единицу и находим, что она не равна 0 2 + 0 2+ 0 2, однако равна 0 2 + 0 2+ 1 2.
0 2 + 0 2+ 0 2 0 2 + 0 2+ 1 2 0 2 + 0 2+ 2 2 0 2 + 1 2+ 1 2 0 2 + 1 2+ 2 2
0 2 + 2 2+ 2 2 1 2 + 1 2+ 1 2 1 2 + 1 2+ 2 2 1 2 + 2 2+ 1 2 2 2 + 2 2+ 2 2
не дает в сумме 7. На этом этапе вычисление завершается, а мы делаем вывод: 7 есть одно из искомых чисел, так как оно неявляется суммой квадратов трех чисел.
2.3. Незавершающиеся вычисления
Будем считать, что с задачей (А)нам просто повезло. Попробуем решить еще одну:
(B)Найти число, не являющееся суммой квадратов четырех чисел.
На этот раз, добравшись до числа 7, мы находим, что в виде суммы квадратов четырехчисел его представить вполне возможно: 7 = 1 2+ 1 2+ 1 2+ 2 2, поэтому мы переходим к числу 8 (сумма 8 = 0 2+ 0 2+ 2 2+ 2 2), далее — 9 (сумма 9 = 0 2+ 0 2+ 0 2+ 3 2) и 10 (10 = 0 2+ 0 2+ 1 2+ 3 2) и т.д. Вычисления все продолжаются и продолжаются (… 23 = 1 2+ 2 2+ 3 2+ 3 2, 24 = 0 2+ 2 2+ 2 2+ 4 2, …, 359 = 1 2+ 3 2+ 5 2+ 18 2, …) и завершаться, похоже, не собираются. Мы предполагаем, что искомое число, должно быть, невообразимо велико, и для его вычисления нашему компьютеру потребуется чрезвычайно большой промежуток времени и огромный объем памяти. Более того, мы уже начинаем сомневаться, существует ли оно вообще, это самое число. Вычисления все продолжаются и продолжаются, и конца им не видно. Вообще говоря, так оно и есть: описанная вычислительная процедура завершиться в принципе не может. Известна теорема, впервые доказанная в 1770 году великим французским (и отчасти итальянским) математиком Жозефом Луи Лагранжем, согласно которой в виде суммы квадратов четырех чисел можно представить любое число. Теорема эта, кстати, весьма непроста (доказать ее как-то пытался великий современник Лагранжа, швейцарский математик Леонард Эйлер, человек, отличавшийся удивительной математической интуицией, оригинальностью и продуктивностью, однако его постигла неудача).
Я, разумеется, не собираюсь докучать читателю подробностями доказательства Лагранжа, вместо этого рассмотрим одну не в пример более простую задачу:
(C)Найти нечетное число, являющееся суммой двух четных чисел.
Нисколько не сомневаюсь, что все и так уже все поняли, однако все же поясню. Очевидно, что вычисление, необходимое для решения этой задачи, раз начавшись, не завершится никогда. При сложении четных чисел, т.е. чисел, кратных двум,
0, 2, 4, 6, 8, 10, 12, 14, 16, …,
всегда получаются четные же числа; иными словами, никакая пара четных чисел не может дать в сумме нечетное число, т.е. число вида
1, 3, 5, 7, 9, 11, 13, 15, 17, ….
Я привел два примера ( (B)и (C)) вычислений, которые невозможно выполнить до конца. Несмотря на то, что в первом случае вычисление и в самом деле никогда не завершается, доказать это довольно непросто, во втором же случае, напротив, бесконечность вычисления более чем очевидна. Позволю себе привести еще один пример: