Как мы еще не раз увидим в этой книге, важно, чего мы ждем. Победа компьютера над знаменитым гроссмейстером показывает, что потенциал алгоритма не ограничивается содержанием строк программы. Чтобы оставаться у руля, мы должны понимать, где и в чем мы уязвимы, – а также знать слабые места программы.
Но если даже Гарри Каспаров не сумел справиться с этой задачей, на что остается надеяться нам, обычным людям? Далее мы увидим, как алгоритмы проникают буквально во все аспекты современной жизни, от здравоохранения и борьбы с преступностью до транспорта и политики. При этом мы умудряемся одновременно и относиться к ним с пренебрежением, и преклоняться перед их силой. В результате мы понятия не имеем, много ли власти мы им уступили и как далеко все зашло.
Назад к основам
Прежде чем мы углубимся в изучение этой темы, возможно, стоит ненадолго отвлечься и поговорить о том, что же такое алгоритм. Хотя этот термин у всех на слуху, смысл самого слова довольно туманный. Формально определение таково[16]:
Алгоритм (сущ.): порядок действий, которые необходимо совершить для решения той или иной задачи или достижения заданной цели, особенно с помощью компьютера.
Всего-то. Алгоритм – это просто набор инструкций, которые помогают шаг за шагом дойти от исходных данных до решения задачи. В широком смысле рецепт пирога – тоже алгоритм. Под это определение подпадают и советы, которые вы даете заблудившемуся приезжему. Инструкции из IKEA, видео с YouTube, где вам показывают, что и как сделать, даже всевозможные практические руководства – теоретически алгоритмом можно считать любой перечень инструкций, в котором содержится полная информация о том, как достичь конкретной цели.
Однако область применения этого термина несколько иная. Обычно алгоритмом называют нечто более специальное. Алгоритм действительно представляет собой набор пошаговых инструкций, но при этом почти всегда речь идет о математическом объекте. Используя уравнения, арифметические и алгебраические действия, матанализ, логику и теорию вероятностей, алгоритм превращает ряд математических операций в компьютерную программу. Ему предоставляют данные из жизни, ставят задачу и запускают его, чтобы дальше он сам продирался через формулы к ответу. Именно алгоритмы делают информатику настоящей наукой, и благодаря им машины сотворили за последние десятилетия массу самых удивительных чудес.
Существует несметное множество всевозможных алгоритмов. Каждый из них имеет свое предназначение, свои отличительные особенности, свою изюминку и свои недостатки, и до сих пор неясно, как их лучше классифицировать. Но в целом удобно выделить четыре основные категории