Google
 

Шашисту на заметку

Login





 


 Забыли пароль?
 или новый пользователь? Зарегистрируйся!

Кто с нами

Пользователей:  Зарегистрированные
подключено  retepka  

В записную книжку


Новая тема   Ответить
Предыдущая тема Версия для печати Войти и проверить личные сообщения Следующая тема
Автор Сообщение
AlexanderS
Тема сообщения:   СообщениеОтправлено: Мар 04, 2007 - 01:58 AM



Зарегистрирован: Авг 29, 2002
Сообщений: 225
Откуда : Якутск
NS писал(а):
Завтра с утра сделаю.
Чтоб нормально сравнить нужно чтоб дамочные взятия нескольких шашек по-прямой одинаково работали. У меня всегда считается что это одно взятие.

То есть черные b2,g7
Дамка a1 имеет только одно взятие. a1:b2:g7:h8

У меня считаются за разные.
Поэтому сравнивать можно только с Дамирой Smile Кстати у них бразильские вроде есть, надо будет спросить.
Боюсь поиск дубликатов замедлит генерацию, поэтому не стал делать, хотя не пробовал. Может и не сильно, коснется только взятий где несколько шашек снимаются, а таких не так уж много... Но все равно даже проценты терять не хотелось. Сейчас у меня похоже самый быстрый генератор в шашки Laughing
 
 Профиль пользователя отправить личное сообщение WWW ICQ 
Ответить с цитатой Наверх
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
Стоклетки очень интересны, у меня два генератора разные цифры выдают и не знаю в каком ошибку искать...
И вообще - делай стоклетки, а то сравнивать не с чем ;)
 
 Профиль пользователя отправить личное сообщение WWW ICQ 
Ответить с цитатой Наверх
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
Откуда : Санкт-Петербург
Я по почте напишу. Smile
В форуме приведу результаты скорости на начальной позиции, и на позиции шесть дамок против шести дамок (на Дамках ускорение должно быть намного сильнее)
 
 Профиль пользователя отправить личное сообщение  
Ответить с цитатой Наверх
Kallisto
Тема сообщения:   СообщениеОтправлено: Авг 26, 2006 - 08:22 AM



Зарегистрирован: Авг 18, 2003
Сообщений: 731

Скорее всего проверку лучше совместить.
Если использовать битборды, то не знаю. Там проверяется взятия простых за несколько логических операций без каких-либо проходов.

У меня проще всего. В начале генерируем взятия. Если их нет, значит нет. Чего еще напрягаться?

Расскажи про свои два метода, а то ничего непонятно.
 
 Профиль пользователя отправить личное сообщение Послать e-mail WWW  
Ответить с цитатой Наверх
NS
Тема сообщения:   СообщениеОтправлено: Авг 26, 2006 - 08:11 AM



Зарегистрирован: Авг 22, 2006
Сообщений: 614
Откуда : Санкт-Петербург
Я изобрел-что-то или это было известно до меня?
//
Что проверку на наличие взятий можно сделать вместе с генерацией ходов, и причем в двух варинатах - при ОДНОРАЗОВОМ обращении к каждому полю доски (но замедляя make/unmake), либо в два прохода, не замедляя make/unmake (во втором случае так-же быстро определяется факт наличия взятий Дамки)?
 
 Профиль пользователя отправить личное сообщение  
Ответить с цитатой Наверх
NS
Тема сообщения:   СообщениеОтправлено: Авг 25, 2006 - 01:44 PM



Зарегистрирован: Авг 22, 2006
Сообщений: 614
Откуда : Санкт-Петербург
ОК. Попробую сделать 32-битный бибоард. Smile
 
 Профиль пользователя отправить личное сообщение  
Ответить с цитатой Наверх
NS
Тема сообщения:   СообщениеОтправлено: Авг 25, 2006 - 01:17 PM



Зарегистрирован: Авг 22, 2006
Сообщений: 614
Откуда : Санкт-Петербург
В шахматах - один раз написал и больше не трогал. Только сортировки добавлял. Perft не пробовал (в шахматах)
Насчет БитБоардов в шашках думал - Надо 64-мя битами представлять, иначе очень неудобно.
 
 Профиль пользователя отправить личное сообщение  
Ответить с цитатой Наверх
Kallisto
Тема сообщения:   СообщениеОтправлено: Авг 25, 2006 - 12:58 PM



Зарегистрирован: Авг 18, 2003
Сообщений: 731

Может тебе битборды попробовать? Говорят в шашках они рулят. Ведь на шашечной доске только 32 поля.
 
 Профиль пользователя отправить личное сообщение Послать e-mail WWW  
Ответить с цитатой Наверх
Kallisto
Тема сообщения:   СообщениеОтправлено: Авг 25, 2006 - 12:57 PM



Зарегистрирован: Авг 18, 2003
Сообщений: 731

Зачем сразу переписывать? Делай лучше прогу. Там есть вещи поважнее, чем генератор. Ты же шахматный генератор не переписывал по несколько раз. Какой у тебя там результат?
 
 Профиль пользователя отправить личное сообщение Послать e-mail WWW  
Ответить с цитатой Наверх
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

Когда сделаешь?
 
 Профиль пользователя отправить личное сообщение Послать e-mail WWW  
Ответить с цитатой Наверх
NS
Тема сообщения:   СообщениеОтправлено: Авг 25, 2006 - 08:01 AM



Зарегистрирован: Авг 22, 2006
Сообщений: 614
Откуда : Санкт-Петербург
Не получилось плотно посидеть.
Но мой 0x88 из-за большого количества условий (плюс из за этого что вместо одного массива структур сделал структуру массивов)
в начальной позиции делает 1000000 генераций (7000000) Ходов, Без Make/Unmake за 1980 мс. меньше 3500000 позиций в секунду.
Однозначно нужно переписывать. Perft запускать не стал (Генератор за одну сторону, только за белых)

Маленький Тест показал, что 16x16 будет быстрее (чем 0х8Cool.
Плюс - вызов рекурсивной процедуры лучше делать когда уже взятие точно есть - (то есть саму возможность взятия определять в нерекурсивной (основной) процедуре, а продолжать взятие - в рекурсивной) И нужно поменять структуру хранениия списка ходов.
 
 Профиль пользователя отправить личное сообщение  
Ответить с цитатой Наверх
Показать:     
Перейти к:  
Время в формате GMT - 12
Новая тема   Ответить
Предыдущая тема Версия для печати Войти и проверить личные сообщения Следующая тема
PNphpBB2 © 2003-2007 
 
Page created in 1.32839012146 seconds.