Q:

Developing A Perfect Tic-Tac-Toe Player - AI

I'm interested in AI as an area to study on in MSc. I don't have much prior knowledge. So, I decided to develop an AI that plays Tic-Tac-Toe perfectly, as an introduction. I've made some progress that AI can make or block "win" and "fork" positions.
 "Fork" is a position that a mark ( X or O ) creates two one-move-to-win position at once. If opponent can't make another one-move-to-win position himself, forking player has a certain win. "Fork" position requires to calculate two moves after. And I suggest a "Double Fork" position which requires to calculate three moves after. 
 I've done this by analyzing game combinatorics, generating "win" and "fork" patterns, and applying algorithm below:
1 - Win
2 - If can't win, block opponent's win
3 - Fork
4 - If can't fork, block opponents fork
5 - Play random
Obviously that is not a perfect-playing method. I've noticed there exists more complex positions by further analyzing game combinatorics. These positions are, as I name them, "win and fork" and "double fork".
It seemed to me that it is inefficiently complex to handle these further positions. I want you to inform me whether I haven't analyzed game combinatorics completely or I should use other methods like using game state space tree.
Thanks.

A:

See Tic-Tac-Toe  by Randall Munroe. 

