Выбрать главу

Кроме этих двух, есть еще много алгоритмов поиска. Например, каким образом поисковая система вроде Google просматривает каждую веб-страницу на планете за доли секунды? Она использует еще более продвинутый алгоритм!

Чтобы применить алгоритм поиска, необходимо задействовать Мы абстрагируемся от деталей конкретной задачи и смотрим, нельзя ли свести ее к задаче поиска, и тогда наш алгоритм поиска становится готовым решением для многих задач. Можно подойти к этому с другой стороны: как только мы придумаем стратегию выигрыша за 20 вопросов, то сумеем обобщить это решение до алгоритма «разделяй и властвуй» — у нас есть общая стратегия, которая работает и для других задач. и часто неразрывно связаны.

Делаем жизнь Боби лучше

Значит, надо было устроить так, чтобы помощница задавала Боби вопросы, после которых исключалась бы половина из возможных вариантов. Представьте себе: придется задать в худшем случае пять вопросов вместо 13 в среднем, помноженные на все количество букв в книге. И речь идет не только о книге, но и о разговорах с друзьями и родственниками, докторами и медсестрами. Если бы он был немного знаком с информатикой, насколько легче могла бы стать его жизнь!

Главное — алгоритмическое мышление

Здесь стоит отметить, что пока мы вообще не учитывали технологии. Речь шла исключительно о двух «беседующих» людях. Теперь, когда у нас есть хороший способ, то есть хороший алгоритм, озаботимся тем, как его автоматизировать при помощи подходящих технических средств. Мы могли бы использовать , которая распознает моргание, или которая улавливает, «да» у человека в мыслях или «нет». Но дело в том, что, какую бы технику мы ни использовали, ей все равно потребуется алгоритм поиска. Если выбрать его неверно, то при всех ее преимуществах общение все равно пойдет медленно — придется задавать 13 вопросов вместо пяти. И нет никакой разницы, будет ли помощником компьютер или человек. Если сначала не продумать алгоритм, система может оказаться мучительно медленной. Вычислительная техника — это не только технологии. Это и вычислительное мышление, которое необходимо, чтобы найти хорошее решение.

Еще важнее — понять человека

Итак, нет сомнений, что жизнь Боби могла бы стать лучше, если бы вычислительное мышление применялось активнее. Но не будем торопиться с выводами. Возможно, мы неправильно поняли ситуацию. Есть вероятность, что в этом случае он никогда бы не написал книгу и его жизнь превратилась бы в еще больший ад. Почему? Мы начали не с технологий, а с информатики. Возможно, надо было начинать с человека. Удалось ли нам учесть главное?

В качестве показателя успеха, или нашей мы использовали количество заданных вопросов. Задавать вопросы — задача помощницы, и это нетрудная работа, хотя и нудная. А что, если Боби было трудно моргать? При его решении надо было моргать один раз на каждую букву. Наш алгоритм типа «разделяй и властвуй» требует, чтобы он моргал пять раз. Умножьте это на всю книгу. Не исключено, что наше решение сделало бы его задачу в пять раз сложнее! Но возможно, моргать было легко и наш алгоритм действительно лучше. Мы не знаем ответа, потому что не задали вопрос. А стоило бы сначала спросить. Боби не рассказал об этом в книге, и у каждого может быть свой ответ на этот вопрос. Поэтому и надо начинать с человека.

Более того, решение Боби понятно любому. Наше же относится к более сложным и, вероятно, потребует объяснений. И объяснять этот метод будет не Боби. Думать о людях — это важно.

Описанная ситуация выдвигает на первый план еще один необходимый аспект алгоритма. Мы должны ответить на вопрос: легко ли использовать наш алгоритм, не делая ошибок, и останутся ли у людей хорошие впечатления? Это необходимо сделать, даже если алгоритм выполняет компьютер, а люди взаимодействуют с программой. Так мы учитываем и алгоритма Подобная в конечном итоге должна включать тестирование решений с участием реальных людей. И чем быстрее это делается, тем лучше.