Итак, попытки решения проблемы расшифровки механизмов формирования сложного поведения и компонентов психической деятельности на основе изучения систем рефлексов привели к определенным трудностям. Ученые понимали, что для их преодоления необходимы новые идеи и методы, которые могли бы не просто дополнить уже имеющийся арсенал фактов, а качественным образом изменить подходы к исследованию. Начались поиски в различных направлениях. Одно из них было связано с привлечением идей кибернетики и представлений о работе алгоритмов.
Понятие алгоритма сформировалось сначала в области математики, и в течение длительного периода времени исследователи не улавливали связи между этим понятием и решением различных актуальных проблем в биологии. Только в наше время удалось обнаружить сходство различных явлений, изучаемых математикой и физиологией.
Первые представления об алгоритмах были сформулированы более тысячи лет тому назад в работах знаменитого узбекского математика Ал-Хорезми. Он описал целый ряд формальных процедур, при помощи которых можно было решать некоторые математические задачи. Такие процедуры обладали удивительным свойством. Если не использовать алгоритмы, то каждый раз приходилось выдумывать новый способ решения, на что уходило много времени и много творческих усилий. В то же время знание алгоритма, формальной процедуры, записанной в виде комплекса последовательно осуществляемых правил преобразования данных, приводило к желаемому результату, т. е. к решению задач. Отсюда следовало и определение понятия «алгоритм».
Алгоритм — это система последовательных правил переработки информации, приводящая к решению задач определенного класса. Это понятие в настоящее время рассматривается как интуитивное, так как оно не соответствует тем требованиям, которые предъявляются к формальному описанию. Пока мы удовлетворимся такой характеристикой, и для того чтобы она стала понятной, приведем ряд примеров работы алгоритмов.
Простейшие примеры алгоритмов — это алгоритмы сложения, вычитания, деления и умножения многозначных чисел. Как известно, в этом случае следует подписать одно число под другим и, последовательно проводя операции над отдельными знаками, преобразовывать системы записей. Процедура решения задач является абстрактной, формальной, она не содержит никаких двусмысленностей. Эта процедура не может включать таких понятий, которые относятся к конкретным числам. Если бы такие понятия (например, число 126) были включены в алгоритм, то он мог бы быть применен только к определенным частным случаям решения, например к задачам деления одного конкретного числа на другое, т. е. он бы не позволял решать целый класс задач.
Другой класс алгоритмов — алгоритмы игр. Эти алгоритмы обычно относятся к категории «логических алгоритмов». Широко известны такие игры, как игра в «крестики-нолики», «побеждает чет», «поиск в лабиринте» и т. д. Оказалось, что для этих игр существуют формальные процедуры, используя которые участник игры может либо выигрывать, либо сводить игру вничью, но никогда не будет проигрывать. При наблюдении за поведением такого человека может создаться впечатление, что он обладает какими-то интересными и даже «замечательными» свойствами, какой-то способностью к игре. Между тем он использует стандартную процедуру. Причем он осуществляет эту процедуру чисто механически, не обращаясь к своим способностям творческого мышления.
В качестве примера приведем алгоритмическую процедуру, эффективную при игре «побеждает чет». В этой игре участвуют два человека. На столе лежат спички Каждый игрок имеет право вынимать одну или две спички. Побеждает тот, у кого останется четное число спичек. Оказалось, что может быть найден алгоритм, который обеспечивает успех в игре подобного типа. Этот алгоритм может быть реализован на вычислительной машине, которая будет осуществлять игру в «побеждает чет» более успешно, чем любой человек, не знающий алгоритма. В данном случае имеет значение применение четко сформулированных систем правил. Приведем систему этих правил для игрока А.
Первый ход: А берет два предмета. Очередной ход А в случае, если Б имеет четное число предметов, оставить противнику число предметов, которое на единицу больше кратного шести (19, 13, 7); если это невозможно, то при наличии пяти или трех еще не взятых предметов взять четыре или два соответственно. Очередной ход А в случае, если Б имеет нечетное число предметов: оставить противнику количество предметов на единицу меньше кратного шести (23, 17, 11); если это невозможно, то при наличии еще трех или одного предмета следует взять три или один соответственно.
При анализе правил следует обратить внимание на то, что они не содержат каких-либо слов, относящихся к конкретной игре. Все понятия являются более общими, абстрактными, что и позволяет применять их в любых ситуациях игры.
Интересный пример применения алгоритма может быть проиллюстрирован на основе древнегреческой мифологии. Один из мифов говорит о том, что легендарный герой Тезей должен был победить чудовище Минотавра и убить его. При этом найти его нужно было в лабиринте. Ариадна дала Тезею клубок ниток, при помощи которого он нашел своего противника, выполнил поставленную перед ним задачу и затем вышел из лабиринта. Проведем описание алгоритма. Продвигаясь по лабиринту, Тезей постепенно разматывал клубок ниток, отмечая те части лабиринта, которые он уже проходил один раз или Дважды. В этом и заключался смысл той помощи, которую оказала ему Ариадна. Тезей действовал по следующей системе правил:
Признак | Характер действия |
Через площадку уже протянута нить Ариадны.
Нить Ариадны отсутствует. Встреча с Минотавром.Отсутствие всех перечисленных признаков. |
Наматывание нити (движение назад)
Разматывание нити (движение вперед). Остановка. Начало поединка. Наматывание нити, |