Re: [computer-go] representing liberties
How do these link list of liberties and array of liberties variants work? Are they sorted lists/arrays? I considered bitmaps but it seemed in many ways a bit wasteful i.e. in most cases for a given group the bitmap probably is extremely sparse. Also if you are trying to identify individual bits I cannot think of any techniques to do this quickly. --- On Sat, 8/15/09, w...@swcp.com w...@swcp.com wrote: From: w...@swcp.com w...@swcp.com Subject: Re: [computer-go] representing liberties To: computer-go computer-go@computer-go.org Date: Saturday, August 15, 2009, 10:54 AM I tested bit maps in the cgbg framework, and they perform slower than other techniques. However, I wrote the code in C which does not use the built-in hardware bit tests and sets nor use SIMD to merge or clear sets. If you do it in assembler, bitmaps might work much better. There are various ways that bit test could be combined with other techniques such as linked list. However, as far as I know, these combinations have not been extensively explored. Part of the reason is that the average number of liberties in a chain during an insert (when running MC playouts) is only about 1.3. Michael Wing I've seen bit-maps mentioned many times, but is there any evidence it's faster than a 'traditional' implementation? You can also use board-sized bitmaps. Merging is a trivial OR operation. ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/ ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
[computer-go] Erlang and computer go
I have been considering experimenting with Erlang as a means of prototyping certain aspects of a computer go program and I was curious if anyone has tried this already. How does a system like Erlang compare performance wise to writing something in say C/C++ (fastest) or Java? Thanks in advance, Carter. ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
Re: [computer-go] Erlang and computer go
Thanks both I guess I will stick with C/C++ for now. I have looked at Scala before though not in this particular context. It looks like a pretty compelling language with some pretty nice features (true lambda functions, argument pattern matching among others). JVM performance does concern me however. I do have a followup question but I will make a separate topic of it. --- On Fri, 8/14/09, Vlad Dumitrescu vladd...@gmail.com wrote: From: Vlad Dumitrescu vladd...@gmail.com Subject: Re: [computer-go] Erlang and computer go To: computer-go computer-go@computer-go.org Date: Friday, August 14, 2009, 1:56 PM On Fri, Aug 14, 2009 at 22:16, Carter Chengcarter_ch...@yahoo.com wrote: I have been considering experimenting with Erlang as a means of prototyping certain aspects of a computer go program and I was curious if anyone has tried this already. How does a system like Erlang compare performance wise to writing something in say C/C++ (fastest) or Java? Hi, I have started for some year ago to try to withe an Erlang library to play go, but got distracted by other stuff. Erlang has a lot of nice features, but in this particular instance speed isn't one of them. The main issue is that there are no mutable data structures, so for all processing there will be a lot of copying. This is somewhat simplified, of course, but the conclusion still holds. I don't have any hard numbers, it would depend very much upon the choice of data structure. Erlang would be good at coordinating work done by simple and fast slaves, written in C for example. It would be very appropriate for a distributed engine. The problem here is that the problem of synchronizing a distributed UCT tree hasn't been solvet yet, to my knowledge. regards, Vlad ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/ ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
[computer-go] representing liberties
I have been having difficulties selecting a good representation for liberty sets for strings of stones. I am curious how other people might be doing this. I suspect that for heavier playouts one would like to know not only the count of the liberties but also where precisely they might be relatively quickly(to determine if the group is in atari among other things). ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
Re: [computer-go] representing liberties
So to determine where the last two liberties for a group of stones for example is the obvious method of just doing it to have some method of liberty counting + a exhaustive search to determine the last two liberties for example? --- On Fri, 8/14/09, Don Dailey dailey@gmail.com wrote: From: Don Dailey dailey@gmail.com Subject: Re: [computer-go] representing liberties To: computer-go computer-go@computer-go.org Date: Friday, August 14, 2009, 2:33 PM On Fri, Aug 14, 2009 at 5:13 PM, Carter Cheng carter_ch...@yahoo.com wrote: I have been having difficulties selecting a good representation for liberty sets for strings of stones. I am curious how other people might be doing this. I suspect that for heavier playouts one would like to know not only the count of the liberties but also where precisely they might be relatively quickly(to determine if the group is in atari among other things). Simple is best, until you know EXACTLY what you will want to do and how often you will need to do it. Something pretty simple that I have used in the past is to track each chain and incrementally maintain the liberty count. When you plop a stone down, you have to look at only 4 points to see which group if any it belongs to, or if it connects 2 or more groups. And you can update the liberty counts of all affected groups very quickly. Where there is a capture, you must do considerably more work - but captures represent only a small fraction of the moves. Small captures are more common than large captures, but they require little work. - Don ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/ -Inline Attachment Follows- ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/ ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
Re: [computer-go] gtp which version to implement?
Thanks all for the input. --- On Wed, 7/15/09, Don Dailey dailey@gmail.com wrote: From: Don Dailey dailey@gmail.com Subject: Re: [computer-go] gtp which version to implement? To: computer-go computer-go@computer-go.org Date: Wednesday, July 15, 2009, 9:39 AM On Wed, Jul 15, 2009 at 9:41 AM, Carter Cheng carter_ch...@yahoo.com wrote: Where can I find information on these bridging protocols or are libraries provided for this (to the 9x9 19x19 servers)? The CGOS protocol is pretty easy to decode from the cgos client script which is written in TCL. Even if you don't know tcl you can learn the protocol easily from the script. However, there is no need to know the CGOS protocol if your engine speaks GTP. GTP is designed to be a universal protocol for GO engines - if your engine knows GTP it should be able to use all kinds of tool including GOGUI, a nice user interface for GO programs. The cgos client program speaks to the server in it's language and to your program using GTP. See how simple life can be? The CGOS protocol is about to change just slightly as I will be soon upgrading the server, but an updated client will be provided so that will require no change on your part. (And the old CGOS prototol will still work but with some restrictions.) - Don --- On Wed, 7/15/09, Hellwig Geisse hellwig.gei...@mni.fh-giessen.de wrote: From: Hellwig Geisse hellwig.gei...@mni.fh-giessen.de Subject: Re: [computer-go] gtp which version to implement? To: computer-go computer-go@computer-go.org Date: Wednesday, July 15, 2009, 2:44 AM On Wed, 2009-07-15 at 11:24 +0200, Urban Hafner wrote: Carter Cheng wrote: Thanks everyone for the help thus far. I have been looking at the GTP protocol page and I am curious which version of the protocol I should try to implement if I want to communicate with the servers. Should I be looking at the GTP 2.0 draft version? You should implement (part of) the draft. It's widely used nowadays. I'm not sure if there's any server out there that uses the old version. Just to be clear on this point: GTP is not a server protocol, but a protocol between a controller and an engine. If you want the engine to connect to a server, there is still a bridge needed, which communicates with the engine through GTP and with the server through whatever protocol the server is speaking. Hellwig ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/ ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/ -Inline Attachment Follows- ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/ ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
[computer-go] gtp which version to implement?
Thanks everyone for the help thus far. I have been looking at the GTP protocol page and I am curious which version of the protocol I should try to implement if I want to communicate with the servers. Should I be looking at the GTP 2.0 draft version? Thanks in advance, Carter. ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
Re: [computer-go] gtp which version to implement?
Where can I find information on these bridging protocols or are libraries provided for this (to the 9x9 19x19 servers)? --- On Wed, 7/15/09, Hellwig Geisse hellwig.gei...@mni.fh-giessen.de wrote: From: Hellwig Geisse hellwig.gei...@mni.fh-giessen.de Subject: Re: [computer-go] gtp which version to implement? To: computer-go computer-go@computer-go.org Date: Wednesday, July 15, 2009, 2:44 AM On Wed, 2009-07-15 at 11:24 +0200, Urban Hafner wrote: Carter Cheng wrote: Thanks everyone for the help thus far. I have been looking at the GTP protocol page and I am curious which version of the protocol I should try to implement if I want to communicate with the servers. Should I be looking at the GTP 2.0 draft version? You should implement (part of) the draft. It's widely used nowadays. I'm not sure if there's any server out there that uses the old version. Just to be clear on this point: GTP is not a server protocol, but a protocol between a controller and an engine. If you want the engine to connect to a server, there is still a bridge needed, which communicates with the engine through GTP and with the server through whatever protocol the server is speaking. Hellwig ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/ ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
[computer-go] memory management for search trees(basic question)
This is something I have been curious about since I am somewhat new to writing code in languages which require explicit memory management (as opposed to have some sort of garbage collector do it for you). The question is how do most programs manage memory w.r.t. the search nodes? Is the memory preallocated in advance or is there some strategy to grow the space required as the nodes accumulate during a search? Thanks in advance, Carter. ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
Re: [computer-go] memory management for search trees(basic question)
Thanks for the replies. I will most likely be writing in C++ given the additional abstraction mechanisms and my current lack of understanding of preprocessor #define type tricks. I remember reading about Zobrist's hash functions in some old messages on the list and some papers on the GHI issue but at this point I am still just implementing the basic light playout simulation code so I haven't quite gotten here yet. I wonder concerning GHI for doing searches in go that you could in principle encode extra information into the position key which could be use to discriminate board positions which appear to be the same but differ in crucial ways. Thanks everyone for the help. --- On Tue, 7/14/09, Don Dailey dailey@gmail.com wrote: From: Don Dailey dailey@gmail.com Subject: Re: [computer-go] memory management for search trees(basic question) To: computer-go computer-go@computer-go.org Date: Tuesday, July 14, 2009, 8:32 AM There has been quite a few descriptions on this forum about how people do this. I am guessing, but I think most of the authors allocate a pool of memory and manage this themselves. Are you writing in C? In C you can declare a fixed size record (called a struct) and just make an array of them. This is what my program does. When I need new nodes I just use the next ones available and a counter keeps track of where I am. It's a little more complicated if you also need to remove nodes. I don't do this. When a new search begins I can just start over again. I think there are a lot of variations of what people do. Perhaps a better way is to use a hash table instead of a tree. It's still a tree of course but structured different. With a hash table a zobrist key is used to index into a hash table. So you can build your tree this way, again using a fixed pool of nodes or whatever hash table method you need to. One advantage of a hash table is that with transpositions you can resuse information that has already been computed - but one disadvantage is that you have to deal with Graph History Interaction (GHI.) I think most program ignore GHI for the most part (in a similar way that computer chess programmers ignore the problem) but I'm not real sure on this one. You can also use malloc and free to allocate space for nodes - but it is well known that this can be challenging for writing bug free programs. I have found that you can almost always avoid it and I personally only use it for top level data structures - for instance I might allocate my initial fixed pool of nodes this way (and so it can be user configurable) but I won't allocate and free individual nodes. Also, if you use malloc and free you will surely see a slowdown. Another option is to use the Hans Boehm garbage collector, a library you simple link to in your C programs. It will do the automated garbage collection for you - but I think you will see a slowdown and I think there is a memory overhead penality for using this as it probably needs working space. - Don On Tue, Jul 14, 2009 at 11:06 AM, Carter Cheng carter_ch...@yahoo.com wrote: This is something I have been curious about since I am somewhat new to writing code in languages which require explicit memory management (as opposed to have some sort of garbage collector do it for you). The question is how do most programs manage memory w.r.t. the search nodes? Is the memory preallocated in advance or is there some strategy to grow the space required as the nodes accumulate during a search? Thanks in advance, Carter. ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/ -Inline Attachment Follows- ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/ ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
Re: [computer-go] memory management for search trees(basic question)
I have a good number of C++ books but strangely though I use to own Meyers' first 2 books I have sort of misplaced them. Perhaps I should get a couple new copies. I will study the Boost Pool source and see what I can glean from it. The only custom allocator design I have on hand in a book is the one in Modern C++ Design. Thanks. --- On Tue, 7/14/09, Darren Cook dar...@dcook.org wrote: From: Darren Cook dar...@dcook.org Subject: Re: [computer-go] memory management for search trees(basic question) To: computer-go computer-go@computer-go.org Date: Tuesday, July 14, 2009, 4:05 PM Thanks for the replies. I will most likely be writing in C++ ... If you've not already, rush out and buy Effective C++ by Scott Meyers. Item 10 shows you a memory pool, items 1..9 and 11..50 will also come in useful. As will More Effective C++, and Effective STL. Boost has a memory pool library (*). I use boost/detail/quick_allocator.hpp (and if you are familiar with Boost, the detail/ means an unsupported library whose interface may change without warning) which was quickest as long as I disabled thread support. If you are planning to have multiple threads share the same memory pool I suggest the main boost pool library (*), as I'm sure they've taken care of the issues, while never losing sight of efficiency. Darren *: http://www.boost.org/doc/libs/1_39_0/libs/pool/doc/index.html -- Darren Cook, Software Researcher/Developer http://dcook.org/gobet/ (Shodan Go Bet - who will win?) http://dcook.org/mlsn/ (Multilingual open source semantic network) http://dcook.org/work/ (About me and my work) http://dcook.org/blogs.html (My blogs and articles) ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/ ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
[computer-go] Basic question concerning the edges of the board
Hi, I have again been considering trying my hand at implementing a simple go program. The question I have pertains to checking for the edge of the board in capture situations and so on. For a modern CPU (given what limited information I have on this) the extra branches might result in pipeline stalls if I am constantly checking if values are in range. Is it best to extend the size of the board to say 21x21 to somehow avoid these sorts of checks? Or are the relative cost of these branches negligible in the scheme of things? Thanks in advance, Carter. ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
Re: [computer-go] Basic question concerning the edges of the board
Thanks all for the replies. I am not sure I quite get the 20x21+2 idea but I will take a look back in the archives. Does anyone remember roughly when it was posted to the list? Thanks again, Carter. --- On Mon, 7/13/09, Peter Drake dr...@lclark.edu wrote: From: Peter Drake dr...@lclark.edu Subject: Re: [computer-go] Basic question concerning the edges of the board To: computer-go computer-go@computer-go.org Date: Monday, July 13, 2009, 9:08 AM As in LibEGO, if you define the off-board points to be both black AND white, finding captures requires fewer branches. Peter Drakehttp://www.lclark.edu/~drake/ On Jul 13, 2009, at 8:48 AM, David Fotland wrote: I use one dimensional arrays for speed (to avoid a multiply by 21). Old Many Faces code uses arrays of 363 (361 points, pass, and null-point). The smallest possible arrays were required to run under 500 KB total memory. I avoided edge checks by having a set of small offset arrays (with 2, 3, or 4 offsets), chosen by the board. My MCTS code uses single dimension arrays with size suggested by Mark Boon, from Goliath, 20 * 21 + 2. This is enough to have points off the edge on all sides and diagonals. David -Original Message- From: computer-go-boun...@computer-go.org [mailto:computer-go- boun...@computer-go.org] On Behalf Of Carter Cheng Sent: Monday, July 13, 2009 8:36 AM To: computer-go@computer-go.org Subject: [computer-go] Basic question concerning the edges of the board Hi, I have again been considering trying my hand at implementing a simple go program. The question I have pertains to checking for the edge of the board in capture situations and so on. For a modern CPU (given what limited information I have on this) the extra branches might result in pipeline stalls if I am constantly checking if values are in range. Is it best to extend the size of the board to say 21x21 to somehow avoid these sorts of checks? Or are the relative cost of these branches negligible in the scheme of things? Thanks in advance, Carter. ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/ ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/ -Inline Attachment Follows- ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/ ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
Re: [Fwd: Re: [Fwd: Re: [computer-go] Computer Olympiad registration reminder: 11 days left]]
Thanks Remi. Are standard accommodations being provided by the site organizers or will we have to for the most part make our own arrangements? I guess I have a few more days to decide whether or not to submit a basic program which most likely will not win any games given how stiff the competition is. Regards, Carter. --- On Mon, 6/9/08, Rémi Coulom [EMAIL PROTECTED] wrote: From: Rémi Coulom [EMAIL PROTECTED] Subject: [Fwd: Re: [Fwd: Re: [computer-go] Computer Olympiad registration reminder: 11 days left]] To: computer-go computer-go@computer-go.org Date: Monday, June 9, 2008, 1:47 AM Some answers by the organizers. Rémi___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/ ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
Re: [computer-go] batch size and impact on strength
I think I being was a bit unclear here. By UCT I meant the combination of UCT+Simulation. I am just curious why simulation based methods of evaluation are thus far found to be superior (are they on 19x19?) to traditional bots which have a different form of evaluation function for a given position. It would seem that simulation based methods of arriving at a scoring function for the current position (playing out to the end) might be quite inefficient especially on 19x19 where it seems to me on average the game lasts about 400-450 moves. Heavy playouts from this viewpoint are an attempt to improve the evaluation function over the uniformly random light playout. As for UCT itself perhaps I dont still completely understand this algorithm but is a full episode or simulation required for it's use? or are there related family of algorithms which operate on trees like UCT does but grows them asymmetrically given some confidence bounds on the values returned by the heuristical positional evaluation function? Perhaps my understanding of Mogo from the thesis is incorrect. From a certain standpoint it makes very limited usage of heuristics and seems to rely solely several published details (in the thesis): 1) UCT+simulation 2) learned pattern weights via self-play using TD(lambda). 3) Proximity heuristics. (which is something I do not quite understand on a deep level as to why it improves play). 4) RAVE knowledge recycling between trees. 5) The dragon heuristic. The first two can be viewed as online and offline learning. 3) 5) to me incorporate some domain knowledge and 4) perhaps some but it seems to perhaps work in games which have combinatorial properties and perhaps is more broadly applicable. Obviously there are probably alot of unpublished details. Such as the use of a simple ladder search (as you indicated your program Valkyria does) and perhaps many other enhancements which we do not know about. But from Sylvain's description it seems that the amount of domain knowledge is limited and that the statistical learning procedures dominate is this a misinterpretation/misrepresentation? ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
Re: [computer-go] batch size and impact on strength
Thanks for the reply. 2) learned pattern weights are not learnt through TD(lambda). RLGO is not used in mogo. It was used a long time ago. Hand-designed heuristics are much more efficient (in particular after heavy cluster-based tuning of coefficients). I am not entirely sure what you mean here by tuning coefficients do the heuristics in question require some form of parameterization? How are these parameters tuned? 3) holds in mogo, and in all efficient Monte-Carlo based techniques. This is particularly important, as seemingly knowing the last point if important for a correct evaluation of a position in the case of bounded computational resources. By the way, this might be true for humans, also. I'm afraid it's difficult to find sufficiently many human players and situations for organizing an experiment about that :-) This seems to be the case and I still do not really on some level understand why. Since with the chinese go rules the board should be effectively stateless (exempting ko information) all the information be contained in the the current position. Why additional information is needed i.e. an annotation of the last played move is required on some level is a mystery to me. 4) The rave heuristic only migrates informations from one node to nodes above that node - never to brothers, cousins, sons, and so on. Many attempts have been done here and elsewhere around that without success. By the way, parallelizations (both multi-core and MPI) are *very* efficient. The use of huge clusters could probably give much better results than the current limit of mogo (between 1k and 1d on KGS with 64 quad-cores and myrinet switch). This is obviously quite an impressive feat. However it is also on some level a bit disappointing to me that it will be sometime before we see strong desktop programs since the computational resources required is somewhat prohibitive. Another point which was not in the thesis of Sylvain and which is also central is the use of patterns in the tree. This is used since a long time in CrazyStone and Mango, we are currently developping this part in MoGo, and this is quite efficient (but involves tedious tuning of several parameters). I am sure I understand the distinction here between patterns in the tree and patterns used in the heavy playouts. I guess by this you mean they are not the same thing. I am in general basically curious how tuning of parameters occurs i.e. how you fit the parameters in a given situation if things like reinforcement learning are not used (which my understanding is is sort of an automated procedure for fine tuning various parameters in the system). Regards, Carter. ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
Re: [computer-go] 10k UCT bots
How do LD modules generally function? Is this discussed in the literature somewhere? The only open source LD module I am aware of is the one in GNU-go and I am not certain how good or bad it is since my own playing strength isn't that good. I have found some papers on this topic but most do not go into much detail on how they are evaluating LD and most just discuss performance issues and general algorithmic approaches (like proof-number-search). Regards, Carter. ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
Re: [computer-go] a few more questions
Thanks for the help with this. I suspect I will go directly for a heavy playout implementation and avoid writing some of the trickier the light playout code so I probably will be implementing this soon. ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
[computer-go] a few more questions
Thanks for all the comments so far. Hopefully you don't mind a few more questions. 1) Do UCT bots check for atari and urgency? my understanding was that first generation Mogo did this to some extent IIRC. I am curious if anyone does this it seems like it might be important but so far I cannot think of a fast detection scheme. 2) When generating random variables for the case where the values of placing a stone on different points on the board are different. Are there good ways to throw and determine which point has been selected for the next move by the random player? Thanks again, Carter. ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
Re: [computer-go] Some beginner's questions concerning go bots
Thanks everyone for the responses. My go skills are somewhat limited (only 6-7kyu on KGS) so hopefully I am not belaboring the obvious. I have a few followup questions- 1) What mathematically is a seki? I know this is a local draw but can it be determined statically at some point in all cases using some sort definition without placing stones on the board (i.e. searching). I only know of three cases here- the 1 eye each case with one shared liberty. two shared liberties and the half eye situation. 2) I am guessing hash maps get quite large if they are exhaustive. i.e. (nxn)^3 can quickly become quite big. Or do they tend to be sparsely populated? 3) GTP and time management and scoring after two passes. Are these issues discussed anywhere? Do libraries like Orego and Libgo contain code that already does this which can be used as a reference? Thanks again, Carter. Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
Re: [computer-go] Some beginner's questions concerning go bots
Thanks for the responses. 1) I guess for this seki question I was wondering if it was as easy to define as liveness without seki. The reason I am interested in this is I am curious about absolutely correct scoring functions and whether they currently cope well with advanced seki situations or not. I have been looking at some of the cases listed on the Sensei's Library. A cursory look seems to indicate that they are very difficult to classify- and any seki classifier might need some knowledge of killing shapes. 2) You are correct Jason I transposed the symbols for some reason I actually meant 3^(n^2) but typed it in backwards. 3) Also thanks for the links. I have taken a look at some of the code. I am not sure I will be writing in Java or D and most likely will be implementing the system in something like C++. I am worried about Java's speed since it's interpreted (which still means a x2 slowdown even with the JIT and Hotspot compilation and selective inlining). D I am just not too familiar with I am wondering what advantages it brings over C++. I am primarily concerned about maturity issues. I am not trying to start a discussion on which language is better, but those are my initial impressions. I am primarily interested in creating a very basic go bot at this point and use it for primarily data gathering. I have been curious about certain aspects of game searches and how they apply to go and how reinforcement learning works etc. I figure being a complete beginner at this it will take some time before I have any meaningful insights into how everything works to contribute anything. Regards, Carter. Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
[computer-go] Some beginner's questions concerning go bots
Hi, I have been lurking around in this group for sometime and recently have become interested in perhaps doing some coding and data gathering for constructing a simple go bot. I have a few basic questions I was wondering if people in the group could help me answer- 1) How typically do UCT bots score simulations quickly? I am not too familiar with Chinese scoring rules. 2) How do machines define eyes analytically (mathematically) and are there approximations which are faster to calculate for more traditional or UCT designs (is this information even used for UCT bots?). 3) What sort of algorithm is used to match patterns once you have mined them from some data source? 4) And lastly how does UCT cope with ladders? Thanks in advance, Carter. Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/