Re[3]: Вычислительные ресурсы хочу
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 14.08.12 07:45
Оценка:
Здравствуйте, Шебеко Евгений, Вы писали:

M>>Ну я немного копал в сторону шахматного программирования... А так, просто интересно, какие эвристики используются? Ну типа ходов-киллеров, ...

ШЕ>Treat-space search

ШЕ>В отличии от шахмат, здесь есть позиции, на которые надо обязательно реагировать.

В шахматах это техница ФВ (форсированного варианта). Начиная с некоторой глубины дальше считаются только шахи и взятия.

ШЕ>Собственно этот Allis заметил, что люди ищут сначала последовательность вилок, которые приводят к победе,

ШЕ>практически не обращая внимания на ходы противника. Если такая последовательность найдена, то начинают её уже проверять.
ШЕ>Ключевая особенность в том, что для построения последовательности на угрозу отвечают сразу всеми защитными ходами одновременно. Если последовательность всё ещё можно построить, то уже потом угроза анализируется на контратаки.

По сути это и есть NULL-move


ШЕ>У него ещё есть эвристика нулевого хода. Она у него даётся как: если игрок пропускает свой ход, то противник может построить выигрышную

ШЕ>последовательность вилок. Сказано, что типа эта позволяет видеть скрытые угрозы. Если честно, я не допёр как этим пользоваться, поэтому не использую.
ШЕ>Как бы непонятно, ну увидим мы угрозу на ход раньше. Совсем неочевидно, какими ходами её предотвратить. Это может быть ход на то место, откуда угроза разивается или к примеру боковые ходы, которые могут способствовать развитию контратаки.

Наверное пользоваться так: (1) поскольку мы ищем победу крестиков, то эвристику NULL-move имеет смысл выполнять для ноликов; (2) Нолики пропускают ход, и мы ищем атаку со стороны крестиков; (3) В случае, когда есть форсированный вариант, приводящий крестиков к победе, то можно эту последовательность рассматривать как киллер (т. е. при переборе всех возможных ходов ноликов, опровержение начинать с этого варианта). Вообще, alpha-beta очень чувствительна к порядку перебора вариантов.



ШЕ>Блин. Всё равно ничего не понятно получается. В общем сложно объяснить. Для того чтобы было понятно, нужно писать статью и подбирать картинки с примерами.

Все понятно, не переживай

Еще (A) идея Z-orbice. Многие позиции будут повторятся (+симметрии). Хотелось бы построить по позициям какой-нить хэш, чтобы это можно было быстро детектировать. Самая простая идея, построить таблицу, где каждой клетке поля соответствует некоторое число для крестиков (для ноликов соответсвенно). Потом мы делаем две суммы и mod на некоторое простое число. Что позволит быстро находить одинаковые позиции. Конечно, это не покрывает симметрии, но... Еще (B) имеет смысл расспросить данов по поводу теории дебютов, и взять ее за основу. Фактически, в свое время я читал, что в рендзю (запрещены вилки 3x3 и 4x4 черным) с выбором дебюта белыми (после третьего хода белые выбирают, хотят ли они играть черными) результативность составляла 55% в пользу белых. Соотвественно, уже сейчас теории этой игры очень сильно развита. (C) Еще для позиций, для которых не установлен результат, можно прикрутить ОФ для того, чтобы управлять alpha-beta.

Далее, очень сомнительно выглядит цифра 1 600 000 позиций. На моем компе шахматный движок без ОФ легко дает 3 000 000 позиций в секунду на одном ядре. Возможно, можно оптимизировать генерацию ходов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.