Что такое алгоритм

1

Любую работу, выполняемую человеком, можно условно разделить на рутинную и творческую. Словосочетание «рутинная работа» в русском языке приобрело отрицательный оттенок. Этим термином обычно называют работу однообразную, скучную. А иногда даже и ненужную. Но вообще-то, слово «рутинный» означает «упорядоченный». То есть рутинной надо называть такую работу, которая состоит из выполнения последовательности заранее определённых действий, когда процесс достижения результата не вызывает никаких неясностей.

Если рассмотреть работу слесаря-сборщика, то она выглядит примерно так: он берёт какую-то деталь, прикручивает к ней другую деталь, затем прикрепляет всё это к какому-то каркасу и т.д. Вся последовательность его действий заранее определена, и ему для достижения цели не надо ничего придумывать. Надо просто последовательно выполнить все операции, предписанные заранее разработанной технологией, – и получится нужное изделие.

С этой точки зрения точно так же выглядит работа, например, бухгалтера. Разница лишь в том, что здесь в последовательности действий есть условные переходы. То есть последовательность действий может меняться в зависимости от возникновения определённых событий. Например, при расчёте зарплаты может оказаться, что работник проработал не все дни в данном месяце (скажем, некоторое время был болен) или, наоборот, работал в выходной день. Или находился в командировке. Или имеется приказ о лишении его премии. В каждом конкретном случае расчёт зарплаты для этого работника будет разным, но всё равно заранее определённым для каждой ситуации. То есть, опять-таки, при выполнении такой работы все действия заранее определены, и ничего нового придумывать не надо. Но вот если какой-нибудь инженер в конструкторском бюро ломает голову над созданием, например, нового двигателя для автомобиля, то это работа чисто творческая. Здесь заранее ничего не определено, иногда даже не известно, можно ли вообще создать двигатель с заданными параметрами. Всё зависит от творческих способностей инженера, его опыта, знаний, интуиции, и т.д. Точно такая же ситуация у поэтов, композиторов, художников, писателей. Люди таких профессий (их иногда прямо так и называют – «люди творческих профессий») делают своё дело, руководствуясь каким-то особым чувством, которое пока никто не смог описать или хоть как-то определить.

Главная особенность творческой работы – это её почти полная непредсказуемость. Учёный может много дней (и даже месяцев или лет) подряд ломать голову над какой-то проблемой, но ничего толкового не придумать. А потом, в какой-то совсем, вроде бы, неподходящий момент найти решение проблемы. Эйнштейн, например, говорил, что большинство дельных мыслей приходили ему в голову во время бритья. А Сергей Есенин, на вопрос, когда же он пишет стихи, ответил просто: «Всегда». То есть творческий процесс настолько непредсказуем, что нельзя даже достоверно установить, когда именно он имеет место, а когда нет.

***

Кстати, тот факт, что при творческом процессе дельная мысль может возникнуть в самый непредсказуемый момент, вовсе не является удивительным. Ниже, когда будем рассматривать суть такого свойства сознания как «ассоциации», мы ещё вернёмся к этому вопросу.

***

Только не надо думать, что творчество присуще лишь особой категории людей. Каждому, без исключения, человеку ежедневно приходится сталкиваться с ситуацией, когда требуется решать как поступить, что предпринять, за какое дело взяться немедленно, а какое отложить «на потом». И в это время в сознании человека происходит то, что словами характеризуют как «творческий процесс». Никто толком не знает что это такое. Просто известно, что если каким-то образом напрячь мозги, попытаться как-то (непонятно как) думать о решении поставленной задачи, и находиться в таком состоянии достаточно долго, то в голове может появиться решение этой задачи. А может и не появиться, сколько ни думай.

Правда, понятие «творчество» обычно применяют к таким деяниям человека, как сочинение стихов, музыки, создание художественных произведений, научных трудов и т.п. А различные решения бытовых проблем, которые зачастую тоже не имеют заранее разработанной технологии, к числу творческих не относят. Это, строго говоря, неверно в принципе. Конечно, «мощности» и характер таких творческих процессов, как, например, выбор платья для «выхода в свет» и разработка новой научной теории, сильно отличаются, но в обоих случаях имеет место именно творческий процесс. То есть, действия человека в обоих случаях не подчинены никакой инструкции.

В общем случае, если для решения какой-либо задачи существуют заранее разработанные правила (инструкция, технология, методика), то решение такой задачи это процесс рутинный (упорядоченный). Если же никаких правил не существует и результат достигается благодаря интуиции, «наитию», «озарению» и т.п., – то такой процесс решения задачи является творческим.

А теперь мы вплотную подошли к определению понятия «алгоритм». Что же это такое?

2

Алгоритм это конечное, упорядоченное множество конкретных предписаний (правил, команд, инструкций), последовательное выполнение которых приводит к решению задачи без необходимости понимания её сути.

В этом коротком определении целых четыре ключевых момента. Рассмотрим их.

Итак, множество предписаний должно быть:

1. Конечным. Даже если все предписания алгоритма будут безукоризненно правильно составлены, но их количество окажется бесконечно велико, то, естественно, задача никогда не будет выполнена. Такую последовательность предписаний алгоритмом назвать нельзя.

2. Упорядоченным. Должна быть строго определена последовательность выполнения предписаний. А если на каком-то этапе выполнения алгоритма требуется изменить эту последовательность, то все возможные варианты должны быть заранее определены, а конкретный вариант дальнейших действий должен однозначно определяться полученными к этому моменту результатами.

3. Состоящим из конкретных предписаний. Все предписания обязательно должны быть такими, чтобы объект (человек, компьютер или другое устройство), выполняющий этот алгоритм, мог однозначно определить и выполнить это предписание. В алгоритме не должно встречаться предписаний типа «действовать по обстановке» или «сделать как можно лучше». Никакая неоднозначность здесь не допустима.

4. Состоящим из таких предписаний, последовательное выполнение которых само по себе приводит к решению задачи. То есть, чтобы в процессе выполнения алгоритма не было никакой необходимости понимать, что это за задача, какие результаты должны получиться, и хороши ли эти результаты.

В четвёртом пункте умышленно допущена одна неточность. Дело в том, что решение задачи это и есть разработка алгоритма решения задачи. Если, например, вы решили задачу про два поезда, следующих навстречу друг другу из пунктов А и Б, то это и означает, что вы составили алгоритм решения этой задачи. Ведь если вам потребуется снова решить точно такую же задачу, но с другими исходными данными, то вы просто подставите эти данные в уже разработанные вами уравнения и выполните последовательность заранее определённых действий. То есть, в этом случае вам надо будет не решать, а выполнять что-то определённое, не требующее творческой работы. Но указанная неточность в определении алгоритма допущена сознательно, чтобы это определение не получилось слишком громоздким и замысловатым.

Если хотя бы одно из перечисленных условий не выполняется, то данное множество правил алгоритмом не является. Иначе говоря, все инструкции алгоритма должны быть составлены таким образом, чтобы в них полностью отсутствовала творческая составляющая. Иначе это будет не алгоритм.

3

Как уже было отмечено, компьютер может работать только по алгоритму (абсолютно любая компьютерная программа представляет собой не что иное, как конечную последовательность конкретных инструкций), а следовательно, никаких задач он не может решить в принципе. Ведь решить задачу – это значит разработать алгоритм её решения, и только потом выполнить его. Но разработать алгоритм по какому-то заранее разработанному алгоритму невозможно. (Даже формулировка этой проблемы получается какой-то замысловатой.) Ведь сама по себе разработка алгоритма является процессом творческим. А процесс творчества и процесс выполнения алгоритма это совершенно разные действия.

Рассмотрим пример. Допустим, начальник какого-то предприятия дал приказ своему бухгалтеру составить годовой финансовый отчёт в стандартной форме. В этом случае бухгалтер будет действовать по заранее разработанному алгоритму. То есть, будет выполнять заранее определённые, упорядоченные действия, а когда он все эти действия выполнит, то получится годовой отчёт. И бухгалтеру при такой работе, строго говоря, нет необходимости понимать смысл своих действий (хотя в действительности он, конечно, всё понимает), надо просто последовательно выполнить то, что заранее определено.

Но вот ситуация изменилась. Начальник, просмотрев составленный отчёт, снова вызывает бухгалтера и даёт ему несколько другой приказ: составить тот же отчёт заново, но при этом такие-то показатели занизить, такие-то завысить, а такие-то вообще не показывать. Но при этом чтобы обязательно всё выглядело правдоподобно, и чтоб дебет с кредитом сошлись тютелька в тютельку.

Вот тут-то бухгалтеру без понимания сути поставленной задачи никак не обойтись. Ему придётся мобилизовать все свои творческие способности и действовать, руководствуясь чем угодно, но только не конечной последовательностью конкретных правил. То есть действовать совсем не по алгоритму. Иначе говоря, ему придётся придумать последовательность действий, которая приведёт к желаемому результату, то есть разработать алгоритм.

Разумеется, приведённый пример творческой деятельности бухгалтера нельзя брать за основу для понимания такого сложного и малопонятного явления как творчество. Это слишком упрощённая ситуация. Но, к сожалению, дать чёткое объяснение этому явлению нет никакой возможности. Слишком много самых разных проявлений оно имеет, в том числе и полностью непонятных, не поддающихся никакой логике. Просто надо обратить внимание, что большинство решаемых человеком проблем имеет в своей основе творческую составляющую, и если бы человек умел действовать только по алгоритму, то он не мог бы делать практически вообще ничего.

Хотя слово «алгоритм» является, в принципе, математическим понятием и в повседневной жизни практически не употребляется, любой человек очень часто делает не что иное, как выполняет какой-то алгоритм. Любой кулинарный рецепт или инструкция для пользования каким-либо бытовым прибором представляют собой самый настоящий алгоритм. Любая математическая формула или закон физики тоже является алгоритмом. Но формулу обычно называют формулой, а рецепт рецептом. Так проще: само название указывает на специфику рассматриваемого алгоритма. К тому же, в этих случаях нет острой необходимости уделять особо пристальное внимание соблюдению четырёх обязательных принципов, которым должен удовлетворять алгоритм. В формуле эти принципы соблюдаются сами собой (попробуйте хоть в какой-нибудь математической формуле найти несоблюдение этих принципов), а любая инструкция составляется для человека, который всегда обладает хоть каким-то интеллектом и суть задачи всегда понимает. В случае чего, и сам додуматься может.

Но вот в вычислительной технике слово «алгоритм» употребляется в самом «чистом» значении и является в этой области одним из основных понятий. Разработка самых разных алгоритмов занимает центральное место в деятельности разработчиков программной и аппаратной составляющих вычислительной техники. И при этом, конечно же, совершенно недопустимо какое бы то ни было нарушение принципов построения алгоритма. Компьютер, выполняя последовательность составленных для него команд, абсолютно не способен «догадаться» до чего-нибудь сам. Принцип работы такой. А попытка устранения этого «дефекта» без изменения принципа работы компьютера равнозначна попытке сделать авторучку, которая пишет без ошибок.

***

Когда мы говорили об энтузиастах-изобретателях искусственного разума, то не упомянули ещё об одном в высшей степени странном сообщении, которое можно изредка встретить в прессе. Это сообщение типа: «Он работает над созданием алгоритма искусственного разума». Прямо скажем, формулировка оригинальна до невозможности. Ведь алгоритм решения какой-либо проблемы создаётся именно для исключения необходимости применения разума для данного случая. То есть, как говорилось выше, чтобы для определённой ситуации была заранее чётко определена вся последовательность необходимых действий, которые надо просто выполнять, а не думать, что же именно надо сделать. И намерение создать «алгоритм искусственного разума» можно уподобить намерению создать воду, не содержащую влагу. (Почему-то именно этот простой нюанс не все понимают. Н.М. Амосов даже выпустил книгу, которая так и называется – «Алгоритмы разума». Звучит внушительно, но все имеющиеся в этой книге пространные рассуждения и предположения назвать алгоритмами никак нельзя.)

***

А теперь, когда рассмотрен один из самых важных нюансов работы компьютера, попробуем рассмотреть некоторые особенности реакции человеческого сознания на различные воздействия окружающего мира.

Загрузка...