I am currently undertaking a project where I need to program AI for Go (the Asian strategy game) and I would like to know, how do I start? I am aware of the many approaches to AI for their applications to Go, such as the neural network, machine learning (supervised learning, etc), the Monte-Carlos method, or knowledge based AI. I am more interested in machine learning however I am short on time as I have about two months to complete it.

I am also considering minimax and alpha-beta pruning with brute force as a compromise in case I don't have enough time to do anything else. I am fully aware that it is not the best way to go about this but if I am short on time then I have no other choice.


AI for GO and Chess is strangely much harder to code than AI for a 1st person shooter for example, mostly because the games are pure strategy and take a remarkable amount of intelligence to play well.

This may not be the answer you are looking for, but I would suggest doing a search in online university library databases such as JSTOR etc, for people that have done dissertations on the subject. Learn from then and try and emulate what they have done at first.

I would also strongly suggest you download a framework for coding GO AI that someone else has made, rather than taking time doing this yourself. I feel pretty certain that such a thing must exist.

ah, here we go (I googled 'japanese "GO" AI framework')


that search also threw up a number of pdf dissertations on the subject. Good luck!


Minimax with alpha-beta pruning is a good start. Then, try to define a search heuristic. This heuristic decides which position to explore during minimax expansion. For example, it can search the "risky" positions before the "safe" ones (fuzzy logic can be used here).

For the machine learning exercise you can define a linear evaluation function for positions, and let your agent learn the best weights.

  • 1
    \$\begingroup\$ Now I understand how minimax + alpha beta works but I have a question. I understand that nodes represent moves on the board and when the game continuee, new nodes can appear. The evaluation function is supposed to evaluate the path with highest value. I am a bit puzzled on deciding which points on the GO board are considered high value and how should I give each position on a board a value? \$\endgroup\$ – user1048606 Jan 23 '12 at 18:48
  • \$\begingroup\$ Yes, this is the heart of the problem, and it is the right thing to be puzzled about. The 'evaluation function' rates the position as good or as bad. I am not a GO player, and I cannot help you there. I suggest you play around with different methods and see what works. A simple method (probably not that effective in GO) is to count the number of pips (material) of the active player. \$\endgroup\$ – Willem Jan 25 '12 at 19:25
  • \$\begingroup\$ Wouldn't minimax be a poor choice as the huge branching factor of Go would mean you could not search very deep at all? \$\endgroup\$ – congusbongus Jul 9 '14 at 2:39
  • \$\begingroup\$ Yes. Minimax is a poor choice for a GO player. But it is a good start for a learning exercise. I am sure the pun was unintended when the question was written, I quote: "I am fully aware that it is not the best way to go" \$\endgroup\$ – Willem Jul 10 '14 at 19:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.