Предыдущие сообщения на эту тему: минимаксный алгоритм в теории игр , функция оценки в теории игр , Tic-Tac-Toe AI — поиск оптимального хода , альфа-бета-обрезка .
Zobrist Hashing — это функция хеширования, которая широко используется в настольных играх для 2 игроков. Это самая распространенная функция хеширования, используемая в таблице транспозиции. Таблицы транспонирования в основном хранят оцененные значения предыдущих состояний платы, поэтому, если они встретятся снова, мы просто извлекаем сохраненное значение из таблицы транспонирования. Мы рассмотрим таблицы транспонирования в следующей статье. В этой статье мы возьмем пример шахматной доски и реализуем для этого функцию хеширования.
Псевдокод:
// A matrix with random numbers initialized once Table[#ofBoardCells][#ofPieces] // Returns Zobrist hash function for current conf- // iguration of board. function findhash(board): hash = 0 for each cell on the board : if cell is not empty : piece = board[cell] hash ^= table[cell][piece] return hash
Пояснение:
Идея Zobrist Hashing заключается в том, что для данного состояния доски, если в данной ячейке есть фигура, мы используем случайное число этой фигуры из соответствующей ячейки в таблице.
Если в случайном числе больше битов, тем меньше вероятность столкновения хеша. Поэтому 64-разрядные числа обычно используются в качестве стандарта, и очень маловероятно, чтобы хеш-коллизия происходила с такими большими числами. Таблица должна быть инициализирована только один раз во время выполнения программ.
Кроме того, причина, по которой Zobrist Hashing широко используется в настольных играх, заключается в том, что когда игрок делает ход, нет необходимости пересчитывать значение хэша с нуля. Из-за характера операции XOR мы можем просто использовать несколько операций XOR для пересчета значения хеш-функции.
Реализация :
Мы попытаемся найти значение хеш-функции для данной конфигурации платы.
|
Выход :
The hash value is : 14226429382419125366 The new hash value is : 15124945578233295113 The old hash value is : 14226429382419125366
Эта статья предоставлена Akshay L Aradhya . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.
Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- Минимаксный алгоритм в теории игр | Комплект 1 (Введение)
- Минимаксный алгоритм в теории игр | Комплект 2 (Введение в функцию оценки)
- Минимаксный алгоритм в теории игр | Набор 3 (Tic-Tac-Toe AI — Поиск оптимального хода)
- Минимаксный алгоритм в теории игр | Набор 4 (альфа-бета-обрезка)
- Теория игр (игра в нормальной форме) | Набор 6 (графический метод [2 XN] Game)
- Теория игр (игра в нормальной форме) | Набор 7 (графический метод [MX 2] Game)
- Теория игр (игра в нормальной форме) | Набор 3 (игра со смешанной стратегией)
- Теория игр (игра в нормальной форме) | Набор 4 (Доминирование-Чистая стратегия)
- Теория игр (игра в нормальной форме) | Набор 5 (Доминирование-Смешанная стратегия)
- Теория игр (нормальная форма игры) | Комплект 1 (Введение)
- Комбинаторная теория игр | Комплект 2 (Игра Нима)
- Дилемма заключенного в теории игр
- Комбинаторная теория игр | Комплект 1 (Введение)
- Комбинаторная теория игр | Набор 4 (Теорема Спраг — Гранди)
- Комбинаторная теория игр | Набор 3 (Grundy Numbers / Nimbers и Mex)
0.00 (0%) 0 votes