Кіріспе
Шахматты талдау және ойынға арналған компьютерлік бағдарлама. Компьютерлік шахматта шахмат қозғалтқышы – шахмат немесе шахматтың түрлеріндегі позицияларды талдап, ең күшті деп санайтын бір немесе бірнеше қадамды ұсынатын компьютерлік бағдарлама. Шахмат қозғалтқышы көбінесе графикалық немесе терезелік интерфейсі жоқ, командалық қатар интерфейсімен артқы жағы болып табылады. Қозғалтқыштар көбінесе алдыңғы жағымен қолданылады, яғни пайдаланушы пернетақта, тышқан немесе сенсорлық экран арқылы өзара әрекеттесе алатын Chessbase немесе WinBoard сияқты терезелі графикалық интерфейспен. Бұл пайдаланушыға әрбір қозғалтқыш үшін жаңа интерфейс үйренбей, бірнеше қозғалтқышпен ойнауға және әртүрлі қозғалтқыштарды бір-біріне қарсы қоюға мүмкіндік береді. Көптеген шахмат қозғалтқыштары қазір ұялы телефондар мен планшеттерде қолжетімді, бұл оларды одан да ыңғайлы етеді.
In computer chess, a chess engine is a computer program that analyzes chess or chess variant positions, and generates a move or list of moves that it regards as strongest. A chess engine is usually a back end with a command line interface with no graphics or windowing. Engines are usually used with a front end, a windowed graphical user interface such as Chessbase or WinBoard that the user can interact with via a keyboard, mouse or touchscreen. This allows the user to play against multiple engines without learning a new user interface for each, and allows different engines to play against each other. Many chess engines are now available for mobile phones and tablets, making them even more accessible.
Тарих
"Шахмат машинасы" терминінің мағынасы уақыт өте келе өзгерді. 1986 жылы Линда мен Тони Шерцер өзінің Bebe бағдарламасын 4-ші Дүниежүзілік компьютерлік шахмат чемпионатына енгізді, оны "Шахмат қозғалтқышы" арқылы іске қосты, бұл олардың Sys 10, Inc. компаниясы жасаған және сатқан шахмат компьютерлік жабдықтарының тауарлық атауы еді. 1990 жылы Deep Blue әзірлеушілері Фэн Хсиунг Хсу мен Мюррей Кэмпбелл өз бағдарламаларына "іздеу механизмін" қосу туралы жазды, бұл аппараттық емес, бағдарламалық құралды білдірді. 1991 жылдың желтоқсанында Computer schach & Spiele Chessbase компаниясының жақында шыққан Fritz бағдарламасын "Шахмат моторы" деп атады, бұл неміс тілінде "шахмат қозғалтқышы" деген мағынаны білдіреді. 1993 жылдың басында Марти Хирш бір жағынан Chessmaster 3000 немесе Battle Chess сияқты коммерциялық шахмат бағдарламалары мен екінші жағынан ChessGenius немесе өзінің MChess Pro сияқты "шахмат қозғалтқыштары" арасында ерекшелік жасады. Оның түсіндіруінше, коммерциялық шахмат бағдарламаларының бағасы арзан, графикасы әдемі болғанмен, SSDF (Швед шахмат компьютерлік қауымдастығы) рейтингісінде жоғары көрсеткіштерге ие болмады, ал қозғалтқыштар қымбатқа түсіп, жоғары рейтингке ие болды. 1994 жылы Шай Бушинский өзінің Junior бағдарламасының алғашқы нұсқасымен жұмыс істеді. Ол графикаға емес, шахмат ойынының өзіне назар аударуды қалап, Тим Манннан Junior бағдарламасын Winboard-пен қалай байланыстыруға болатынын сұрады. Тимнің жауабы, бастапқыда GNU Chess командалық қатарының бір бөлігі болған, Шахмат қозғалтқышының байланыс протоколы немесе Winboard қозғалтқыштарының негізін құрады. Сондай-ақ 1994 жылы Стивен Дж. Эдвардс Portable Game Notation (PGN) спецификациясын жариялады. Онда PGN оқу бағдарламаларының "толық шахмат қозғалтқышына" мұқтаждығы жоқ екені айтылды. Сонымен қатар, ол үш "графикалық пайдаланушы интерфейсін" (GUI) атады: XBoard, pgnRead және Slappy дерекқоры. 2000-жылдардың ортасына қарай қозғалтқыштар соншалықты күшті болды ki тіпті ең жақсы ойыншыларды да жеңе алды. Көңіл көтеру мақсатында, әсіресе күші шектеулі қозғалтқыштарды пайдаланғанда, адам мен қозғалтқыш арасындағы матчтар қазір сирек кездеседі; қозғалтқыштар қарсыластар емес, талдау құралдары ретінде қарастырылады.
Интерфейс протоколы
Жалпы Winboard қозғалтқыштарына Crafty, ProDeo (Rebel негізінде), Chenard, Zarkov және Phalanx жатады. 1995 жылы Chessbase өз деректер базасы бағдарламасының нұсқасын шығарды, оның ішінде Fritz 4 жеке қозғалтқыш ретінде келді. Бұл Chessbase протоколының алғашқы пайда болуы болды. Ұзақ өтпей, олар өнімдер қатарына Junior және Shredder қозғалтқыштарын қосты, соның ішінде CB протоколындағы қозғалтқыштар жеке бағдарламалар түрінде орнатылып, Chessbase бағдарламасына немесе басқа Fritz стиліндегі GUI-ға қосылатын болды. Fritz 1-14 нұсқалары тек Chessbase қозғалтқыштары ретінде шығарылды, ал Hiarcs, Nimzo, Chess Tiger және Crafty UCI немесе Winboard қозғалтқыштары болғанымен, Chessbase форматына көшірілді. Соңғы кезде Chessbase өздерінің Komodo, Houdini, Fritz 15–16 және Rybka сияқты ойын бағдарламаларына Chessbase қозғалтқыштарына айналдырудың орнына Universal Chess Interface (UCI) қозғалтқыштарын енгізе бастады. 2000 жылы Стефан Майер-Кален мен Франц Губер Universal Chess Interface (UCI) протоколын жасады, ол кеңейтілген мүмкіндіктер жиынтығын ұсынды. Chessbase көп ұзамай Winboard қозғалтқыштарына қолдауды тоқтатып, өздерінің қозғалтқыштарының GUI және Chessbase бағдарламаларына UCI қолдауын қосты. Бүгінгі таңда ең күшті қозғалтқыштар UCI форматында: Stockfish, Komodo, Leela Chess Zero, Houdini, Fritz 15–16, Rybka, Shredder, Fruit, Critter, Ivanhoe және Ruffian. 1998 жылдан бастап неміс компаниясы Millenium 2000 қысқа мерзімге арнайы шахмат компьютерлерінен бағдарламалық өнімдер нарығына өтіп, ChessGenius немесе Shredder қамтылған CD сериясы үшін Millennium Chess System (MCS) протоколын жасады, бірақ 2001 жылдан кейін жаңа бағдарламалық өнімдерді шығаруды тоқтатты. Ұзақ жылдар бойы голланд компаниясы Lokasoft қолданған қозғалтқыш протоколы Эд Шредердің Rebel бағдарламасын сату құқығын өз мойнына алды.
Күші артады
Шахмат қозғалтқыштарының ойын күші үнемі артып келеді. Бұл, ішінара, берілген уақытта есептеулерді одан да тереңдетуге мүмкіндік беретін процессорлық қуаттың артуына байланысты. Сонымен қатар, бағдарламалау техникалары жақсарды, бұл қозғалтқыштарға талдайтын нұсқаларда таңдамалырақ болуға және жақсырақ позициялық түсінікті меңгеруге мүмкіндік береді. Шахмат машинасы көбінесе алғашқы бірнеше жүру үшін өзінің ойын күшін арттыру мақсатында бұрыннан есептелген үлкен ашылу "кітабын" пайдаланады, кейде терең талданған нұсқаларда 20 жүруге дейін немесе одан да көп. Кейбір шахмат қозғалтқыштары шахмат позицияларының дерекқорын, сонымен қатар бұрын есептелген бағалаулар мен ең жақсы жүрулерді сақтайды – бұл қайта оралатын шахмат позицияларының "сөздігі" сияқты. Бұл позициялар алдын ала есептелгендіктен, қозғалтқыш дерекқорда көрсетілген жүрулердің біреуін ойнайды, осылайша есептеу уақытын үнемдейді, нәтижесінде күштірек және жылдам ойын көрсетеді. Кейбір шахмат қозғалтқыштары ойын соңындағы күштерін арттыру үшін ойын соңының кестелік базаларын пайдаланады. Ойын соңының кестелік базасы шағын материалмен барлық мүмкін ойын соңы позицияларын қамтиды. Әрбір позиция ойыншы үшін жеңіс, жеңіліс немесе теңдік деп нақты анықталады, сондай-ақ екі тараптың да ең жақсы ойынымен ойынның соңына жетуге қажетті жүрулер саны көрсетіледі. Кестелік база әрбір позиция үшін оңтайлы қорғанысқа қарсы ең жылдам жеңіске жететін жүруді немесе оңтайлы шабуылға қарсы ең баяу жеңіліске ұшырататын жүруді анықтайды. Мұндай кестелік базалар жеті немесе одан аз фигуралы барлық шахмат ойын соңдары үшін қолжетімді (тривиальды ойын соңы позициялары ескерілмейді, мысалы, алты ақ фигура қара патшаға қарсы). Егер ойын соңындағы жағдайды жақсарту үшін қажетті жүрулер шахмат қозғалтқышының есептеу көкжиегінен асып кетсе, қозғалтқыш ойын соңының кестелік базасын пайдаланбастан ең жақсы жүруді табуға кепілдік берілмейді және көптеген жағдайларда 50 жүру ережесін бұзуы мүмкін. Көптеген қозғалтқыштар "тұрақты миды" (оппонент жүрген кезде есептеуді жалғастыру) өз күштерін арттыру әдісі ретінде пайдаланады. Шахмат қозғалтқыштарының бағдарламалық кодын жақсарту үшін үлестірілген есептеу де қолданылады. 2013 жылы Stockfish шахмат бағдарламасын жасаушылар бағдарламалық кодты жақсарту үшін үлестірілген есептеуді қолдана бастады. 2017 жылға қарай 485 миллионнан астам шахмат ойынын ойнау үшін 745 жылдан астам процессорлық уақыт жұмсалды, ал нәтижелер шахмат бағдарламалық жасақтамасына шағын және кезеңді жақсартулар енгізуге пайдаланылды. 2019 жылы Ethereal авторы Эндрю Грант Stockfish тестілеу жүйесіне негізделген OpenBench үлестірілген есептеу тестілеу жүйесін бастады, қазір ол шахмат қозғалтқыштары үшін ең көп қолданылатын тестілеу жүйесі болып табылады.
Қозғалтқыштың қуатын шектеу
1990 жылдардың соңына қарай, ең күшті шахмат қозғалтқыштары соншалықты жетілді ki, көптеген ойыншылар оларға қарсы жеңіске жеткізу мүмкіндігінен айырылды. Ойыншыларға көбірек мүмкіндік беру үшін, қозғалтқыштар өз күштерін реттеуге немесе шектеуге мүмкіндік беретін параметрлерді енгізе бастады. 2000 жылы Стефан Майер-Кален мен Франц Хубер Универсалды шахмат интерфейсі (Universal Chess Interface) протоколын жариялағанда, олар uci limitstrength және uci elo параметрлерін қосты. Бұл параметрлер шахмат қозғалтқыштарының авторларына Elo рейтингісіне сәйкес бағаланған әртүрлі деңгейлерді ұсынуға мүмкіндік берді, бұл рейтингілік тізімдердің бірімен калибрленген. UCI қозғалтқыштарына арналған көптеген интерфейстер (GUI) пайдаланушыларға бұл Elo рейтингін мәзірден орнатуға мүмкіндік береді. Тіпті осы параметрді қабылдамаған қозғалтқыштардың өзінде кейде күшін реттеуге арналған параметрлер болады (мысалы, Stockfish 11). uci elo параметрін қолдайтын қозғалтқыштарға Houdini, Fritz 15–16, Rybka, Shredder, Hiarcs, Junior, Zappa және Sjeng жатады. Shredder, Chess Assistant, Convekta Aquarium, Hiarcs Chess Explorer және Martin Blume's Arena сияқты интерфейстерде қозғалтқыштың uci elo параметрін орнатуға арналған түсімдік мәзірлер бар. Fritz отбасы интерфейстері, Chess Assistant және Aquarium да қозғалтқыштың күшін шектеудің тәуелсіз құралдарына ие, бұл құралдар қозғалтқыштың бағаланған қозғалыстар тізімін (multipv, яғни «басты вариант») құру қабілетіне негізделген.
Турнирлер
Компьютерлік турнирлердің нәтижелері шахмат қозғалтқыштарының салыстырмалы күшін көрсетеді. Дегенмен, турнирлер күштілікті дәл анықтау үшін статистикалық тұрғыдан маңызды көлемдегі ойындар өткізбейді. Шындығында, теңдес қозғалтқыштардың арасында маңызды нәтижеге жету үшін мыңдаған ойын ойнау қажет, ал мұндай көлем турнир шеңберінде іс жүзінде мүмкін емес. Көптеген турнирлерде кез келген аппараттық құралдарды пайдалануға рұқсат беріледі, сондықтан салыстырылатыны – қозғалтқыш пен аппараттық құралдың үйлесімі ғана. Тарихи тұрғыдан алғанда, коммерциялық бағдарламалар ең күшті қозғалтқыштар болып келді. Егер әуесқой қозғалтқыш турнирде жеңіске жетіп, жақсы нәтиже көрсетсе (мысалы, 2005 жылы Zappa), онда ол тез коммерциялық жобаға айналады. Осы турнирлерде жеңіс күнінің атағы жеңімпаз бағдарламаларға зор бедел әкеледі және маркетингтік мақсаттарда қолданылады. Алайда, 2010 жылдардың соңында Leela Chess Zero және Stockfish сияқты ерікті таратылатын есептеу жобаларының және FishTest, OpenBench сияқты сынақ жүйелерінің пайда болуынан кейін, ашық кодты бағдарламалар коммерциялық бағдарламаларды турнирлердегі ең күшті қозғалтқыштар ретінде ығыстырды.
Рейтингтер
Шахматтық қозғалтқыштардың рейтингтік тізімдері қозғалтқыштардың салыстырмалы күшін статистикалық тұрғыдан маңызды өлшеуге бағытталған. Бұл тізімдер қозғалтқыштар арасында көптеген ойындар өткізеді. Кейбір тізімдер қозғалтқыштардың күшін ғана өлшеу үшін ашылу кітаптарын, уақыт бақылауын және қолданатын компьютерлік жабдықты стандарттауға тырысады. Бұл тізімдер тек рейтингті ғана емес, сонымен қатар берілген рейтингтерге қатысты қателік шегін де көрсетеді. Рейтингтік тізімдердегі рейтингтер Elo жүйесі (немесе оған ұқсас әдістер) арқылы есептелгенімен, FIDE Elo рейтингтерімен немесе адам ойыншыларының басқа шахмат федерацияларының рейтингтерімен тікелей байланысы жоқ. SSDF көп жыл бұрын ұйымдастырған бірнеше «адам-машина» ойындарынан (қозғалтқыштар қазіргідей күшті болмаған кезде) басқа, осы рейтингтік тізімдер мен ойыншылар арасында калибрлеу жүргізілмеген. Сондықтан, маңызды нәтижелер – абсолюттік мәндер емес, рейтингтер арасындағы орналасуы мен айырмашылықтары. Көптеген рейтингтік тізімдерде IPPOLIT және оның туындылары жоқ. Олар өте күшті және ашық кодты болғанымен, коммерциялық бағдарламалық жасақтаманы дамытушылар олардың Rybka-ның декомпилирленген бинарлық кодын пайдаланып жасалғанын алға тартады. Осы дауға байланысты, бұл қозғалтқыштар көптеген турнирлер мен рейтингтік тізімдерде қара тізімге енгізілді. Rybka өзі Fruit негізінде жасалған деп айыпталды, ал 2011 жылдың маусымында ICGA Rybka-ның Fruit және Crafty-дан алынғанын ресми түрде жариялады, оны Халықаралық компьютерлік ойындар қауымдастығының компьютерлік шахмат чемпионатынан шеттетуге және оның бұрынғы жеңістерін (2007, 2008, 2009 және 2010 жылдар) жоюға шешім берді. ICGA бұл шешімі үшін сынға ұшырады. Осының барлығына қарамастан, Rybka әлі де CCRL және CEGT сияқты көптеген рейтингтік тізімдерге енгізілген, сондай-ақ IPPOLIT-тің туындысы Robbolito және Houdini-дің туындысы Fire де бар. Сонымен қатар, Fat Fritz 2, Stockfish-тің туындысы, көптеген рейтингтік тізімдерде де кездеседі.
Сынақ жиынтығы
Қозғалтқыштардың жұмысын нақты позицияларда өлшеу арқылы сынауға болады. Әдетте, әрбір берілген позиция үшін ең жақсы жүруді табуға бағытталған сынақ жиынтықтары қолданылады. Бұл позициялар позициялық, тактикалық немесе эндшпильдік ойынға қарай бағытталуы мүмкін. Мысалы, "Nolot" сынақ жиынтығы терең құрбандықтарға арналған. "BT2450" және "BT2630" сынақ жиынтықтары шахмат қозғалтқышының тактикалық қабілетін өлшейді және "REBEL" жүйесінде қолданылған. Сонымен қатар, "Brilliancy" деп аталатын жалпы сынақ жиынтығы бар, ол негізінен "Шахматты қалай қайта бағалау керек" оқулығынан жинақталған. "Стратегиялық сынақ жиынтығы" (СТС) қозғалтқыштың стратегиялық күшін тексереді. Тағы бір заманауи сынақ жиынтығы – "Nightmare II", онда 30 шахмат жұмбағы бар.
Каспаров әлемге қарсы (компьютерлік көмекпен ойналатын шахмат ойыны)
1999 жылы Гарри Каспаров MSN Gaming Zone ұйымдастырған "Kasparov versus the World" шахмат ойынын Интернет арқылы ойнады. Екі тарап та компьютерлік (шахмат қозғалтқышы) көмегін пайдаланды. "Әлем командасы" 75-тен астам елден келген 50 000-нан астам адамды қамтыды, олар өз қозғалыстарын көпшілік дауыс беру арқылы анықтады. Ойын төрт айға созылды және Каспаровтың 62-ші қозғалысынан кейін аяқталды, ол Deep Junior компьютерлік бағдарламасымен табылған 28 қозғалыстағы мәжбүрлі матты жариялады. 22 қазанда "Әлем командасының" дауыс берушілері жеңілісті қабылдады. Ойыннан кейін Каспаров: "Бұл шахмат тарихындағы ең ұлы ойын. Оның идеялардың көптігі, күрделілігі және шахматқа тигізген әсері оны ең маңызды ойынға айналдырады" деді.
Шахмат түрлеріне арналған қозғалтқыштар
Кейбір шахмат қозғалтқыштары шахматтың түрлерін ойнау үшін жасалған, стандартты емес шахмат фигураларын модельдеуге немесе стандартты емес тақталардағы ойынды талдауға қажетті кодты қосып. Мысалы, ChessV және Fairy Max 12×8 дейін өлшемдері бар шахмат тақтасында, соның ішінде Capablanca Chess (10×8 тақтасы) сияқты түрлерін ойнай алады. Дегенмен, үлкен тақталарда тиімді ойнай алатын шахмат қозғалтқыштарының саны аз, ал шексіз шахмат тақтасында (шексіз шахмат) ойналатын шахмат ойындары шахматты ойнайтын бағдарламалық құралдармен дерлік қамтылмаған, бірақ теориялық тұрғыдан алғанда MuZero негізіндегі алгоритмді пайдаланатын бағдарлама шексіз күй кеңістігін басқара алады.
Графикалық пайдаланушы интерфейстері
XBoard/Winboard ең алғашқы графикалық пайдаланушы интерфейстерінің бірі болды. Тим Манн оны GNU Chess қозғалтқышы үшін графикалық интерфейс ретінде жасады, бірақ содан кейін Winboard протоколын қолданған Crafty сияқты басқа қозғалтқыштар да пайда болды. Көп ұзамай, Chessmaster бағдарламасына King қозғалтқышынан өзге Winboard қозғалтқыштарын импорттау мүмкіндігі қосылды. 1995 жылы Chessbase, Fritz қозғалтқышын Chessbase деректер базасы бағдарламасының және Fritz графикалық интерфейсінің ішінде жеке бағдарлама ретінде ұсына бастады. Одан кейін Junior және Shredder қозғалтқыштарын өнімдер тізіміне қосты, оларды Fritz үшін қолданылған графикалық интерфейске жинақтады. 1990 жылдардың соңында Fritz графикалық интерфейсі адаптер арқылы Winboard қозғалтқыштарын іске қоса алды, бірақ 2000 жылдан кейін Chessbase UCI қозғалтқыштарын қолдауға көшті және Winboard-қа көп көңіл бөлмеді. 2000 жылы Стефан Мейер Кален жеке UCI графикалық интерфейсімен Shredder-ді сата бастады, ол UCI немесе Winboard қозғалтқыштарын импорттауға мүмкіндік берді. Convekta-ның Chess Assistant және Lokasoft-тың ChessPartner өнімдеріне Winboard және UCI қозғалтқыштарын импорттау мүмкіндігін қосты. Шейн Хадсон Linux, Mac және Windows үшін тегін графикалық интерфейс – Shane's Chess Information Database-ін жасады. Мартин Блюм Arena-ны әзірледі, олардың үшеуі де UCI және Winboard қозғалтқыштарымен жұмыс істей алады. Android үшін Aart Bik Chess for Android, тағы бір тегін графикалық интерфейсті шығарды, ал Герхард Калабтың Chess PGN Master және Питер Остерлундтың Droidfish қозғалтқыштар үшін графикалық интерфейс ретінде де қолданылуы мүмкін. Компьютерлік шахмат Уикисінде көптеген шахмат графикалық интерфейстерінің тізімі бар.