2007/7/20, Joshua Shriver <[EMAIL PROTECTED]>:
What kind of data structures do you all use for your engines, in respect to board representation and move generation. I know in chess bitboard, mailbox board[8][8], 0x88 exist all with their pro's and cons. Are there similar concepts for Go?
Below assuming 9x9 Go. There are 2D board (i.e. board[9][9]) and 1D board (board[81]). I heard of people using guard (board[11][11]). The more important issue is representation of connected string. You need that to implement the rule. One well known representation is so-called "next stone array". Scratch array to count liberties can be used. If one only wants to check the capture, so-called liberty edge which is zero if liberty is zero can be counted faster. Many different ways to implement incremental board update. Also ways to handle undo. The most usual way to handle ko seems to be to save a single point the last ko was captured. GNU Go has a comprehensive documentation of its board data structures: http://www.gnu.org/software/gnugo/gnugo_15.html -- Seo Sanghyeon _______________________________________________ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/