Читать книгу "Вычислительное мышление. Метод решения сложных задач - Питер Макоуэн"
Шрифт:
Интервал:
Закладка:
Игра со страницей, на которой напечатан рис. 60, будет нелегкой! Когда настанет ее очередь ходить, делайте, что сказано в инструкциях к рисунку. Потом делайте любой ход. Страница начинает первой и играет крестиками.
Ну что, выиграла страница? Или получилась ничья? Или вам все же удалось обыграть этот листок бумаги?
В лучшем случае (если вы не мухлевали) будет ничья. Удалось ли странице сыграть достойную партию? Она немного разбирается в крестиках-ноликах и действует осмысленно. Как и в игре «Жизнь», для выигрыша здесь тоже требуются тщательно продуманные и проверенные инструкции — знакомый нам теперь алгоритм. Обычно такие инструкции хранятся в памяти компьютера, чтобы он им следовал.
Но компьютеры делают только то, что придумал программист. Если что-то пойдет не так, его действия окажутся не слишком разумны. Мы написали правила, приведенные выше, в расчете на то, что страница будет ходить первой… а если она начнет второй? Попробуете? Так ли умно она играет? Мастерство программиста заключается в том, чтобы написать правила для любой вероятности. Хотите написать хорошие инструкции для игрока 2? Позаимствуйте знания у нашего листка бумаги, и вы будете непобедимы.
Но действительно ли это интеллект? Ведь тут просто выполняются кем-то написанные правила. Может быть, надо обращать внимание на результат. Лист бумаги и правда играет так же хорошо, как лучшие игроки-люди, и он непобедим — по крайней мере когда ходит первым. В более сложных играх, например в шахматах, алгоритмы должны быть более изощренными, но идея остается прежней. Для этого алгоритма человек разработал точную последовательность ходов. Однако шахматы слишком сложны, чтобы заранее определить все необходимые для победы правила. Поэтому компьютерам-шахматистам необходим алгоритм, указывающий, как прийти к победе самостоятельно.
Сегодня компьютеры обыгрывают в шахматы гроссмейстеров. Раньше мы считали, что шахматы — самый сложный тест для компьютерного интеллекта. Однако если у вас есть быстрая и достаточно изощренная программа плюс достаточный объем памяти, чтобы компьютер мог просчитать тысячи и тысячи возможных комбинаций для любой позиции на доске, то следует выбрать ту, которая открывает возможности для наилучших позиций — и таким образом позволяет обыграть человека. Это называется поиском по дереву. Мы использовали подобный алгоритм при разработке инструкции для безупречной партии в крестики-нолики. Однако в шахматах слишком много вариантов, чтобы подобным образом охватить все. Шахматные компьютеры смотрят на много ходов вперед, но не до конца игры. Хороший шахматист-человек не просто просчитывает абсолютно все ходы — он ищет знакомые комбинации и формирует определенную последовательность. Он играет путем сопоставления с образцом.
Существуют и более сложные настольные игры, которые ставят перед компьютерами новые задачи, — например, древняя игра го. В отличие от шахмат, го — популярная стратегическая игра для двоих, у которой простые правила и в которую играют на поле-сетке 19 на 19. Однако число возможных сочетаний на доске огромно, и, чтобы провести такой анализ, о котором мы говорили выше, нужно просчитать число ситуаций, превышающее число атомов во вселенной. Компьютеры не могут выиграть в го, как выигрывают в шахматы.
Поэтому исследователи подошли к го иначе, чем к шахматам, для которых компьютер запрограммировали именно на хорошую игру. Чтобы победить мастера го, компьютерную программу AlphaGo снабдили мощным обучающим алгоритмом общего назначения, в котором использовали уже рассмотренные нами методы. Алгоритм AlphaGo извлекал победные комбинации из сыгранных партий и совершенствовал навыки с каждым выигрышем или поражением. В итоге в 2015 г., многому научившись, AlphaGo выиграла у профессионального игрока в го в турнире из нескольких партий. В 2016 г. она победила одного из лучших мастеров мира Ли Седоля в турнире из пяти партий со счетом 4 : 1. Это еще один успех на счету искусственного интеллекта, который играет в игры.
Компьютер играет и в другие типы игр без доски, например в покер. Предназначенные для этой игры покерные боты могут выиграть у человека, но им приходится иметь дело с иным типом игровой сложности. В отличие от шахмат и го, где все на виду, покер — игра с неполной информацией. Вам неизвестно, какие карты есть у других игроков и какие карты сдадут. Покерные боты часто обращаются к вероятности, чтобы сделать наиболее верную догадку, — почти как искусные игроки. Исследования в этой области помогают ученым понять, как мы, люди, справляемся с риском и принимаем решения.
Совершенствуем игру
Четко описанные наборы правил для ИИ вроде нашего алгоритма для крестиков-ноликов постоянно возникают в настоящих играх. Часто они стоят за компьютерными версиями настольных игр, в которые играют против компьютера. В многопользовательских играх бывают так называемые «несобственные персонажи» (за которыми не стоят игроки). В них интегрированы правила для искусственного интеллекта, контролирующие их взаимодействие с настоящими игроками, что делает игровой процесс интересным и достоверным. Также ИИ часто следит за показателями игроков-людей, чтобы игра была достаточно сложной и интересной. В зависимости от этого, например, выбирается уровень сложности. Иногда искусственный интеллект скрыт и решает другие задачи — например, выясняет, на какой телефон и экран какого размера загружается приложение, или проверяет, достаточно ли хорошо работает сетевое соединение. Еще он фиксирует, насколько хорошо справляются игроки, какие роли они выбирают чаще всего и реже всего, по каким причинам они прекращают игру и что оказывается слишком трудным для большинства игроков. Все эти данные позволяют разработчикам адаптировать игровой процесс к потребностям и повысить объем покупок в игре.
Как выиграть в «Бусы, хлеб, баню»
Давайте вернемся к нашей игре. Проследить, какие слова выиграют, довольно сложно, если не знать один трюк. Разместите слова в квадрате, как показано на рис. 61 (проследите, чтобы противник этого не увидел). Вычеркивайте слова по ходу игры, используя X для своих ходов и O — для ходов другого игрока.
Сыграйте несколько партий. Теперь гораздо легче решить, куда двигаться. Если у вас три слова на одной линии, то окажется, что есть и три одинаковые буквы. Если у противника любые два слова в одной линии, то нельзя допустить, чтобы он поставил туда третье. Теперь вы просто играете в крестики-нолики, а ваш противник режется в «Бусы, хлеб, баню». Это абсолютно одинаковые игры — на победу работает один и тот же принцип!
Расположение слов в квадрате играет важную роль. Слова с одной и той же буквой стоят в одну линию. Это значит, что, выбирая три слова с одной буквой, вы ищете линии (визуальный образец), а не читаете слова. Если вы отлично умеете играть в крестики-нолики (используя инструкции, то есть алгоритм, приведенный выше), то в игре «Бусы, хлеб, баня» вам тоже не будет равных. Один алгоритм выигрывает в обеих играх.
Итак, мы провернули трюк с вычислительным мышлением, который использовали в головоломке с экскурсоводом. Мы определили, что, если изменить представление, задача окажется такой же, как уже решенная. В этом случае берут решение из предыдущей задачи и применяют его к новой. Задачи обобщают до одного уровня, а значит, и решения тоже.
Внимание!
Сайт сохраняет куки вашего браузера. Вы сможете в любой момент сделать закладку и продолжить прочтение книги «Вычислительное мышление. Метод решения сложных задач - Питер Макоуэн», после закрытия браузера.