Počítačové šachy

Počítačové šachy  jsou oblíbeným pojmem z oblasti výzkumu umělé inteligence znamenající tvorbu softwaru a speciálních počítačů pro hraní šachů . Také termín "počítačové šachy" se používá k označení hry proti počítačovému šachovému programu, hry programů mezi sebou. Od roku 2000 nemají proti šachovým programům ani ti nejsilnější lidští hráči šanci [1] .

Historie

Historie šachových automatů je starší než historie počítačů. Myšlenka stroje na hraní šachů sahá až do osmnáctého století. Kolem roku 1769 se objevil šachový stroj Mechanical Turk . Byl určen pro zábavu královny Marie Terezie. Stroj hrál opravdu dobře - byl v něm silný šachista, který dělal tahy.

Tvorba mechanických šachových automatů ustala s příchodem digitálních počítačů v polovině 20. století. V roce 1951 Alan Turing napsal Turochampův algoritmus , se kterým stroj mohl hrát šachy, pouze vynálezce sám se choval jako stroj. Tento nesmysl dokonce dostal jméno – „Turingův papírenský stroj“. Udělat jeden pohyb trvalo člověku více než půl hodiny. Algoritmus byl spíše podmíněný a dochoval se i záznam hry, kde Turingův „papírový stroj“ prohrál s jedním z jeho kolegů [2] . Z důvodu chybějícího přístupu k počítači nebyl program nikdy testován v provozu.

Přibližně v této době, v roce 1951, napsal matematik Claude Shannon svůj první článek o šachovém programování. Napsal: " I když to nemusí mít praktický význam, otázka sama o sobě je teoreticky zajímavá a doufejme, že řešení tohoto problému poslouží jako podnět k řešení dalších problémů podobného charakteru a větší důležitosti ." Shannon také zaznamenal teoretickou existenci nejlepšího tahu v šachu a praktickou nemožnost jej najít.

Dalším krokem ve vývoji šachového programování byl vývoj v jaderné laboratoři Los Alamos v roce 1952 na počítači MANIAC I s taktovací frekvencí 11 kHz šachového programu pro hru na šachovnici 6x6, bez účasti slonů. Je známo, že tento počítač odehrál jednu partii proti silnému šachistovi, trvala 10 hodin a skončila vítězstvím šachisty. Další partie se hrála proti dívce, která se nedávno naučila hrát šachy. Stroj vyhrál ve 23. tahu, na svou dobu to byl velký úspěch.

V roce 1957 vytvořil Alex Bernstein první program pro hru na standardní šachovnici a za účasti všech figurek [3] .

Důležitý vývoj pro počítačové šachy nastal v roce 1958, kdy Allen Newell , Cliff Shawa Herbert Simon vyvinuli algoritmus pro redukci vyhledávacího stromu nazvaný " alpha-beta prořezávání " [3] [4] , na kterém jsou postaveny vyhledávací funkce všech silných moderních programů.

V roce 1967 ve čtyřech zápasech porazil program vytvořený v Institutu pro teoretickou a experimentální fyziku (ITEP) šachový program Stanfordské univerzity 3:1. Podle velmistrů, kteří si s programem pohráli, hrálo se silou třetí šachové kategorie . [5]

Na 1. mistrovství světa v šachu mezi počítačovými programy v srpnu 1974 ve Stockholmu ( Švédsko ) vyhrál program Kaissa , vytvořený v roce 1971 pracovníky Ústavu kontrolních problémů Akademie věd SSSR, všechny čtyři hry a stal se prvním mistrem světa. mezi šachovými programy předběhly programy „Šachy 4“, „Chaos“ a „Ribbit“, které získaly po 3 bodech. Mistrovství se zúčastnilo 13 vozů z 8 zemí světa, které své tahy do haly šampionátu přenášely telefonicky operátorovi.

Prvním strojem, který dosáhl úrovně šachového mistra, byl , v roce 1983 Joe Condonem a Thompsonem . Belle byl první počítač určený výhradně pro hraní šachů. Jeho oficiální hodnocení Elo bylo 2250, což z něj dělalo nejvýkonnější šachový stroj své doby.

V roce 1994 Garry Kasparov prohrál turnajový bleskový zápas v Mnichově s programem Fritz 3 . Program také předčil Viswanathana Ananda , Borise Gelfanda a Vladimira Kramnika . Velmistr Robert Huebner odmítl hrát proti programu a automaticky prohrál. Kasparov hrál druhý zápas s Fritz a vyhrál se 4 výhrami a 2 remízami.

V únoru 1996 Garry Kasparov porazil šachový superpočítač Deep Blue 4-2. Tento zápas je pozoruhodný tím, že první hru vyhrál Deep Blue , čímž se automaticky stal prvním počítačem, který porazil mistra světa v šachu v turnajových podmínkách. Deep Blue vypočítal 50 miliard pozic každé tři minuty, zatímco Kasparov vypočítal 10 pozice za stejnou dobu. Deep Blue měl 200 procesorů . Od té doby šachoví nadšenci a počítačoví inženýři vytvořili mnoho šachových automatů a počítačových programů.

V roce 1997 Deep Blue vyhrál rematch (2 výhry, 3 remízy, 1 prohra) a stal se prvním počítačem, který porazil nejsilnějšího šachistu na světě. Kasparov již nebyl schopen získat zpět, protože IBM upustila od dalších soutěží, protože mise byla dokončena.

Šachové počítače jsou nyní k dispozici za velmi nízkou cenu. Objevilo se mnoho open source programů, zejména Crafty , Fruit a GNU Chess , které jsou volně ke stažení z internetu a mohou porazit mnoho profesionálních šachistů. Nejlepší komerční a bezplatné programy jako Shredder , Fritz nebo Komodo jsou již vysoko nad úrovní lidských šampionů. Open source engine Stockfish je vysoce hodnocen na počítačových seznamech hodnocení, jako je CEGT , CCRL , SCCT a CSS , díky společnému vývoji a testování mnoha lidí [6] .

Motivace

Prvními motivy pro elektronizaci šachu byla touha bavit se, vytvářet programy pro počítačové šachové turnaje a provádět vědecký výzkum , který by umožnil hlubší pochopení lidských kognitivních schopností. Pro první dva účely byly počítačové šachy fenomenálním úspěchem: od prvních pokusů vytvořit šachový program, který by mohl za stejných podmínek konkurovat nejlepším šachistům, neuplynulo ani padesát let.

Alexander Kronrod definoval roli počítačových šachů známou větou: „šachy jsou ovocnou muškou umělé inteligence “. Analogie leží na povrchu: šachy jsou bezpodmínečně intelektuální, ale zároveň jasně formalizovaný, strukturou jednoduchý a kompaktní úkol, to znamená, že jsou vhodným předmětem laboratorního výzkumu umělé inteligence, stejně jako ovocná muška. pro svou malou velikost, plodnost a rychlou výměnu generací je vhodným laboratorním objektem pro studium dědičnosti. Na šachách bylo skutečně testováno mnoho známých metod a oblastí umělé inteligence, včetně metod pro optimalizaci výčtu (vyhnutí se „ kombinatorické explozi “ při výpočtu opcí o několik tahů dopředu), rozpoznávání vzorů , expertní systémy , logické programování .

K překvapení a zklamání mnohých však šachy přivedly lidi jen málo blíže k vytváření strojů s inteligencí podobnou lidské. Moderní šachové programy se ve skutečnosti zastavily v nejprimitivnější fázi intelektuální činnosti: zkoumají obrovské množství možných tahů pro oba hráče pomocí různých metod zkrácení výčtového stromu, včetně relativně jednoduché vyhodnocovací funkce . V kombinaci s databázemi, které ukládají předem spočítané připravené otevření a koncovky, díky rychlosti a paměti moderních počítačů již tyto metody poskytují počítač hrající šachy na velmistrovské úrovni. Z těchto důvodů už počítačový šach nemá tolik akademického zájmu. Roli „Drosophily umělé inteligence“ převzaly jiné mind games , jako je například Go . Mnohem více než v šachu množství výčtu možností v takových hrách omezuje možnost používat jednoduché metody a vyžaduje, aby vědci uplatňovali ve hře spekulativnější přístupy. .

Problémy s implementací

Vývojáři šachových programů musí při jejich psaní učinit řadu rozhodnutí. Tyto zahrnují:

Viz také:

Šachové počítače

Šachový počítač  je specializované zařízení pro hraní šachů . Obvykle se používá pro zábavu a cvičení šachistů v nepřítomnosti lidského partnera, jako prostředek pro analýzu různých herních situací, pro vzájemné soupeření počítačů.

Spotřební šachové počítače jsou obvykle vyrobeny ve formě šachovnice s displejem a sadou kláves pro provádění nezbytných herních akcí. V závislosti na provedení nemusí být deska nijak spojena s počítačovou částí a nemá žádnou elektroniku, nebo naopak může jít o displej, který zobrazuje grafické znázornění herní situace.

Od poloviny 80. let se v SSSR vyráběly spotřební šachové počítače " Elektronika IM -01 ", " Elektronika IM-05 ", " Elektronika IM-29 " ( " Šachový partner "), " Intellect-01 ", " Intellect -02" , "Debut", "Fénix", "100 let Novosibirsku" a další.

Většina programů je založena na metodě výčtu přesunu, existují programy založené na heuristických metodách. Pokus o vytvoření skutečného šachového programu založeného na algoritmu šachového mistra provedl bývalý mistr světa M. Botvinnik a jeho pomocní programátoři B. Shtilman a A. Reznitsky.

Velký průlom ve vývoji šachových programů nastal s využitím neuronových sítí . Například v roce 2017 vytvořil DeepMind program neuronové sítě , který poté, co se několik hodin sám učil, dokázal porazit ty nejlepší šachové algoritmy. V sérii 100 her proti Stockfish AlphaZero nikdy neprohrál a vyhrál 25 her s bílými a tři hry s černými. Algoritmus AlphaZero byl vytvořen na základě programu AlphaGo , který se dříve stal absolutním šampionem ve hře Go . Algoritmus AlphaZero je spíše podobný tomu, jak člověk hraje šachy. Zvažuje méně pozic než jiné programy. Podle autorů odhaduje 80 tisíc pozic za sekundu, oproti 70 milionům za sekundu u Stockfish. Na rozdíl od AlphaGo se AlphaZero dokáže naučit několik úkolů-her najednou, a ne jen jednu. AlphaZero se hru neučil, ale poskytl pouze základní znalosti o pravidlech hry. AlphaZero si pak hrál sám se sebou a vyvíjel taktiku sám [7] [8] .

Struktura šachového programu

První výzkum šachového programování provedl v roce 1950 americký matematik Claude Shannon , který si úspěšně představil dvě hlavní možné vyhledávací metody, které by mohly být použity, a pojmenoval je „Typ A“ a „Typ B“.

Programy typu A používají takzvaný přístup „hrubé síly“ a učí se každou možnou pozici do pevné hloubky pomocí algoritmu Minimax . Shannon tvrdil, že tato metoda by byla nepraktická ze dvou důvodů.

Za prvé, s asi třiceti možnými pohyby v typické pozici, trvá asi 12,5 minuty, než se naučíte asi 753 milionů pozic uzlů (počítáno asi tři pohyby dopředu pro obě strany), a to i ve „velmi optimistickém“ případě, kdy je počítač schopen vyhodnotit milion pozic za sekundu (dosáhnout toho trvalo čtyřicet let).

Za druhé, programy typu A zanedbávaly takzvaný problém statického stavu tím, že se pokoušely vyhodnotit pozici na začátku výměny figurek nebo jiné důležité sekvence tahů (jako jsou taktické kombinace). Shannon proto předpokládal, že s algoritmem typu A se enormně zvýší počet zkoumaných pozic, což by výrazně zpomalilo program. Namísto plýtvání výpočetním výkonem počítače pro vyšetřování špatných nebo nevýznamných pohybů Shannon navrhl použít programy typu B. Tato metoda má dvě vylepšení:

  1. Je použito vyhledávání "tichosti" .
  2. Nezkoumá vše, ale jen některé vhodné pohyby pro každou pozici.

To dalo programům možnost vypočítat důležité pohyby do větší hloubky a provést je v rozumném čase. První přístup obstál ve zkoušce času: vše moderní[ kdy? ] programy před vyhodnocením pozice použijí koncové "klidné" vyhledávání.

Základní algoritmy moderních programů

Počítačové šachové programy považují šachové tahy za strom hry. Teoreticky by měli vyhodnotit všechny pozice, které nastanou po všech možných tazích, pak všechny možné tahy po těchto tazích atd. Každý tah jednoho hráče se nazývá „ uzel “. Výčet tahů pokračuje, dokud program nedosáhne maximální hloubky hledání nebo nezjistí, že bylo dosaženo konečné pozice (například mat nebo pat ). Již na základě posouzení pozice zvolí nejlepší strategii. V každé pozici je počet možných tahů hráče roven přibližně 35. Pro kompletní rozbor čtyř půltahů (dva tahy každého hráče) je potřeba prozkoumat asi jeden a půl milionu možností, pro šest - téměř dvě miliardy. Analýza 3 tahy dopředu je na dobrou hru velmi málo.

Programátoři se snaží různými způsoby omezit počet tahů, které je třeba vyřešit ( ořezávání stromu hledání  - prořezávání stromu hry ). Nejoblíbenější je alfa-beta prořezávání , které nebere v úvahu pozice, které mají nižší skóre než ty, které již byly hodnoceny.

Přibližná implementace softwaru:

private int AlphaBeta ( int color , int Hloubka , int alpha , int beta ) { if ( Hloubka == 0 ) return Evaluate ( color ); int bestmove ; Pohyby vektoru = GenerateMoves (); for ( int i = 0 ; i < tahy . velikost (); i ++ ) { makeMove ( tahy . get ( i )); eval = - AlphaBeta ( - barva , Hloubka - 1 , - beta , - alfa ); unmakeMove ( moves . get ( i )); if ( eval >= beta ) return beta ; if ( eval > alpha ) { alpha = eval ; if ( Hloubka == výchozíHloubka ) { bestmove = pohyby . dostat ( i ); } } } return alpha ; }

Příklad prvního hovoru:

AlphaBeta ( 1 , 6 , celé číslo . MIN_VALUE , celé číslo . MAX_VALUE );

Při prvním volání je volána metoda (funkce) s maximálním oknem. V rekurzivních voláních jsou proměnné alfa a beta zaměněny s obrácením znaménka a „zúží“ množství vyhledávání.

Druhou běžnou metodou je iterativní prohlubování . Nejprve se strom hry projde do určité hloubky a poté se zvýrazní několik nejlepších tahů. Program poté tyto pohyby vyhodnotí ve vztahu k větší hloubce, aby se dozvěděl více o jejich důsledcích. Tato operace se opakuje až do nejlepšího možného průběhu z hlediska programu. Tento přístup vám umožňuje rychle zahodit značné procento neperspektivních herních možností. Například nemá smysl zkoumat, co se stane, když vyměníte dámu za pěšce, když jsou v pozici lepší tahy.

Důležitým prvkem šachových algoritmů je systém hodnocení pozice . Zcela přesně nelze pozici posoudit, protože k tomu by bylo nutné analyzovat biliony sekvencí tahů od začátku do konce hry. Pokud by existovala funkce, která by umožňovala spolehlivě odhadnout pozici, úloha hraní šachů by se zjednodušila na posouzení každého z několika desítek aktuálně dostupných tahů a nebylo by potřeba počítat další tahy.

Proto je hodnocení pozice programem velmi přibližné, i když hodnotící funkce programů jsou neustále zdokonalovány. Hodnotící funkce obvykle hodnotí pozice v setinách pěšce. Tyto funkce vyhodnocují pouze několik jednoduchých parametrů:

  1. Za prvé, toto je hodnocení materiálu: každý pěšec je 1 bod, střelec a jezdec jsou po 3, věž je 5, dáma je 9. Král je někdy oceněn na 200 pěšců (Shannonův článek) nebo 1 000 000 000 pěšců ( program byl vyvinut v SSSR v roce 1961), aby zajistil, že mat převáží všechny ostatní faktory. Pokročilejší funkce mají přesněji nastavené koeficienty hodnoty figurek, které závisí na fázi hry a pozici na šachovnici.
  2. Za druhé, poziční výhoda, která závisí na pozici figurek na šachovnici; například blokovaný kus je oceněn méně než volný; hodnotí se i bezpečnost krále, dominance nad středem šachovnice atd.; existují i ​​propracovanější skórovací systémy (některé dokonce využívají znalost neuronových sítí ), nicméně i takto jednoduchá funkce umožňuje hrát programu velmi silně; v šachu není hlavní problém v posouzení pozice, ale ve výčtu stromu možných tahů.

Funkce vyhodnocování pozice jsou neúčinné, když se situace na šachovnici dramaticky mění s každým tahem, kdy například dochází k výměně figurek nebo se provádí nějaká šachová kombinace. Odtud pochází koncept statického stavu ( klidového ) a horizontu výpočtu . Ve statickém stavu probíhá na šachovnici pomalý poziční boj a horizont výpočtu hodný pozornosti je velmi široký. To znamená, že rozhodující změna nenastane v budoucnosti, kterou lze snadno předvídat. V takové situaci jsou funkce vyhodnocování pozice důležitější než pokusy o výpočet možných možností.

V dynamické situaci může hra založená na funkci hodnocení pozice vést ke zcela chybným rozhodnutím. V krajním případě, pokud má program krátkodobě laděný horizont výpočtu a zohledňuje pouze krátkodobé hodnocení pozice, pak může dojít ke konci právě v okamžiku, kdy dojde k výměně dam a jedna z nich již může být poražen a druhý ještě nebyl nahrazen. Vyhodnocení takového stavu programem vede ke zcela mylnému závěru, že jeden z hráčů má obrovskou výhodu, přičemž jedním tahem zmizí, což však program nevidí. Pokud stav ještě není statický, je potřeba pokračovat ve výměně až do konce a vyhodnotit situaci, kdy již nedochází k možným radikálním změnám. Lidé obecně tyto dvě situace intuitivně rozlišují – šachové programy naopak musí mít soubor podmínek, které jim umožní změnit způsob fungování ve statických a dynamických stavech.

Obtížnější je hodnocení tahů v otevření . Většina[ kolik? ] programy používají předem napsané otevírací knihovny, které mají určitý malý počet počátečních tahů a odpovědí na určitý počet tahů, který není konstantní, protože závisí na typu otevření.

Počítač versus člověk

Ještě v 70. a 80. letech zůstávala otevřená otázka, kdy bude šachový program schopen porazit nejsilnější šachisty. V roce 1968 se mezinárodní velmistr David Levy vsadil, že dalších deset let ho žádný počítač nepřekoná. Vyhrál sázku tím, že v roce 1978 porazil šachy 4.7 (v té době nejsilnější) , ale věděl, že netrvá příliš dlouho a počítače porazí mistry světa. V roce 1989 program Deep Thought porazil Levyho.

Ale programy byly stále hluboko pod úrovní mistra světa, kterou předvedl Garry Kasparov, když v roce 1991 dvakrát porazil stejnou Deep Thought .

To trvalo až do roku 1996, kdy se odehrál zápas mezi Kasparovem a počítačem Deep Blue od IBM , kde šampion prohrál svou první hru. Počítačový šachový program poprvé porazil mistra světa pod standardní časovou kontrolou. Kasparov však změnil styl hry, ze zbývajících pěti her tři vyhrál a dva remizoval. V květnu 1997 vylepšená verze Deep Blue porazila Kasparova se skóre 3,5-2,5. V roce 2003 byl natočen dokumentární film, který zkoumal Kasparovovy výtky ohledně možného využití šachisty IBM, nazvaný „Zápas skončil: Kasparov a stroj“ ( Eng . Game Over: Kasparov and the machine ). Film tvrdil, že tolik medializované vítězství Deep Blue bylo zmanipulováno tak, aby zvýšilo tržní hodnotu IBM. Částečně byla tato obvinění oprávněná. Pravidla umožňovala vývojářům měnit program mezi hrami. Deep Blue byl mezi hrami měněn, aby lépe porozuměl Kasparovovu hernímu stylu strojem, což pomohlo vyhnout se endgame pasti , do které program dvakrát spadl.

IBM Deep Blue po zápase rozebralo, od té doby se s tímto počítačem ani jednou nehrálo. Následně proběhly další zápasy Man vs.

S rostoucím výpočetním výkonem se šachové programy běžící na osobních počítačích začaly dostávat na úroveň nejlepších šachistů. V roce 1998 program Rebel 10 porazil Viswanathana Ananda , který byl tehdy světovou jedničkou. Ne všechny hry se však hrály se standardním časovým ovládáním. Z osmi her v zápase se čtyři hrály s bleskovou kontrolou (pět minut plus pět sekund na tah), které Rebel vyhrál 3:1. Další dvě hry byly s polobleskovým řízením (každý patnáct minut), které program také vyhrál (1,5-1). Nakonec se poslední dvě partie hrály se standardní turnajovou časovou kontrolou (dvě hodiny na 40 tahů a hodina na zbytek tahů) a zde Anand vyhrál se skóre 0,5-1,5. V té době v rychlých hrách hrály počítače lépe než lidé, ale s klasickým řízením času nebyla výhoda počítače oproti člověku stále tak velká.

V roce 2000 komerční šachové programy Junior a Fritz dokázaly remízovat zápasy proti předchozím mistrům světa Garry Kasparovovi a Vladimiru Kramnikovi .

V říjnu 2002 se Vladimir Kramnik a Deep Fritz utkali v osmizápasovém utkání v Bahrajnu . Zápas skončil remízou. Kramnik vyhrál druhou a třetí hru pomocí tradiční protipočítačové taktiky – hrát opatrně, s cílem získat dlouhodobou výhodu, kterou počítač ve svém vyhledávacím stromu nevidí. Přesto Fritz vyhrál pátou hru po Kramnikově chybě. Mnoho turnajových komentátorů označilo šestý zápas za velmi vzrušující. Kramnik, který má lepší pozici na začátku střední hry , se pokusil obětovat kus, aby vytvořil silný taktický útok (taková strategie je proti počítačům velmi riskantní). Fritz našel silnou obranu a tento útok výrazně zhoršil Kramnikovu pozici. Kramnik hru vzdal v domnění, že je hra prohraná. Následná analýza však ukázala, že Fritz pravděpodobně nebyl schopen přivést hru k výhře. Poslední dva zápasy skončily remízou.

V lednu 2003 hrál Garry Kasparov proti juniorskému programu v New Yorku . Zápas skončil výsledkem 3:3.

V listopadu 2003 hrál Garry Kasparov s X3D Fritz . Zápas skončil výsledkem 2:2.

V roce 2005 Hydra , speciální šachový softwarový a hardwarový systém s 64 procesory, porazil Michaela Adamse  - šachistu, který byl v té době sedmým nejlepším šachistou Elo na světě  - v šestizápasovém zápase se skóre 5,5. -0,5 (i když Adamsova domácí příprava byla mnohem nižší než Kasparovova v roce 2002). Někteří komentátoři věřili, že Hydra bude mít konečně nepopiratelnou výhodu nad nejlepšími šachisty.

V listopadu až prosinci 2006 hrál mistr světa Vladimir Kramnik s programem Deep Fritz . Zápas skončil výhrou auta se skóre 2-4.

Endgame databáze

Další databáze Endgame

Počítače se používají k analýze některých pozic na konci hry . Takové databáze koncových her jsou vytvářeny pomocí zpětného pohledu , počínaje pozicemi, kde je znám konečný výsledek (např. kde jedna strana dostala mat), a sledováním, jaké další pozice jsou v dosahu pohybu, pak jedním pohybem od nich atd. Ken Thompson , známý jako hlavní návrhář operačního systému UNIX byl průkopníkem v této oblasti.

Koncová hra byla dlouho znatelnou slabinou šachových programů, protože hloubka vyhledávání byla nedostatečná. Ani programy, které hrály sílu mistra, tedy nejsou schopny vyhrát v koncových pozicích, kde by si výhru vynutil i středně silný šachista.

Výsledky počítačové analýzy ale někdy lidi překvapily. V roce 1977 byl Thompsonův šachový stroj Belle , využívající koncové databáze král+věž versus král+královna, schopen teoreticky prohrát koncové hry proti titulovaným šachistům.

Většina velmistrů odmítla hrát proti počítači v endgame královna versus věž , ale Walter Brown tuto výzvu přijal. Pozice byla nastavena tak, že teoreticky bylo možné bezchybnou hrou vyhrát na 30 tahů. Brown dostal dvě a půl hodiny na padesát tahů. Po čtyřiceti pěti tazích Brown souhlasil s remízou, protože v posledních pěti tazích nedokázal vyhrát. V konečné pozici mohl Brown mat mat až po sedmnácti tazích.

V roce 2002 byly publikovány hlavní databázové formáty koncových her, včetně Edward Tablebases , De Koning Endgame Database a Nalimov Endgame Tablebases , které nyní podporuje mnoho šachových programů jako Rybka , Shredder a Fritz . Koncové hry s pěti nebo méně kusy byly plně analyzovány. Šestičlenné koncovky byly analyzovány s výjimkou pětičlenných pozic proti osamělému králi. Mark Burzhutsky a Yakov Konoval analyzovali některé koncovky se sedmi kusy. Ve všech těchto databázích koncových her je rošáda považována za nemožnou.

Databáze jsou generovány tak, že se v paměti uchovávají odhady pozic, které se dosud vyskytly, a tyto výsledky se používají ke zmenšení vyhledávacího stromu, pokud se takové pozice znovu objeví. Pouhá účelnost zapamatovat si skóre všech dříve dosažených pozic znamená, že limitujícím faktorem při řešení koncovky je jednoduše velikost paměti, kterou počítač má. S nárůstem kapacity počítačové paměti se dříve nebo později vyřeší koncové hry se zvýšenou složitostí.

Počítač využívající databázi koncovek bude po dosažení pozice v nich schopen bezchybně hrát a okamžitě určit, zda je pozice výherní, prohrávající nebo remízová, a také najít nejrychlejší a nejdelší způsob, jak dosáhnout výsledku. Znalost přesného odhadu polohy je také užitečná při zvyšování síly počítače, protože umožní programu volit způsoby, jak dosáhnout cíle v závislosti na situaci [to znamená zjednodušení a výměna pro získání jasně prozkoumané polohy].

  • Všechny 5místné koncovky zabírají 7,03 GB.
  • Všechny 6místné koncovky zabírají 1,205 TB.
  • Všechny 7místné koncovky zabírají 140 TB.
  • Všechny osmimístné koncovky zaberou přibližně 10 PB.

Hraní proti softwaru

Počítače jsou znatelně napřed před lidmi v krátkých taktických manévrech, které jsou v hloubce hledání programu. Obzvláště nebezpečná je v takových případech královna, která je jako stvořená pro krátkodobé manévry. Proto se ve hře proti počítači lidé často pokoušejí přimět program k výměně královen. To se stane například tehdy, když si člověk na začátku hry záměrně zhorší pozici a počítač to považuje za pro něj prospěšné. Pokud si program nastaví hodnocení pozice jako preferované pro sebe, pak s největší pravděpodobností vymění kousky, a to je pro člověka výhodné. Programátoři se samozřejmě o takových „trikách“ dozvěděli a v nejnovějších verzích jejich programů je to zohledněno.

Místo toho musí šachisté hrát proti počítači s dlouhodobými manévry, které program v hloubce hledání nevidí. Například Kramnik vyhrál proti Deep Fritzovi dlouhodobým prohozeným pěšcem, jehož výhody Fritz objevil příliš pozdě.

Šachy a jiné hry

Úspěch šachových programů naznačuje, že je možné psát programy, které hrají stejně dobře v jiných hrách, jako je shogi nebo go .

Podobné algoritmy by možná mohly být použity při hraní jiných druhů šachů. V shogi je více možných pohybů, materiální výhoda znamená mnohem méně, ale poziční výhoda je mnohem významnější. Aby byla zaručena bezpečnost krále, budují se složité systémy, ale pro počítač není snadné tyto systémy vyhodnotit. Počet figurek v této hře je konstantní, a proto se hra postupem času neusnadňuje, takže není možné vytvořit základnu koncovek. Neexistují zde ani zcela statické stavy, protože hra je po celou dobu redukována na poziční boj. Proto napsat dobrý program pro hraní shogi je mnohem obtížnější než napsat šachový program, i když na tuto hru lze aplikovat mnoho zkušeností v šachových hrách. .

Go se pro programátory stalo skutečnou výzvou . Složitost výpočtu Go je o několik řádů větší než v šachu. Na každém kroku je možné asi 200-300 tahů, přičemž statické posouzení životnosti skupin kamenů je prakticky nemožné. Jeden tah zde může zcela zničit celou hru, i když ostatní tahy byly úspěšné. Proto algoritmy, které byly úspěšné pro hraní šachů, nejsou dostatečné pro hraní Go na profesionální úrovni. V říjnu 2015 však AlphaGo , počítačový program vyvinutý společností Google DeepMind , poprvé zvítězil v souboji s 2-danovým profesionálem Fan Hui . A v březnu 2016 vyhrála zápas s Lee Sedolem , profesionálem na 9 danů, se skóre 4-1.

Časová osa počítačových šachů

  • 1769 – Wolfgang Kempelen vytvořil šachový automat, který se stal jedním z největších podvodů té doby.
  • 1868 – Charles Hooper představil samopal Ajeeb  – který obsahoval i šachistu.
  • 1912 – Leonardo Torres Quevedo postavil stroj, který mohl hrát konečnou hru King + Rook vs. King .
  • 1948 – Vyšla kniha Norberta Wienera „Kybernetika“, která popisuje, jak lze vytvořit šachový program pomocí minimax vyhledávání s omezenou hloubkou a vyhodnocovací funkcí.
  • 1950 – Claude Shannon publikoval Programming the Computer to Play Chess, jeden z prvních článků o počítačových šachech.
  • 1951 – Alan Turing vyvinul první program na papíře schopný hrát šachy.
  • 1952 – Dietrich Prinz vyvinul program, který řešil šachové problémy.
  • 1956 - první šachová hra, kterou bylo možné hrát pomocí programu vyvinutého Paulem Steinem a Markem Wellsem pro počítač MANIAC I ( Los Alamos , USA).
  • 1956 – John McCarthy vynalezl alfa-beta vyhledávací algoritmus .
  • 1958 – NSS se stal prvním programem, který používal alfa-beta vyhledávací algoritmus.
  • 1958 – První šachové programy, které mohly hrát plné šachové hry, byly vytvořeny Alexem Bernsteinem a druhé sovětskými programátory.
  • 1962 - První program, který hrál uvěřitelně, byl Kotok-McCarthy .
  • 1966-1967 - první zápas mezi programy. V tomto zápase stroj ITEP M-2 porazil program Kotok-McCarthy na stroji Stanford University MANIAC . Zápas trval 9 měsíců, komunikace probíhala telegraficky .
  • 1967 – Mac Hack Six , vyvinutý Richardem Greenblattem , se stal prvním programem, který porazil člověka v turnajovém čase.
  • 1970 je prvním ročníkem North American Computer Chess Championship .
  • 1974 – Caissa vyhrála první mistrovství světa v počítačovém šachu.
  • 1977 - vznik prvních šachových mikropočítačů CHESS CHALLENGER [9] a BORIS .
  • 1977 - Vytvoření Mezinárodní asociace počítačového šachu.
  • 1977 – Chess 4.6 se stal prvním šachovým počítačem, který uspěl ve vážném šachovém turnaji.
  • 1980 je prvním ročníkem mistrovství světa v mikropočítačovém šachu.
  • 1981 - Cray Blitz vyhrál Mississippi State Chess Championship se skóre 5-0 a hodnocením výkonu 2258.
  • 1982 – Belle Appliance Kena Thompsona získává titul mistra USA.
  • 1988 – HiTech , vyvinutý Hansem Berlinerem a Carlem Ebelingem , vyhrál zápas proti velmistrovi Arnoldu Denkerovi se skóre 3,5-0,5.
  • 1988 – Deep Thought se dělil o první místo s Tonym Milesem v Software Toolworks Open ( Los Angeles ), před bývalým mistrem světa Michailem Talem a několika velmistry, zejména Samuelem Reshevskym , Walterem Brownem , Alonem Greenfeldem a Michailem Gurevichem . V tomto turnaji Deep Thought porazil GM Benta Larsena a stal se prvním počítačem, který porazil GM v turnaji.
  • 1992 – poprvé mikropočítač, Chessmachine Gideon 3.1 , vyvinutý Edem Schroederem (Ed Schröder), vyhrává VII. mistrovství světa v šachu mezi počítačovými programy , před sálovými počítači a superpočítači .
  • 1997 - Deep Blue vyhrál zápas proti Garry Kasparovovi (2-1=3).
  • 2002 - Vladimir Kramnik vyrovnal zápas proti Deep Fritz .
  • 2003 - Kasparov hrál remízu proti Deep Junior .
  • 2003 - Kasparov hrál remízu proti X3D Fritz .
  • 2005 - Hydra vyhrála zápas s Michaelem Adamsem se skóre 5,5-0,5.
  • 2005 - tým počítačů ( Hydra , Deep Junior a Fritz ), porazil se skóre 8,5-3,5 tým šachistů ( Veselin Topalov , Ruslan Ponomarev a Sergey Karyakin ), kteří měli průměrné hodnocení Elo 2681 .
  • 2006 - Mistr světa, Vladimir Kramnik , poražený Deep Fritz 4-2.
  • 2014 - Americký velmistr Hikaru Nakamura prohrál minizápas s programem Stockfish 5 se skóre 1-3 (+0=2-2). Muž odehrál první dvě partie s handicapem jednoho pěšce a další dvě bez handicapu, ale s využitím pokynů šachového programu Rybka 3 .

Teoretici počítačového šachu

Viz také

Poznámky

  1. Mat, Human: How Computers Got So Good at Chess Archived 13. ledna 2017 na Wayback Machine  (přístup 11. ledna 2017)
  2. Alan Turing vs Alick Glennie Archivováno 19. února 2006 na Wayback Machine // "Turingův test", 1952
  3. 1 2 Rané počítačové šachové programy Archivováno 21. července 2012. // Báječný svět šachů Billa Walla
  4. Historie počítačových šachů od Billa Walla Archivováno 28. října 2009.
  5. Kaissa (program)  // Wikipedie. — 20. 1. 2019.
  6. Fronta na testování Stockfish . Získáno 19. června 2014. Archivováno z originálu dne 28. listopadu 2018.
  7. Za pouhé 4 hodiny umělá inteligence Google zvládla všechny šachové znalosti v  historii . vědecké upozornění. Získáno 28. listopadu 2018. Archivováno z originálu 10. listopadu 2018.
  8. Umělá inteligence od Googlu zvládla šachy na úrovni šampionů za 4 hodiny . Nový čas (7. 12. 2017). Datum přístupu: 28. listopadu 2018. Archivováno z originálu 28. listopadu 2018.
  9. Chess Challenger - Chess Programming Wiki . Získáno 24. 8. 2016. Archivováno z originálu 13. 7. 2018.

Literatura

  • Šachy. Hrajte a vyhrajte! [Text] / Nikolaj Kaliničenko. - Moskva [a další]: Peter, 2012. - 269, [1] s. : nemocný.; 25 cm - ISBN 978-5-459-01609-3
  • Kornilov CZ Programování šachů a jiných logických her. - Petrohrad. : BHV-Petersburg, 2005. - ISBN 5-94157-497-5 .

Články