Для правильного программирования таблицы транспозиции в рекурсивной функции минимакса для отсеивания повторяющихся ходов можно следовать таким рекомендациям:
- Каждый раз, когда нужно определить лучший ход в заданной позиции, следует проверить, есть ли эта позиция в таблице транспозиций. 3 Если нет, нужно продолжить минимакс как обычно. 3
- Если позиция есть, следует проверить глубину. 3 Если глубина, на которой эта позиция записана в таблицу транспозиций, больше или равна той, на которую ведётся поиск, то можно воспользоваться лучшим ходом, записанным в таблице транспозиций для этой позиции. 3 Если же в таблице позиция записана на меньшей глубине, то она не поможет, так как нужно искать глубже. 3
- При добавлении позиции в таблицу нужно убедиться, что там нет той же позиции на меньшей глубине. 3
- Полезным решением будет добавить в транспозицию свойство isOnly, которое определяет, является ли найденный ход единственным. 3 Если ход в позиции единственный, то не важно, на какой глубине он был найден, и его можно использовать вне зависимости от глубины. 3
- Если ход в позиции единственный, можно записывать эту позицию в таблицу транспозиций как проанализированную с глубиной БЕСКОНЕЧНОСТЬ. 3
Для инициализации таблицы транспозиции можно использовать хэширование по Зобристу, которое позволяет коротко представлять позицию конечной игры в памяти и быстро отличать одну позицию от другой. 1