Конечно, появление антиномий потрясло математику. Верно и то, что кризис математики еще и до сих пор полностью не преодолен. Три четверти столетия — слишком малый для этого срок.
Но в общем-то оснований для отчаяния нет. Хотя теория множеств и не в полном объеме проанализирована и соответствующим образом перестроена, но из нее выделена и переработана определенная часть, пока достаточная для обоснования всех остальных математических дисциплин. Математики могут пользоваться этой частью теории множеств, избегая, пока что, еще не «разминированных» областей. Сущность антиномий глубоко исследована. Современная математика впитала в себя положительные результаты, полученные сторонниками всех перечисленных направлений.
В дальнейшем изложении мы иногда будем пользоваться терминологией и понятиями теории множеств. Но, занимаясь алгоритмами, будем пребывать в мире конструктивных построений и термины теории множеств применять только для того, чтобы сделать язык более кратким и выразительным.
ЗАКЛЮЧЕНИЕ
§ 1. Может ли машина мыслить?
Может ли человек решить алгоритмически
неразрешимую проблему?
Заключение должно быть коротким. Поэтому очень сжато скажем о некоторых интересных вопросах, на первый взгляд имеющих отношение к теории алгоритмов.
Некоторые горячие головы утверждают, что машина, как и человек, может мыслить, хотя бы в потенции. При этом высказывают опасение, что со временем машины станут умнее людей и даже, чего доброго, поработят их. Читатель, наверное, хотел бы составить свое мнение по этому вопросу.
Известно, что мышление — это высшая форма движения материи, протекающая в мозге человека. Некоторые «философы» делают отсюда вывод, что машины не могут мыслить. Ход их рассуждений можно проиллюстрировать следующей схемой: селедка — рыба; акула — не селедка; значит, она не рыба.
Действительно, они считают, что человек может мыслить, машина — не человек; значит, она не может мыслить. Это неверное рассуждение. Оно не опровергает того, что машины могут мыслить. Прошу читателя не делать из этих слов вывода о том, будто автор считает, что машины могут мыслить.
Чтобы ответить на такой сложный вопрос, нужно прежде всего решить, по каким признакам можно распознать способность к мышлению. Даже среди людей есть индивидуумы, которые не могут мыслить.
Но всегда ли можно решить, является ли человек мыслящим или нет? Для решения таких вопросов назначают экспертные комиссии и не всегда получают ясный ответ. Еще сложнее дело в случае, когда вопрос ставится не о конкретной имеющейся машине, а о машинах вообще, о будущих машинах. Автор может только сказать: ни одна из известных машин не мыслит, а может ли вообще машина мыслить? Неизвестно. Но почему бы и нет?
Противники машин в области интеллекта говорят, что признаком мышления является способность решать алгоритмически неразрешимые проблемы. Алгоритмы, которые соответствовали бы таким проблемам, не существуют. Значит, нет и программ. Отсюда вытекает, что машина (из-за отсутствия программы) не может решать алгоритмически неразрешимые проблемы. А вот человек — другое дело. Человек — творец. Он даже алгоритмически неразрешимые проблемы может решать! Этой точки зрения придерживаются не только простые смертные, но даже некоторые специалисты в области кибернетики. Правы ли они? Конечно, нет! Мы помним, что некоторые неразрешимые проблемы заключаются в том, что предлагается построить несуществующий объект. Например, каталог всех несамоназывающихся и только несамоназывающихся каталогов, или каталог всех каталогов, цена каждого из которых на единицу больше максимальной из цен указанных в них книг. Хотелось бы посмотреть, как вышеназванные противники машин решили бы хоть одну из этих проблем. Правда, не все неразрешимые проблемы столь безнадежны, как названные. Некоторые неразрешимые проблемы содержат в себе разрешимые подпроблемы. Их может решать человек, но для их решения возможен и алгоритм. Другими словами, обращаясь к алгоритмически неразрешимым проблемам, мы не установим различия между «интеллектуальными» возможностями людей и машин.
§ 2. Детерминированность машин. Самообучение
Отмечают еще, что машины, являясь физическими моделями алгоритмов, действуют детерминирование Человек же в некоторых случаях может действовать, не ограничивая себя столь узкими рамками. Считают, что деятельность человеческого мозга подчинена законам теории вероятностей и является стохастической.
И здесь автор вынужден занять осторожную выжидательную позицию. Связано это с тем, что механизм переработки человеческим мозгом поступающей в него информации еще не изучен. Что же можно о нем сказать, если он нам еще не известен?
Наряду с этим известно, что в состав некоторых машин включают физические приборы, называемые датчиками случайных чисел. Такие машины могут получать в процессе выполнения программ некоторые случайные результаты. Истолкование случайного числа как команды и посылка его в регистр команд ничего хорошего не дает. Но разумное применение случайных чисел позволяет программно моделировать реальные процессы, протекающие в условиях помех, и получать близкие к реальному результаты.
Во всяком случае, стохастичность деятельности человеческого мозга и обязательная детерминированность машины — это еще не доказанные утверждения. Верны они или нет — покажет будущее.
Для человека характерна способность накапливать опыт и менять в соответствии с ним свое поведение. Говорят, что человек способен к самообучению. Оказывается, что при соответствующей операционной системе и машина становится самообучающейся. Уже составлено немало программ самообучения машины при решении ею той или иной задачи.
Возможности самообучения пока что малы, так как современная ЭВМ очень похожа на слепого и глухонемого человека. Она может ощупью читать информацию, нанесенную на перфоносители, и вслепую выдавать информацию. Безусловно, оснащение машины разнообразными и многочисленными устройствами ввода и устройствами выдачи информации повысит возможности самообучения машин. Но ведь каждый человек сперва обучается и начинает это делать с момента рождения. Лишь потом, имея уже огромные запасы информации, он начинает самообучаться.
В области самообучения машинам до людей еще далеко. Но машины будущего скорее всего будут обучающимися и самообучающимися. Варварский метод «начинки» машин огромным числом заранее составленных программ, безусловно, будет изжит, так как он слишком трудоемок и не позволит эффективно использовать машины будущего.
§ 3. Сознание машин. Алгоритмическое моделирование
Если Вы, уважаемый читатель, дошли до этих строк, то автор может считать, что не зря трудился. Автор надеется, что ему удалось показать, какую роль в нашей жизни и науке играют алгоритмы. Мы их встречаем везде и всегда, даже в музыке (здесь ноты — это алгоритмы).
Интерес к науке об алгоритмах вполне естествен. Их повсеместное распространение, их большое значение во всех областях нашей деятельности заставляют интересоваться этой наукой.
При первом знакомстве с алгоритмами мы обратили внимание на определенную связь между ними и протекающими вокруг нас процессами. Автор сразу предупредил, что связь не является абсолютной. Когда мы глубже вникли в существо понятия алгоритма, то обнаружили, что один и тот же алгоритм может вызывать различные процессы, ведущие к одинаковым результатам при одинаковых исходных данных.
Впоследствии мы применили алгоритмы для описания процессов. Это может быть методом алгоритмизации, если процесс для нас безразличен. Но это становится способом фиксации процессов в тех случаях, когда для нас важны процессы как таковые.
Нежесткая связь между процессами и алгоритмами дает возможность улучшения хода или содержания некоторых шагов процессов, автоматизации их, повышения эффективности.
Являясь математической дисциплиной, теория алгоритмов в отличие от некоторых дедуктивных, абстрактных разделов математики непосредственно изучает определенные явления реального мира. Ее следует отнести к так называемой прикладной математике.
На страницах этой книги неоднократно упоминался основной тезис теории алгоритмов. Обычно он связывался с традиционными теориями избранных алгоритмов. Как звучит этот тезис, если иметь в виду широкое формальное определение алгоритма, мы уже сказали, но все же повторим.
Основной тезис. Для любого алгоритма (в интуитивном смысле) над формальным языком L, если его запись можно рассматривать как конструкцию, существует эквивалентный ему алгоритм в широком формальном смысле, имеющий ту же запись.
Это означает, что современная теория алгоритмов охватывает все практически важные случаи. Ее дальнейшие обобщения связаны с обобщением понятия конструкции. Сегодняшние потребности теории ЭВМ и программирования она может обеспечить.
Кончая книгу, хочется заглянуть немного вперед, хотя бы в ближайшее будущее. Если наука эффективна, она должна позволять делать прогнозы.
Из широкого формального определения алгоритма вытекает, что алгоритм не только может, решая задачу, перерабатывать свою запись, но может перерабатывать и запись своего алгоритма выполнения. Для этого нужно более отчетливо вспомнить его «папу» (алгоритм выполнения), который тоже алгоритм и имеет своего «папу», приходящегося нашему алгоритму «дедушкой». Это значит, что, работая, алгоритм выполнения может перерабатывать и себя. Обозначая исходное данное через sitj, алгоритм— через tt, а результат—через рг_}, можем составить формулу из которой указанная возможность и вытекает.
Применяя это соображение к ЭВМ, в 1977 г. (в 1-м издании данной книги) мы пришли к выводу о возможности машины, которая обладала бы «способностью» перестраиваться, если этого требует программа. Появление таких машин теперь — свершившийся факт.