Computer Systems Project Proposal Justin Park I. Title: Development of a Better Algorithm For Go II. Project Statement: A research into better Go algorithms, with a possible use of machine learning for decisions oriented towards certain players. III. Purpose: The purpose of this project is to improve on current designs of algorithms for the ancient Chinese board game, Go. Currently, even the best of algorithms are not even a match for professional players and even experienced amateurs. This could be a result of the numerous number of play possibilities (19^2)!, or because of the lack of research. I think that research into this area could produce results as well. There are advantages that a computer has over humans, particularly in the counting of freedoms surrounding stones. Every year, a competition is held to determine the best Go AI. If the results of the study prove to be effective, the Go community would be interested. IV. Scope of Study: The main objective of this project is to be able to develop a Go AI that will be able to play a full 19x19 game with another player. I may first start off with a smaller board size to get a feel for the techniques involved. There are open source game interfaces that I can implement on the AI to reduce coding on areas that have already been worked on. An essential area of research will be to not only further my understanding of the game and certain strategies through books, magazines, websites, consulting with players with more experience, and also general game play. The AI will encompass existing theories developed by humans with the added advantage of being able to calculate future steps. I will also have to study the mechanics of machine learning and figure out whether this will be a useful area to venture in, especially in such a complicated board game. The main issue in this area is figuring out whether it would be too complicated to match up certain types of game strategies with others. V. Background and review of current literature/research in this area. In this day, Go is the next area for artificial intelligence in board games. Go is the new stage after Deep Blue II beat World Champion Gary Kasparov. The differences between Go and Chess are significant in terms of how one move can be judged by a computer. Go is a much larger game than Chess, with possible moves being anywhere on the 19x19 board that is not surrounded by another the opponent's territory. Another reason why developing an AI for Go is difficult is because moves early on in the game often effect the situation of a player several moves later. Brute forcing is no longer an option as it was with Chess. Instead, the approach to AI will be to model human thought, rather than calculat ing the weight of every possible move. VI.Procedure and Methodology. Although my procedure isn't definite for sure, my general plan will be to find or create some simple interface of the Go board game, develop the AI with continued research on the Go game, and then test the AI against other available AIs. The programming language will be in Java, Python, or C++ as those are the languages I'm most familiar with. Graphics is not a big issue. All that is really required are lines and colored circles. The interface can also be supplied by preexisting code available on the internet (http://sourceforge.net/projects/gogui). Data collected through runs against other AI's or even human players will be clear because not only is their a simple win or lose piece of data, but also the margin of victory or defeat. Machine learning can be tested by repeated attempts against the same player. VII. Expected Results & Value to Others The results can be probably be presented in graphs rating my AI algorithm to others. Future researchers may be able to use published data to help develop their algorithms and also compare them to mine. Even human players maybe be able to improve their skills by playing my AI. For the time breakdown of subtasks, the development of the AI will take the majority of the time. Most of the AI will be theorized before being put into code. A task chart separating individual subtasks can be provided. http://ai-depot.com/GameAI/Learning.html