О работе Тьюринга и его коллег в криптографическом центре Блетчли-парк в 1940-х годах стоит почитать, так как она перекликается с некоторыми затронутыми нами концепциями. Например, инновация, значительно сократившая время работы «Бомбы Тьюринга» – программы для раскодирования сообщений немецкой шифровальной машины Enigma, – определяла настройку, с которой следовало начать.
Еще один полезный текст о работе Станисласа Деана. Здесь я впервые встретил выражение «голый купол головы».
Пример древневавилонских алгоритмов взят из этой статьи.
The Art of Computer Programming, Volume 1: Fundamental Algorithms. Reading, MA: Addison-Wesley, 1973.
The Art of Computer Programming, Volume 3: Sorting and Searching. Reading, MA: Addison-Wesley, 1973.
Книги профессора Кнута – не для слабонервных, но они представляют собой блестящее сочетание исторического контекста с математическим подходом.
Я обратился к Сеймуру Паперту, чтобы больше узнать о конструкционизме – теории, вдохновленной конструктивизмом Пиаже. Паперт считает исследование, а также групповую и проектную деятельность основой обучения. Его работы повлияли на мои идеи, которые впоследствии вылились в эту книгу.[51]
Пример лабиринта Стэнхоупа в главе 4 взят из этой книги.
Если вы решили прочесть только одну книгу об алгоритмах, советую выбрать именно эту. Ее графики прекрасно помогают понять, как работают алгоритмы.
Разговор о разных подходах в Предисловии отчасти навеян рассуждениями Герберта Саймона об «удовлетворительных решениях».
В этом блоге подробно рассмотрено, как работает рекомендательный механизм для текстовых документов.[52]
Отрывок в главе 3 взят из этого текста.
Утверждение в главе 8 о том, что мы интерпретируем новую информацию на основе уже известной, заимствовано из этой работы.
Мысль о том, что те, кто внес самый серьезный вклад в цивилизацию, по большей части слушали своих учителей, а не «списывали решение», взята из этой книги. Это замечательная книга об обучении.
Пример о главных членах функции в главе 10 взят из этой книги.
Изучая психологию развития, я нашел этот текст о конструктивизме, конкретнее – о том, как исследование и игра помогают когнитивному развитию.
Работая над рукописью этой книги, я встретил статью своего бывшего профессора и был рад, что она увлечена той же идеей. В ее публикации рассказывается о перспективах алгоритмического мышления.
Темпы роста
Одна из тем этой книги – сравнение альтернативных подходов к выполнению одного и того же задания. Почти в каждой главе мы сравнивали одно с другим, используя диаграмму темпов роста. Графики на этих диаграммах были преднамеренно не маркированы. Вот свод темпов роста от самого медленного (лучшее) до самого быстрого (худшее).
ПОСТОЯННОЕ ВРЕМЯ:
при данном количестве элементов; если удвоить его, то время, требующееся для выполнения этого задания, останется тем же.ЛОГАРИФМИЧЕСКОЕ ВРЕМЯ:
для достаточно большого числа элементов; если удвоить их количество, то время, требующееся для выполнения задания, увеличится приблизительно на единицу.ЛИНЕЙНОЕ ВРЕМЯ:
для достаточно большого числа элементов; если удвоить их количество, время увеличится примерно вдвое.