Life/death analysis in Go (Analyzátor života skupiny v Go)
Life/death analysis in Go (Analyzátor života skupiny v Go)
bachelor thesis (DEFENDED)
View/ Open
Permanent link
http://hdl.handle.net/20.500.11956/6494Identifiers
Study Information System: 43084
Collections
- Kvalifikační práce [11244]
Author
Advisor
Referee
Hric, Jan
Faculty / Institute
Faculty of Mathematics and Physics
Discipline
General Computer Science
Department
Department of Theoretical Computer Science and Mathematical Logic
Date of defense
26. 6. 2006
Publisher
Univerzita Karlova, Matematicko-fyzikální fakultaLanguage
English
Grade
Excellent
V této práci jsem se zaměřil na studium problematiky řešení úloh "života a smrti" v Go, jež je jednou ze základních dovedností které by měl program hrající Go zvládnout. Jako součást práce vznikl program TGA, řešící tyto úlohy. Program je postaven na základních algoritmech prohledávání stavového prostoru z teorie her (např. alfa beta prořezávání, transpoziční tabulky) v kombinaci s metodami využívajícími znalosti hry Go (heuristiky a ořezávací metody). Pro účely programu jsem mimo jiné vytvořil "blokové orientovanou" prezentaci pozice, implementoval jsem zjednodušenou statickou analýzu života a smrti skupiny a navrhl jsem sadu heuristik, které nejen významně zrychlují výpočet programu ale také umožňují řešit obtížné úlohy typu "under the stones". Program je určen k řešení převážně uzavřených úloh a umí si poradit s různými specialitami problematiky života a smrti v Go (např. různe druhy ko, seki, "bent four in the corner"). Co se výkonnosti týče, sílu programu v řešení specifikovaných Go úloh odhaduji na 1 dan, což je srovnatelné s velmi pokročilým lidským hráčem.
In this thesis I focused myself on problematics of solving life and death problems in the game of Go, which is one of fundamental skills of a Go playing program. Together with thesis, life and death solving program TGA was created. Program is built upon basic space search algorithms from the game theory (e.g. alpha beta pruning, transposition tables) in combination with methods using knowledges about the game of Go (heuristics and pruning methods). For program purposes I created "block oriented" position representation, I implemented simpliffied static analysis of life and death of the group and I proposed a set of heuristic. These heuristics not only speed up search signifficantly, moreover they make it possible to solve di±cult problems of "under the stones" type. Program is designed to solve mostly enclosed problems and it is capable to treat di®erent life and death solving pecularities (e.g. different types of ko, seki, "bent four in the corner"). As for performance, I estimate program's strength in solving speciffied Go problems to be 1 dan. This is comparable with a strong human player.