바둑은 경우의 수가 너무 많아 소프트웨어가 정복하지 못한 게임 중 하나였다. 알파고는 두 가지 방법을 사용하였는데 몬테카를로 트리 탐색 알고리즘 적용과 프로바둑 기사들의 승리한 수를 심층 학습하여 승률을 높이도록 하였다.
바둑은 경우의 수가 너무 많아서, 기존에 존재하는 전체 경우의 수를 빠르게 탐색해 가는 게임 소프트웨어 알고리즘으로는 구현할 수 없어서 그동안 소프트웨어가 정복하지 못한 게임 중 하나였다. 알파고를 포함한 모든 바둑 프로그램의 성능은 바로 어떤 탐색 방법을 사용하느냐에 따라, 승패가 좌우된다고 할 수 있다. 알파고에서는 두 가지 방법을 사용하여 바둑 프로그램을 구현 하였다. 첫째, 몬테카를로 트리 탐색(Monte Carlo Tree Search, MCTS)이라는 인공지능 알고리즘을 적용하였다. 이 알고리즘은 바둑 기사의 착수를 학습한 Policy Network(트리의 폭을 제한)와 국지적인 패턴인식으로 승산 판단을 위한 Value Network(트리의 깊이)의 두 가지 기능으로 구현되어 있다. 둘째로, 프로바둑 기사들의 승리한 수들을 심층 학습(Deep Learning)하여, 승률을 높이도록 하였다.