-
RandomAI
RandomAI vybere v každém tahu náhodné relevantní pole - tj. takové, které má ve vzdálenosti nejvýše 2 jiný symbol. Pokud je hrací pole prázdné, hraje doprostřed.
-
RuleAI
RuleAI se řídí několika jednoduchými pravidly:
- Pokud máš otevřenou souvislou čtyřku, zahrej vítězný tah
- Pokud má soupeř otevřenou souvislou čtyřku, zablokuj ji
- Pokud máš z obou stran otevřenou souvislou trojku, rozšiř ji na čtyřku
- Pokud má soupeř z obou stran otevřenou souvislou trojku, zablokuj ji
- Pokud máš z obou stran otevřenou souvislou dvojku, rozšiř ji na trojku
- Pokud má soupeř z obou stran otevřenou souvislou dvojku, zablokuj ji
- Jinak zahrej náhodný relevantní tah
-
MinimaxAI
Tento algoritmus prochází strom hry pomocí algoritmus minimaxu. Je zde využito alpha-beta prořezávání. Z časových důvodů algoritmus v každé hloubce vybere 30 nejperspektivnějších pozic, které dále prozkoumává.
-
CombinedAI
CombinedAI je kombinací předchozích dvou algoritmů. Nejprve ověří, že ani jedna ze stran nemá souvislou čtyřku a AI nemá souvislou trojku, teprve pak pokračuje minimaxem.
Ohodnocení jednotlivé souvislé skupiny symbolů se řídí následující tabulkou:
| Velikost skupiny | Neblokovaná | Zablokovaná na jedné straně | Zablokovaná na obou stranách |
|---|---|---|---|
| 1 | 2 | 1 | 0 |
| 2 | 5 | 3 | 0 |
| 3 | 15 | 7 | 0 |
| 4 | 5000 | 20 | 0 |
| 5 | 99999 | 99999 | 99999 |
Pro každý směr zvlášť jsou nalezeny souvislé skupiny. Celkové ohodnocení pozice je pak
dáno jako
,
kde
je množina všech souvislých skupin křížků,
množina
všech souvislých skupin koleček a
ohodnocení skupiny
.
Pro úsporu času se údaje o jednotlivých skupinách i hodnocení udržuje průběžně, po každém tahu pouze opraví vlastnosti skupin sousedících se zahraným polem. Pro spojování existujících skupin je použita variace na Disjoint Find-Union.
Aby nebylo při minimaxu nutné kopírovat celou reprezentaci aktuální pozice, je implementováno vracení tahů (včetně udržování skupin). Při každé prováděné operaci na skupinách je na zásobník uložena informace o tom, jaká operace byla provedena. Při vracení tahu jsou pak podle těchto informací do původního stavu vráceny i skupiny.