Postoupecká Veverka
S Janem Olšinou rozmlouvá Petr Staněk
Nejde o žádný žert, jak by se na první pohled mohlo zdát, ale jde o novou aktivitu v rámci našeho oddílu. Po skvělé reprezentaci nejlepšího hráče Postoupek Karla Malinovského na MS žáků v Řecku a úspěších našich mládežnických družstev, především v extralize dorostu, přichází na řadu i reprezentace na poli počítačového šachu a programování. Právě „Postoupecká Veverka" verze 1.21 je název šachového programu, který úspěšně vyvíjí Jan Olšina, mladý hráč Sokola Postoupky. Využil jsem tedy příležitosti, zeptat se ho na šachový program a jeho další perspektivy:
Ahoj Honzo, řekl bys nám na úvod, jak ses dostal k psaní Postoupecké Veverky? A proč právě takový název?
Ahoj Petře, programovat jsem začal asi před pěti lety. Nedávno jsem zkoušel napsat program, který propočítá všechny pozice ve hře Kůň, (na šachovnici 4 × 8 postupují ve dvou řadách pěšci a snaží se znehybnit jezdce) a tak mě napadlo pustit se rovnou do šachového programu. V postoupeckém oddíle se vždycky říkalo, že někdo „hraje zmateně jako veverka", tak mi to přišlo jako dobrý nápad.
Jak program vlastně funguje?
Nejdříve bych měl zmínit, že Veverka je napsaná v jazyce C. Program je rozdělený do tří hlavních částí. V první fázi musí určit, které tahy může hráč provést z dané pozice (tzv. generátor tahů), poté musí z čísla, které reprezentuje určitý tah umět změnit postavení figur na šachovnici. Ve třetí fázi se testují všechna možná pokračování o určité délce. Takto se vybere nejlepší tah.
S jakými obtížemi zápasíš při vývoji programu?
Jedním z hlavních problémů je velmi pomalý propočet. Kdyby měl program procházet úplně všechny možné tahy a odpovědi na ně, trvalo by to velmi dlouhou dobu. Tady jsem použil metodu, která se nazývá alfa-beta. (Pokud program zkoumá tah a zjistí, že je horší, než tah, který už našel dříve, dál ho nepropočítává.) Takto se dá ušetřit asi 60 % času. Tato metoda samozřejmě funguje lépe, pokud se nejlepší tah najde na začátku propočtu. Proto bylo potřeba co nejlépe odhadnout sílu tahů a podle ní je seřadit.
Co se Ti zatím podařilo dosáhnout, sázíš na metodu „hrubé síly" nebo spíše na „selektivní" metodu propočtu? Jakou má Veverka nyní výkonnost?
To je záludná otázka… Jen pomocí hrubé výpočetní síly to nejde. Snažím se samozřejmě, aby program uměl vybírat tahy, které se zdají být dobré a ty propočítávat hlouběji. Tady ovšem vznikají dva velké problémy. Pokud se snažíme vybírat tahy příliš „přísně", hrozí, že vynecháme nějaké důležité varianty a naopak čím více znalostí program má, tím je pomalejší. Nejlépe je zvolit kompromis mezi oběma extrémy. Veverka zatím dosahuje přibližně 1100 ELO, značné výkyvy výkonnosti má zejména v koncovkách. Musím zdůraznit, že vše je zatím ve fázi vývoje.
A závěrem, jaká zlepšení plánuješ v nejbližší době?
Stále vylepšuji technické detaily programu, navíc si myslím, že zlepšení ohodnocovaní pozic může přinést výrazné zlepšení a tím i nárůst síly. Do budoucna chci přidat knihovnu složitějších koncovek, zahájení a možná i tzv. hašovací tabulky a zlepšení grafiky, ale to už je pohled do vzdálenější budoucnosti. Jak je vidět, stále je co zlepšovat.
V dalším pokračování Ti přeji hodně úspěchů, díky za rozhovor.