| Автор |
Сообщение |
AlexanderS |
|
Тема сообщения:
Отправлено: Мар 04, 2007 - 01:58 AM
|
|
Зарегистрирован: Авг 29, 2002
Сообщений: 225
Откуда : Якутск
|
|
|
NS писал(а):
Завтра с утра сделаю.
Чтоб нормально сравнить нужно чтоб дамочные взятия нескольких шашек по-прямой одинаково работали. У меня всегда считается что это одно взятие.
То есть черные b2,g7
Дамка a1 имеет только одно взятие. a1:b2:g7:h8
У меня считаются за разные.
Поэтому сравнивать можно только с Дамирой Кстати у них бразильские вроде есть, надо будет спросить.
Боюсь поиск дубликатов замедлит генерацию, поэтому не стал делать, хотя не пробовал. Может и не сильно, коснется только взятий где несколько шашек снимаются, а таких не так уж много... Но все равно даже проценты терять не хотелось. Сейчас у меня похоже самый быстрый генератор в шашки  |
|
|
| |
|
|
|
 |
NS |
|
Тема сообщения:
Отправлено: Мар 03, 2007 - 09:13 PM
|
|
Зарегистрирован: Авг 22, 2006
Сообщений: 614
Откуда : Санкт-Петербург
|
|
Завтра с утра сделаю.
Чтоб нормально сравнить нужно чтоб дамочные взятия нескольких шашек по-прямой одинаково работали. У меня всегда считается что это одно взятие.
То есть черные b2,g7
Дамка a1 имеет только одно взятие. a1:b2:g7:h8 |
|
|
| |
|
|
|
 |
AlexanderS |
|
Тема сообщения:
Отправлено: Мар 03, 2007 - 07:14 PM
|
|
Зарегистрирован: Авг 29, 2002
Сообщений: 225
Откуда : Якутск
|
|
|
NS писал(а):
Perft в Бразильские шашки:
Код:
Depth=10 Nodes= 21566606
В международные значения Perft кому-нибудь интересны?
У меня 21566622/21566642
Стоклетки очень интересны, у меня два генератора разные цифры выдают и не знаю в каком ошибку искать...
И вообще - делай стоклетки, а то сравнивать не с чем ;) |
|
|
| |
|
|
|
 |
NS |
|
Тема сообщения:
Отправлено: Мар 03, 2007 - 03:04 PM
|
|
Зарегистрирован: Авг 22, 2006
Сообщений: 614
Откуда : Санкт-Петербург
|
|
Perft в Бразильские шашки:
Код:
Depth= 1 Nodes= 7
Depth= 2 Nodes= 49
Depth= 3 Nodes= 302
Depth= 4 Nodes= 1469
Depth= 5 Nodes= 7473
Depth= 6 Nodes= 37628
Depth= 7 Nodes= 187302
Depth= 8 Nodes= 907836
Depth= 9 Nodes= 4431847
Depth=10 Nodes= 21566606
Depth=11 Nodes= 105534946
Depth=12 Nodes= 512171742
Depth=13 Nodes= 2483592238
В международные значения Perft кому-нибудь интересны? |
|
|
| |
|
|
|
 |
NS |
|
Тема сообщения:
Отправлено: Авг 26, 2006 - 08:25 AM
|
|
Зарегистрирован: Авг 22, 2006
Сообщений: 614
Откуда : Санкт-Петербург
|
|
Я по почте напишу.
В форуме приведу результаты скорости на начальной позиции, и на позиции шесть дамок против шести дамок (на Дамках ускорение должно быть намного сильнее) |
|
|
| |
|
|
|
 |
Kallisto |
|
Тема сообщения:
Отправлено: Авг 26, 2006 - 08:22 AM
|
|
Зарегистрирован: Авг 18, 2003
Сообщений: 731
|
|
Скорее всего проверку лучше совместить.
Если использовать битборды, то не знаю. Там проверяется взятия простых за несколько логических операций без каких-либо проходов.
У меня проще всего. В начале генерируем взятия. Если их нет, значит нет. Чего еще напрягаться?
Расскажи про свои два метода, а то ничего непонятно. |
|
|
| |
|
|
|
 |
NS |
|
Тема сообщения:
Отправлено: Авг 26, 2006 - 08:11 AM
|
|
Зарегистрирован: Авг 22, 2006
Сообщений: 614
Откуда : Санкт-Петербург
|
|
Я изобрел-что-то или это было известно до меня?
//
Что проверку на наличие взятий можно сделать вместе с генерацией ходов, и причем в двух варинатах - при ОДНОРАЗОВОМ обращении к каждому полю доски (но замедляя make/unmake), либо в два прохода, не замедляя make/unmake (во втором случае так-же быстро определяется факт наличия взятий Дамки)? |
|
|
| |
|
|
|
 |
NS |
|
Тема сообщения:
Отправлено: Авг 25, 2006 - 01:44 PM
|
|
Зарегистрирован: Авг 22, 2006
Сообщений: 614
Откуда : Санкт-Петербург
|
|
ОК. Попробую сделать 32-битный бибоард.  |
|
|
| |
|
|
|
 |
NS |
|
Тема сообщения:
Отправлено: Авг 25, 2006 - 01:17 PM
|
|
Зарегистрирован: Авг 22, 2006
Сообщений: 614
Откуда : Санкт-Петербург
|
|
В шахматах - один раз написал и больше не трогал. Только сортировки добавлял. Perft не пробовал (в шахматах)
Насчет БитБоардов в шашках думал - Надо 64-мя битами представлять, иначе очень неудобно. |
|
|
| |
|
|
|
 |
Kallisto |
|
Тема сообщения:
Отправлено: Авг 25, 2006 - 12:58 PM
|
|
Зарегистрирован: Авг 18, 2003
Сообщений: 731
|
|
| Может тебе битборды попробовать? Говорят в шашках они рулят. Ведь на шашечной доске только 32 поля. |
|
|
| |
|
|
|
 |
Kallisto |
|
Тема сообщения:
Отправлено: Авг 25, 2006 - 12:57 PM
|
|
Зарегистрирован: Авг 18, 2003
Сообщений: 731
|
|
| Зачем сразу переписывать? Делай лучше прогу. Там есть вещи поважнее, чем генератор. Ты же шахматный генератор не переписывал по несколько раз. Какой у тебя там результат? |
|
|
| |
|
|
|
 |
NS |
|
Тема сообщения:
Отправлено: Авг 25, 2006 - 12:10 PM
|
|
Зарегистрирован: Авг 22, 2006
Сообщений: 614
Откуда : Санкт-Петербург
|
|
|
Код:
procedure perft(depth:byte);
var i:byte;mov:moves;
Begin
for i:=1 to genmove(mov) do
Begin
MakeMove(mov,i);
if depth=1 then kol:=kol+1 else perft(depth-1);
UnMakeMove(Mov,i);
end;
end;
8 929905 489 1901
Надо переписывать. |
|
|
| |
|
|
|
 |
NS |
|
Тема сообщения:
Отправлено: Авг 25, 2006 - 09:46 AM
|
|
Зарегистрирован: Авг 22, 2006
Сообщений: 614
Откуда : Санкт-Петербург
|
|
Сейчас начинаю делать. То есть - где-то через два часа будет готов.
(пока неоптимизированный) |
|
|
| |
|
|
|
 |
Kallisto |
|
Тема сообщения:
Отправлено: Авг 25, 2006 - 09:31 AM
|
|
Зарегистрирован: Авг 18, 2003
Сообщений: 731
|
|
|
|
|
 |
NS |
|
Тема сообщения:
Отправлено: Авг 25, 2006 - 08:01 AM
|
|
Зарегистрирован: Авг 22, 2006
Сообщений: 614
Откуда : Санкт-Петербург
|
|
Не получилось плотно посидеть.
Но мой 0x88 из-за большого количества условий (плюс из за этого что вместо одного массива структур сделал структуру массивов)
в начальной позиции делает 1000000 генераций (7000000) Ходов, Без Make/Unmake за 1980 мс. меньше 3500000 позиций в секунду.
Однозначно нужно переписывать. Perft запускать не стал (Генератор за одну сторону, только за белых)
Маленький Тест показал, что 16x16 будет быстрее (чем 0х8 .
Плюс - вызов рекурсивной процедуры лучше делать когда уже взятие точно есть - (то есть саму возможность взятия определять в нерекурсивной (основной) процедуре, а продолжать взятие - в рекурсивной) И нужно поменять структуру хранениия списка ходов. |
|
|
| |
|
|
|
 |
|
|