Но это недальновидная стратегия, потому что ход с небольшим количеством переворачиваемых фишек может впоследствии обеспечить существенные преимущества. Поэтому к количеству перевернутых фишек (это число положительное) добавляется оценка эффективности позиции (это число должно быть положительным при выгодной позиции и отрицательным при невыгодной), занимаемой вновь выставляемой фишкой при каждом из возможных ходов. Как показывает опыт игры, наиболее выгодными позициями являются 4 угла доски, которым приписывается эффективность +6. Модули числовых оценок эффективности всех остальных позиций убывают по мере удаления от угла. При этом если ближайший к устанавливаемой фишке угол не занят фишкой своего цвета, то знак эффективности позиций на соседних с ним вертикали и горизонтали отрицательный, поскольку фишки на этих позициях позволяют противнику поставить свою фишку на границу игрового поля или в угол. Расчет эффективности позиций в центре поля не нужен, поскольку они уже заняты в самом начале игры. Расчетная формула дает для них нулевое значение.
Конечно, такой "эвристический" противник имеет довольно средний уровень игры, но это лучше чем никакой. В процессе пробной эксплуатации программы автору удалось найти брешь в изобретенном им алгоритме, которая позволяет человеку обыграть эту программу "всухую". Дело в том, что на начальном этапе игры при одной оставшейся фишке этот алгоритм выбирал неверный вариант. Получающаяся линия из фишек с одной стороны была ограничена фишкой противника, а с другой стороны — свободной клеткой. Это позволяло одним ходом перевернуть все фишки. Для такого случая добавлен анализ содержимого клеток, ограничивающих проверяемую линию. Если клетки с обеих сторон свободны или заняты фишками противника, то вычисленный ранг не изменяется. В противном случае анализируемому ходу приписывается ранг -8. Этот пример учит, что без надлежащей теоретической проработки задачи алгоритм получился "хромым", а проверка фишек на границах линии — это своеобразный "костыль". Он также подтверждает шутку о перманентном наличии ошибок в программе. Впрочем, если вам не понравится этот алгоритм, то при желании вы можете попробовать изобрести и запрограммировать свои функции оценки эффективности хода.
Теория игр дает понятные идеи и точные методы оценки эффективности хода, но они реализуются гораздо более сложными алгоритмами. Для того класса игр, к которым принадлежит реверси, должен быть использован минимаксный метод. Суть метода сводится к тому, что необходимо просчитать функцию выигрыша (в данном случае разность количества своих и чужих фишек) после всевозможных сочетаний ходов, начинающихся с оцениваемого хода. Количество просчитываемых вариантов может быть ограничено по наперед заданному количеству передач хода от одного игрока другому, но для полного решения задачи требуется просчет каждого варианта до конца игры. В качестве оценки эффективности каждого хода выбирается минимальное по всем будущим ходам значение функции выигрыша от текущего хода. Для выбора наилучшего хода выбирается максимальное значение оценки. По-видимому наилучшие из существующих программ игры реверси используют именно такие алго-