Author: Tom Kerrigan
Date: 10:33:14 06/21/00
Go up one level in this thread
On June 20, 2000 at 21:39:01, Robert Hyatt wrote: >On June 20, 2000 at 15:52:53, Tom Kerrigan wrote: > >>On June 20, 2000 at 15:03:48, Robert Hyatt wrote: >> >>>On June 20, 2000 at 14:07:39, Tom Kerrigan wrote: >>> >>>>On June 19, 2000 at 21:32:56, Robert Hyatt wrote: >>>> >>>>>On June 19, 2000 at 20:50:11, John Coffey wrote: >>>>> >>>>>>On June 19, 2000 at 19:48:36, Larry Griffiths wrote: >>>>>> >>>>>>>I have found bitboards to be an even trade-off on my Pentium system. I have to >>>>>>>update about 6 bitboards when a piece moves and this generates a lot of >>>>>>>instructions. I get it back in my IsKingInCheck code so it evens out. I like >>>>>>>to have fast move generation code, but most of my gains have been through >>>>>>>alpha-beta, hash-table, killer-move and movelist ordering etc. >>>>>>> >>>>>>>Larry. >>>>>> >>>>>> >>>>>>Maybe I am too much of a novice, but I don't see yet why I should convert over >>>>>>to bitboards. Is move generation faster? If so, why? My program scans the >>>>>>board and uses simple loops to generate moves. Do you not have to do loops >>>>>>with bitboards? >>>>> >>>>>Not to generate moves, No. You generate all the sliding piece moves with two >>>>>table lookups... >>>> >>>>Hmmm. I do table lookups all over my program, and none of them seem to be >>>>generating any moves... >>>>The fact is that you DO need to loop to generate moves in a bitboard program. >>>>Maybe it's not the same loop, but it's still a loop. >>>> >>>>-Tom >>> >>> >>>Who says so? Ask the Dark Thought guys. >>>Or Slate/Atkin. You only need to loop if you want to take the attack bitmap >>>and turn it into a list of moves. This is not the way _all_ programs operate >>>(chess 4.x, Dark Thought, others, any of which generate a few moves at a time, >>>then take one and search it, without enumerating the other moves.) >>> >>>So loops are something you do (with bitmaps) if you want to, not because you >>>have to. >>> >>>As far as your table lookups not generating any moves, that is a programming >>>issue. Mine do. :) >> >>Maybe your makemove() function can take bitboards as input (i.e., here is a set >>of squares that my pieces can move to) but mine sure can't. >>-Tom > > >You are missing the point. A move generator _can_ emit a single move, which >can be fed into MakeMove(). Read "Chess Skill in Man and Machine", the chess >4.x section. They explain this pretty well. It takes zero loops to emit a >single chess move. You pick the source square. You do two table lookups for >bishops (say) and you have all the target squares it can move to. A single >FirstOne() and you have a <to> square, which is all you need to make the move, >and recursively call Search(). So you end up having to call gen() a mess of times. I don't see how that isn't a loop. -Tom
This page took 0.02 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.