Tietokoneshakki tarkoittaatietokoneohjelman pelaamaashakkia. Shakissa on jokaisessa asemassa suhteellisen vähän siirtovaihtoehtoja, joten shakkilaudan analysoiminen sopii verraten helpostibrute-force tyyppiselle ohjelmalle. Myös sofistikoituneempia menetelmiä on kehitetty.[1]
Nykyään tietokoneet pelaavat hyvin laadukasta shakkia, eivätkä käytännössä enää ole ihmisen voitettavissa (vaikkakin voitto yksittäisessä pelissä on teoriassa edelleen mahdollinen). Viimeinen tunnettu ihmisen voitto huipputason tietokoneohjelmasta turnausolosuhteissa onRuslan Ponomariovin voitto Fritz 9:stä 21. marraskuuta 2005.[2]
Shakkiohjelman perusrakenteeseen kuuluu arviointifunktio, joka arvioi pelitilanteiden edullisuutta (yksinkertaisimmallaan esimerkiksi laudalla olevien omien ja vastustajan nappuloiden määränä), ja hakualgoritmi, joka käy läpi mahdollisia tulevia siirtoyhdistelmiä etsien siirtoa, joka suurimmalla todennäköisyydellä johtaisi edulliseen pelitilanteeseen tulevaisuudessa. Shakin ohjelmoimisen päävaikeutena on, että mahdollisten pelitilanteiden määrä kasvaa nopeasti erittäin suureksi, joten kaikki mahdolliset siirtoyhdistelmät tutkimalla edes nykyiset supertietokoneet eivät pystyisi laskemaan peliä kovinkaan monta siirtoa eteenpäin. Sen vuoksi on kehitetty heuristiikkoja, joilla huonolta näyttävät hakupolut katkaistaan pian. Tietokone pystyy laskemaan siirtoja eteenpäin valtavan paljon nopeammin kuin ihminen, mutta toisaalta ihminen osaa paremmin sivuuttaa huonot siirtomahdollisuudet heti. Vastatakseen taitavan ihmispelaajan intuitiivisiin pitkän tähtäimen strategioihin, tietokone tarvitsee paljon laskentatehoa, koska siirtoja on laskettava kauas eteenpäin. Tämän vuoksi tietokoneet ovat pärjänneet shakissa ihmisille vasta viime aikoina.
Shakkiohjelmissa on myös mahdollista käyttää alku- ja loppupelikirjastoja johon on tallennettu hyväksi tai varmasti oikeaksi havaittuja siirtoja. Shakkiohjelmiin voidaan myös liittää tietokantoja johon on asennettu analysoituja pelejä joita seuraamalla tietokone pärjää mahdollisimman hyvin pelaajaa vastaan. Shakkiohjelmiin voidaan myös lisätä analysointiohjelma joka itse laskee asemaa eteenpäin ja tallentaa tietokantaan oikeaksi katsomiaan siirtoja parantaen näin vahvuuttaan.
Shakki on yksi vanhimpia tietokoneiden ohjelmointiin liittyvistä ongelmista. EsimerkiksiKonrad Zuse kirjoitti jo vuodesta 1943 eteenpäin kehittämällään Plankalkül-ohjelmointikielellä 49 sivua algoritmeja shakin pelaamiseen, vaikka itse ohjelmointikielelle ei ollut toteutusta.[3]
Neuvostoliitossa rakennettiin 1960-luvun alussaKaissa-niminen shakkiohjelma, joka sittemmin voitti tietokoneshakin maailmanmestaruuden. Ensimmäinen kansainvälinen tietokoneshakkiottelu pidettiin vuonna 1967. Tuolloin Kaissa pelasi amerikkalaista shakkiohjelmaa vastaan voittaen tämän 3-1. Tukholmassa pidettiin vuonna 1974 ensimmäinen tietokoneiden maailmanmestaruusturnaus. Tuolloin 13 konetta kahdeksasta maasta pelasi neljä kierrosta. Koneet sijaitsivat koko ajan kotimaissaan ja tiedonsiirto tapahtui puhelimitse koordinaatiokeskukseen. Kaissa voitti turnauksen ja seuraavina olivat tasapisteinChess jaChaos. Toinen MM-turnaus järjestettiin Torontossa 1977. Voittaja oli tuolloin Chess 4.6 ennen jaetulle kakkossijalle yltäneitäDuchessiä ja Kaissaa. Kolmannet MM-kisat järjestettiinLinzissä 1980 ja voiton jakoivatBelle ja Chaos. Neljännen maailmanmestaruuden voittiCray Blitz 1983 New Yorkissa. Neuvostoliiton kaissa ohjelmiston kehittely lopetettiin vuonna 1975 ja se pelasi viimeisen ottelun 1977, katsottiin että ohjelmoijilla on parempaakin käyttöä.
Vielä 1990-luvulla pelit olivat tasaisempia: esimerkiksiDeep Blue voitti vuonna 1996 shakin maailmanmestarinGarry Kasparovin ensimmäisessä pelissään. Kasparov voitti kuitenkin Deep Bluen kolmesti joten Kasparov voitti ottelun 4–2.
Vuonna 1997 käyty uusintaottelu kuitenkin järisytti shakkimaailmaa. Ottelun kuudesta pelistä Deep Blue voitti kaksi, Kasparov yhden ja kolmesti pelattiin tasan. Tietokoneohjelma oli siis voittanut shakin maailmanmestarin luvuin 3,5–2,5. Ratkaiseva viimeinen peli oli erittäin dramaattinen. Tietokoneohjelma pelasi hyvin ja kovan paineen alla Kasparov teki virheitä ja hävisi pelin vain 19 siirrossa[4].
2000-luvun alun vahvimpia shakkitietokoneita oliHydra. Se voitti 21.–26. kesäkuuta 2005 pelatussa kuuden ottelun sarjassaMichael Adamsin 5 1/2-1/2. Hydra ei hävinnyt kertaakaan ihmiselle turnausmuotoisessa pelissä, mutta esimerkiksi kansainvälinen suurmestariArno Nickel on voittanut Hydran kuusi kuukautta kestäneessä kirjeshakissa. Hydra ei ollut kuitenkaan yleisesti saatavilla, vaan se oli 64Xeon-suorittimenklusteri.
Eräs vahvimmista avoimen lähdekoodin shakkiohjelmista on Marco Costalban, Joona Kiiskin, Gary Linscottin and Tord Romstadin tekemä ohjelmaStockfish. Muita tunnettuja ohjelmia ovatBob Hyattin ohjelmatCrafty, joka tuli tunnetuksi ja suosituksi Tim ManninWinboard-nimisen Windows-clientin analyysimoottorina, ja sen edeltäjäCray Blitz, joka voitti tietokoneshakin maailmanmestaruuden vuosina 1983 ja 1986. Muita tunnettuja shakkiohjelmia ovat esimerkiksiChessmaster,Fritz ja Vasik Rajlichin menestysohjelmaRybka, joka 2007–2010 voitti neljä perättäistä maailmanmestaruutta, mutta joutui syytöksiin koodin plagioinnista.
Vuonna 2017GooglenDeepMind-tekoälykehittämö julkisti shakkiohjelmanAlphaZero, joka perustui yhtiönAlphaGoGo-peliohjelmaan. Google väitti ohjelman voittaneen Stockfish 8:n 100-pelin ottelussa häviöttömällä tuloksella 64–36 vain tuntien opettelun jälkeen. Google julkisti väitetystä ottelusta 10 peliä.[5][6]
Ruotsalainen tietokoneshakin harrastajien sivustoThe Swedish Chess Computer Association (SSDF) vertailee aktiivisesti eri shakkiohjelmia pitäen ranking listaa parhaista shakkiohjelmista.[7] Myös englantilainen tietokoneshakin harrastajien ryhmä CCRL (Computer Chess Rating Lists) tekee vastaavia vertailuja.[8]. Saksalaiset CEGT[9], IPON[10] ja SWCR[11] vertailevat ohjelmia,chess engines, eri prosessoreilla, muistimäärillä ja eri käyttöympäristöissä.