[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: computer-go: unmake move?
Bryan McQuade wrote:
>
> Hi everyone. This is my first post, and I have a question about
> implementation of a method. I am using minimax alpha-beta and am trying
> to develop a fast unmake move method. I am stuck, however, because my Go
> program uses data structures GROUP and INTERSECTION where one of the
> elements of INTERSECTION is the group number of that piece. In trying new
> moves, groups are restructured, requiring me to re-assign group numbers
> all the time. To make matters worse, during the unmake move for minimax,
> I will have to re-assign group numbers when removing a piece from the
> board causes group structures to change. This will have a drastic effect
> on the speed of the minimax search, and I'd like to avoid it if
> possible. Has anyone run into this, and if so, do you have suggestions?
>
> Thanks very much,
> Bryan McQuade
Hello,
On gnugo we use an incremental scheme to maintain groups (we call them
strings)
and liberties. When doing a move register all the modifications
in a stack of couples (address,old value) with a special couple (NULL,0)
as move marker.
To unplay a move we simply scan back the stack until we find the move
marker.
have a look at
http://www.irisa.fr/prive/Tanguy.Urvoy/gnugo/gnugo.html#Incremental%20Board
--
----------------------------------------------------
Tanguy Urvoy Doctorant IRISA
mailto:Tanguy.Urvoy@xxxxxxxxxxxxxxxxx Tel: 02.99.84.25.15
----------------------------------------------------