В нашей книге мы уже обсудили большое количество алгоритмов. Мы рассмотрели алгоритмы преобразования из одного представления чисел в другое, нахождения и исправления ошибок в данных, сжатия и развертывания файлов данных, управления разделением времени в многозадачной среде и многие другие. Кроме того, мы обсудили, как можно записать алгоритмы на машинном языке и выполнить их на машине, центральный процессор которой выполняет свои функции, следуя такому алгоритму:
До тех пор пока не будет выполнена команда останова, выполнять следующие шаги:
1) выбрать команду,
2) расшифровать команду,
3) выполнить команду.
Как демонстрирует алгоритм, описывающий исполнение фокуса (см. «Введение»), алгоритмы не ограничиваются только областью техники. На самом деле, они лежат в основе даже таких бытовых действий, как чистка гороха:
Возьиите корзину неочищенного гороха и пустую миску. Пока в корзине есть горох, продолжать выполнение следующих шагов:
1) взять стручок из корзины,
2) открыть стручок.
|
|
3) высыпать горошины из стручка в миску.
4) выбросить стручок.
Многие исследователи полагают, что все действия человеческого разума, включая воображение, творчество и принятие решений, являются результатом выполнения алгоритма. Эту гипотезу мы рассмотрим более подробно в главе, посвященной искусственному интеллекту.
Прежде чем продолжить обсуждение алгоритмов, рассмотрим формальное определение алгоритма.
Формальное определение алгоритма
Нестрого определенные понятия являются допустимыми и обычными в повседневной жизни, а наука должна базироваться на терминологии, которая имеет строгие определения. Формальное определение алгоритма представлено ниже.