\section{Introduction}

\begin{displayquote}
	Go is an ancient game which, from its forgotten origins in China, spread first
	to the rest of East Asia, and then to the entire world. How ancient? Historians
	aren't sure; it has a definite history of over 3000 years, but according to
	tradition Go was invented more than 4000 years ago. The English name comes from
	the Japanese name Igo, which means ``surrounding boardgame''.

	In this game, each player tries to use threats of death, capture, or isolation
	to assert control over more of the board than his opponent. An abstract strategy
	game at heart, Go has nonetheless been interpreted as a stylized representation
	of fighting a war, settling a frontier, cornering a market, thrashing out an
	argument, or even of fortune-telling and prophecy. Go has always been one of the
	most played games in the world. \cite{sl_go}
\end{displayquote}

As old and deep as Go is it has recently lived a revolution by the appearance of
artificial intelligences with superhuman strength. While not expecting to
achieve what a full team of developers and computer scientists at Google did,
this project aims to evaluate how an engine able to play the game of Go could be
created, implement such an engine and evaluate the results of the whole process.

\subsection{Driving Needs}

As one of the deepest and most studied games in the world, Go presents a very
interesting problem for artificial intelligence. Implementing not only the
game's simple but subtle rules, but a system capable of playing it with a
satisfying level of skill, is a task worth of pursuing as an exercise on
software design, algorithmics and AI research.

On the practical level, this project can be a foundation for the development of
different Go analysis algorithms by providing an existing engine to house them,
which can be of interest to Go players and software scientists alike.

\subsection{Reach}

Presented here are the ideal targets of the project.

\begin{itemize}
	\item An implementation of the game of Go, that is, a system for holding the
		moves and variants of a match (a tree of moves) and the logic for the
		game's rules.
	\item An engine capable of analyzing board positions and generating strong
		moves via various decision algorithms.
	\item Compatibility with existing GUIs.
	\item A way for processing existing records of games, which are usually
		recorded in the SGF format.
\end{itemize}
