использование функции heuristi c в альфа-бета-обрезке - PullRequest
0 голосов
/ 19 апреля 2020

Как решает алгоритм heuristi c, решая алгоритм альфа-бета-отсечения, сократить как можно больше узлов? Если в худшем случае ни один узел не был обрезан, как его обрезать, используя функцию heuristi c?

1 Ответ

0 голосов
/ 20 апреля 2020

В альфа-бета-обрезке в обширной игре для двух игроков (то есть в дереве игр) у вас всегда есть нижняя и верхняя границы при поиске из альфа-бета-обрезки. Эти границы, по сути, говорят, что интересны только значения между этими границами - все остальное будет обрезано предком в дереве.

Если у вас есть heuristi c, который является гарантированной нижней / верхней границей на значение всех дочерних элементов данного состояния, вы можете проверить это в отношении границ для текущего состояния. Если heuristi c говорит, что значение всех будущих состояний гарантированно будет больше или равно верхней границе (или меньше или равно нижней границе), то вы можете немедленно обрезать и остановить поиск.

Например, предположим, что максимальный игрок находится в состоянии с alpha=-10 и beta = 3, а ваш heuristi c говорит h(s) >= 5. Затем вы можете немедленно обновить alpha до 5. Поскольку alpha >= beta, вы можете обрезать и сразу же вернуться. При одинаковых значениях альфа / бета в минимальном узле вам понадобится ваш heuristi c, чтобы сказать, что h(s) <= -10 для возможности сокращения.

Альфа-бета-сокращение может уменьшить размер дерева b^d до b^(d/2). С идеальным heuristi c вы можете существенно уменьшить размер дерева до d. То есть ваш heuristi c может немедленно отключить всех оставшихся детей в каждом штате. На практике вы не сможете сделать это хорошо. Но heuristi c может значительно уменьшить размер поиска поверх альфа-бета-обрезки.

...