Datorschack är en populär term från forskningen om artificiell intelligens , vilket betyder skapandet av programvara och speciella datorer för att spela schack . Termen "datorschack" används också för att hänvisa till ett spel mot ett datorschackprogram, ett spel med program sinsemellan. Sedan 2000-talet har inte ens de starkaste mänskliga spelarna någon chans mot schackprogram [1] .
Schackmaskinernas historia är äldre än datorernas historia. Idén om en schackmaskin går tillbaka till 1700-talet. Omkring 1769 dök den mekaniska turkiska schackmaskinen upp. Den var avsedd för underhållning av drottning Maria Theresia. Maskinen spelade riktigt bra - det fanns en stark schackspelare inuti den som gjorde dragen.
Skapandet av mekaniska schackautomater upphörde med tillkomsten av digitala datorer i mitten av 1900-talet. 1951 skrev Alan Turing Turochamp - algoritmen , med vilken en maskin kunde spela schack, endast uppfinnaren själv fungerade som en maskin. Detta nonsens fick till och med namnet - "Turings pappersmaskin". Det tog en person mer än en halvtimme att göra ett drag. Algoritmen var ganska villkorad, och även inspelningen av spelet, där Turings "pappersmaskin" förlorade mot en av hans kollegor, har bevarats [2] . På grund av bristen på tillgång till en dator har programmet aldrig testats i drift.
Ungefär vid denna tid, 1951, skrev matematikern Claude Shannon sin första uppsats om schackprogrammering. Han skrev: " Även om det kanske inte har någon praktisk betydelse, är frågan i sig teoretiskt intressant, och låt oss hoppas att lösningen av detta problem kommer att fungera som en drivkraft för lösningen av andra problem av liknande karaktär och av större betydelse ." Shannon noterade också den teoretiska existensen av det bästa draget i schack och den praktiska omöjligheten att hitta ett.
Nästa steg i utvecklingen av schackprogrammering var utvecklingen vid Los Alamos kärntekniska laboratorium 1952 på en MANIAC I -dator med en klockfrekvens på 11 kHz av ett schackprogram för att spela på ett 6x6-bräde, utan deltagande av elefanter. Det är känt att denna dator spelade ett spel mot en stark schackspelare, den varade i 10 timmar och slutade med schackspelarens seger. Ett annat parti spelades mot en tjej som nyligen hade lärt sig att spela schack. Maskinen vann på det 23:e draget, för sin tid var det en stor bedrift.
1957 skapade Alex Bernstein det första programmet för att spela på ett standardschackbräde och med deltagande av alla pjäser [3] .
En viktig utveckling för datorschack inträffade 1958 när Allen Newell , Cliff Shawoch Herbert Simon utvecklade en sökträdsreduktionsalgoritm som kallas " alpha-beta pruning " [3] [4] på vilken sökfunktionerna för alla starka moderna program är byggda.
1967, i en match med fyra spel, slog ett program skapat vid Institute for Theoretical and Experimental Physics (ITEP) Stanford Universitys schackprogram med 3-1. Enligt stormästarna som spelade med programmet spelade det med styrkan i den tredje schackkategorin . [5]
Vid det första världsmästerskapet i schack bland datorprogram i augusti 1974 i Stockholm ( Sverige ) vann Kaissa-programmet , skapat 1971 av anställda vid Institute of Control Problems vid USSR Academy of Sciences, alla fyra partierna och blev den första världsmästaren bland schackprogrammen, omkörningsprogrammen "Chess 4", "Chaos" och "Ribbit", som fick 3 poäng vardera. Mästerskapet deltog av 13 bilar från 8 länder i världen, som överförde sina rörelser till mästerskapshallen till operatören via telefon.
Den första maskinen som nådde nivån som en schackmästare var , 1983 av Joe Condon och Thompson . Belle var den första datorn designad enbart för att spela schack. Dess officiella Elo-betyg var 2250, vilket gör den till sin tids mest kraftfulla schackmaskin.
1994 förlorade Garry Kasparov en turneringsblitzmatch i München mot Fritz 3 -programmet . Programmet överträffade även Viswanathan Anand , Boris Gelfand och Vladimir Kramnik . Stormästaren Robert Huebner vägrade spela mot programmet och förlorade automatiskt. Kasparov spelade den andra matchen med Fritz och vann med 4 vinster och 2 oavgjorda.
I februari 1996 besegrade Garry Kasparov superdatorn Deep Blue schack med 4-2. Denna match är anmärkningsvärd eftersom det första spelet vanns av Deep Blue , och blev automatiskt den första datorn att besegra en världsmästare i schack i turneringstermer. Deep Blue beräknade 50 miljarder positioner var tredje minut medan Kasparov beräknade 10 positioner för samma tid. Deep Blue hade 200 processorer . Sedan dess har schackentusiaster och dataingenjörer skapat många schackmaskiner och datorprogram.
1997 vann Deep Blue en revansch (2 vinster, 3 oavgjorda, 1 förlust) och blev den första datorn att besegra den starkaste schackspelaren i världen. Kasparov kunde inte längre ta igen, eftersom IBM övergav ytterligare tävlingar, med tanke på att uppdraget var avslutat.
Nu finns schackdatorer till ett mycket lågt pris. Många program med öppen källkod har dykt upp, särskilt Crafty , Fruit och GNU Chess , som är fritt nedladdningsbara från Internet och kan slå många professionella schackspelare. De bästa kommersiella och gratisprogrammen som Shredder , Fritz eller Komodo ligger redan långt över nivån för mänskliga mästare. Den öppna källkodsmotorn Stockfish är högt rankad på datorbetygslistor som CEGT , CCRL , SCCT och CSS , tack vare den gemensamma utvecklingen och testningen av många människor [6] .
De första motiven för datoriseringen av schack var önskan att ha roligt, skapa program för datorschackturneringar och bedriva vetenskaplig forskning som skulle möjliggöra en djupare förståelse av människans kognitiva förmåga. För de två första syftena har datorschack varit en fenomenal framgång: mindre än femtio år har gått från de första försöken att skapa ett schackprogram som kunde konkurrera på lika villkor med de bästa schackspelarna.
Alexander Kronrod definierade rollen som datorschack med den välkända frasen: "schack är den artificiella intelligensens fruktfluga ". Analogin ligger på ytan: schack är en villkorslöst intellektuell, men samtidigt en tydligt formaliserad, enkel i struktur och kompakt uppgift, det vill säga det är ett bekvämt föremål för laboratorieforskning inom artificiell intelligens, precis som en fruktfluga pga. till sin ringa storlek, fertilitet och snabba förändringar är generationer ett praktiskt laboratorieobjekt för att studera ärftlighet. Faktum är att många välkända metoder och områden för artificiell intelligens testades på schack, inklusive metoder för att optimera uppräkning (undvika den " kombinatoriska explosionen " när man beräknar alternativ flera steg framåt), mönsterigenkänning , expertsystem , logikprogrammering .
Men till mångas förvåning och förtret har schack fört människor lite närmare att skapa maskiner med mänsklig intelligens. Moderna schackprogram har faktiskt stannat vid det mest primitiva stadiet av intellektuell aktivitet: de utforskar ett stort antal möjliga drag för båda spelarna, med hjälp av olika metoder för trunkering av uppräkningsträdet, inklusive en relativt enkel utvärderingsfunktion . I kombination med databaser som lagrar förberäknade färdiga öppningar och slutspel, tack vare hastigheten och minnet hos moderna datorer, ger dessa metoder redan en dator som spelar schack på stormästarnivå. Av dessa skäl har datorschack inte längre lika stort akademiskt intresse. Rollen som "Drosophila of artificiell intelligens" har tagits över av andra tankespel , som till exempel Go . Mycket mer än i schack begränsar mängden uppräkning av alternativ i sådana spel möjligheten att använda enkla metoder och kräver att vetenskapsmän tillämpar mer spekulativa metoder för spelet. .
Utvecklare av schackprogram måste fatta ett antal beslut när de skriver dem. Dessa inkluderar:
Se även:
En schackdator är en specialiserad anordning för att spela schack . Används vanligtvis för underhållning och övning av schackspelare i frånvaro av en mänsklig partner, som ett medel för att analysera olika spelsituationer, för att konkurrera datorer med varandra.
Konsumentschackdatorer är vanligtvis gjorda i form av ett schackbräde med en display och en uppsättning nycklar för att utföra de nödvändiga spelåtgärderna. Beroende på design får brädan inte vara ansluten på något sätt till datordelen och inte ha någon elektronik, eller vice versa kan det vara en display som visar en grafisk representation av spelsituationen.
Sedan mitten av 1980-talet har konsumentschackdatorer producerats i Sovjetunionen " Elektronika IM -01 ", " Elektronika IM-05 ", " Elektronika IM-29 " ("Chess Partner"), "Intellect-01", "Intellect". -02", "Debut", "Phoenix", "100 år av Novosibirsk" och andra.
De flesta av programmen är baserade på flyttuppräkningsmetoden, det finns program baserade på heuristiska metoder. Ett försök att skapa ett riktigt schackprogram baserat på en schackmästares algoritm gjordes av ex-världsmästaren M. Botvinnik och hans assisterande programmerare B. Shtilman och A. Reznitsky.
Ett stort genombrott i utvecklingen av schackprogram kom med användningen av neurala nätverk . Till exempel, 2017 skapade DeepMind ett neuralt nätverksprogram som, efter att ha lärt sig på egen hand i flera timmar, kunde slå de bästa schackalgoritmerna. I en serie på 100 matcher mot Stockfish förlorade AlphaZero aldrig och vann 25 matcher med vit och tre matcher med svart. AlphaZero-algoritmen skapades på basis av AlphaGo- programmet , som tidigare blev den absoluta mästaren i spelet Go . AlphaZero-algoritmen är mer som hur en person spelar schack. Den överväger färre positioner än andra program. Enligt författarna uppskattar den 80 tusen positioner per sekund, jämfört med 70 miljoner per sekund för Stockfish. Till skillnad från AlphaGo kan AlphaZero lära sig flera uppgiftsspel samtidigt, och inte bara ett. AlphaZero fick inte lära sig spelet, utan gav bara grundläggande kunskaper om spelets regler. AlphaZero spelade sedan med sig själv och utvecklade taktik på egen hand [7] [8] .
Den första forskningen om schackprogrammering gjordes 1950 av den amerikanske matematikern Claude Shannon , som framgångsrikt föreställde sig två huvudsakliga möjliga sökmetoder som kunde användas och gav dem namnet "Typ A" och "Typ B".
Typ A-program använder den så kallade "brute force"-metoden och lär sig alla möjliga positioner till ett fast djup med hjälp av Minimax- algoritmen . Shannon hävdade att denna metod skulle vara opraktisk av två skäl.
För det första, med cirka trettio drag möjliga i en typisk position, tar det cirka 12,5 minuter att lära sig cirka 753 miljoner nodpositioner (beräknar cirka tre drag framåt för båda sidor), även i det "mycket optimistiska" fallet när datorn kan utvärdera en miljon positioner per sekund (det tog fyrtio år att uppnå detta).
För det andra försummade typ A-program det så kallade statiska tillståndsproblemet genom att försöka utvärdera position i början av ett utbyte av pjäser eller annan viktig sekvens av drag (som taktiska kombinationer). Därför antog Shannon att med Typ A-algoritmen skulle antalet positioner som skulle undersökas öka enormt, vilket avsevärt skulle sakta ner programmet. Istället för att slösa bort datorns processorkraft för att undersöka dåliga eller obetydliga rörelser, föreslog Shannon att man skulle använda typ B-program. Denna metod har två förbättringar:
Detta gav programmen möjlighet att beräkna viktiga drag till ett större djup och göra det inom rimlig tid. Det första tillvägagångssättet har bestått tidens tand: alla moderna[ när? ] program tillämpar en efterföljande "lugn" sökning innan de utvärderar en position.
Datorschackprogram behandlar schackrörelser som ett spelträd. I teorin bör de utvärdera alla positioner som kommer att inträffa efter alla möjliga drag, sedan alla möjliga drag efter dessa drag osv. Varje drag av en spelare kallas en " nod ". Uppräkningen av drag fortsätter tills programmet når sökningens maximala djup eller fastställer att slutpositionen har nåtts (till exempel schackmatt eller dödläge ). Redan på basis av bedömningen av positionen väljer han den bästa strategin. I varje position är antalet möjliga drag för spelaren ungefär lika med 35. För en fullständig analys av fyra halvdrag (två drag av varje spelare) är det nödvändigt att utforska cirka en och en halv miljon möjligheter, för sex – nästan två miljarder. Analys 3 steg framåt är väldigt lite för ett bra spel.
Programmerare försöker begränsa antalet drag som behöver sorteras ut på olika sätt ( trimma sökträdet - beskärning av spelträd ). Den mest populära är alfa-beta beskärning , som inte tar hänsyn till positioner som har lägre poäng än de som redan har betygsatts.
Ungefärlig programimplementering:
privat int AlphaBeta ( int färg , int Djup , int alfa , int beta ) { if ( Djup == 0 ) returnera Evaluera ( färg ) ; int bestmove ; Vector moves = GenerateMoves (); for ( int i = 0 ; i < flyttar . storlek (); i ++ ) { makeMove ( flyttar . get ( i )); eval = - AlphaBeta ( - färg , Djup - 1 , - beta , - alfa ); unmakeMove ( flyttar . få ( i )); if ( eval >= beta ) returnera beta ; if ( eval > alfa ) { alpha = eval ; if ( Depth == defaultDepth ) { bestmove = flyttar . få ( i ); } } } returnera alfa ; }Exempel på första samtal:
AlphaBeta ( 1 , 6 , heltal . MIN_VALUE , heltal . MAX_VALUE );Vid det första anropet anropas metoden (funktionen) med maximalt fönster. I rekursiva anrop byts variablerna alfa och beta med teckenomkastning och "begränsar" sökmassan.
Den andra vanliga metoden är iterativ fördjupning . Först korsas spelträdet till ett visst djup, varefter flera bästa drag markeras. Programmet utvärderar sedan dessa rörelser i relation till ett större djup för att lära sig mer om deras konsekvenser. Denna operation upprepas till bästa möjliga kurs ur programmets synvinkel. Detta tillvägagångssätt gör att du snabbt kan slänga en avsevärd andel föga lovande spelalternativ. Det är till exempel inte vettigt att undersöka vad som händer om du byter ut en dam mot en bonde när det finns bättre drag i positionen.
En viktig del av schackalgoritmer är positionsutvärderingssystemet . Det är omöjligt att bedöma positionen helt exakt, för för detta skulle det vara nödvändigt att analysera biljoner sekvenser av rörelser från spelets början till slutet. Om det fanns en funktion som skulle göra det möjligt att på ett tillförlitligt sätt uppskatta positionen, skulle uppgiften att spela schack förenklas till att bedöma vart och ett av de flera dussin tillgängliga drag, och det skulle inte finnas något behov av att beräkna ytterligare drag.
Därför är programmets utvärdering av tjänsten mycket ungefärlig, även om programmens utvärderingsfunktioner ständigt förbättras. Utvärderingsfunktioner utvärderar vanligtvis positioner i hundradelar av en bonde. Dessa funktioner utvärderar bara några enkla parametrar:
Positionsutvärderingsfunktioner är ineffektiva när situationen på brädet förändras dramatiskt med varje drag, när det till exempel sker ett utbyte av pjäser eller någon form av schackkombination utförs. Det är härifrån konceptet med ett statiskt tillstånd ( vila ) och beräkningshorisonten kom ifrån . I ett statiskt tillstånd är det en långsam positionskamp på schackbrädet, och beräkningshorisonten som är värd att uppmärksammas är mycket bred. Det gör att den avgörande förändringen inte kommer i en framtid som lätt kan förutses. I en sådan situation är positionsutvärderingsfunktioner viktigare än försök att beräkna möjliga alternativ.
I en dynamisk situation kan ett spel baserat på positionsvärderingsfunktionen leda till helt felaktiga beslut. I extremfallet, om programmet har en kortjusterad beräkningshorisont och endast tar hänsyn till en kortsiktig positionsutvärdering, kan slutet komma precis i det ögonblick då utbytet av drottningar äger rum, och en av dem kan redan bli slagen, och den andra har ännu inte ersatts. Utvärderingen av ett sådant tillstånd av programmet leder till en helt felaktig slutsats att en av spelarna har en enorm fördel, medan den kommer att försvinna i ett drag, vilket programmet dock inte ser. Om staten ännu inte är statisk måste du fortsätta utbytet till slutet och utvärdera situationen när det inte finns några fler möjliga radikala förändringar. Människor i allmänhet skiljer intuitivt mellan dessa två situationer – schackprogram, å andra sidan, måste ha en uppsättning villkor som gör att de kan förändra hur de fungerar i statiska och dynamiska tillstånd.
Det är svårare att utvärdera drag i öppningen . Majoritet[ hur mycket? ] program använder öppningsbibliotek skrivna i förväg, som har ett visst litet antal initiala drag och svar på ett visst antal drag, vilket inte är konstant, eftersom det beror på typen av öppning.
Även på 1970- och 80-talen förblev frågan öppen när ett schackprogram skulle kunna besegra de starkaste schackspelarna. 1968 satsade den internationella stormästaren David Levy på att ingen dator skulle kunna slå honom under de kommande tio åren. Han vann ett vad genom att slå Chess 4,7 (det starkaste vid den tiden) 1978 , men han visste att det inte dröjde alltför länge innan datorer skulle slå världsmästare. 1989 slog programmet Deep Thought Levy.
Men programmen låg fortfarande långt under nivån för världsmästaren som Garry Kasparov demonstrerade när han besegrade samma Deep Thought två gånger 1991.
Detta varade till 1996, då en match mellan Kasparov och IBMs Deep Blue -dator ägde rum , där mästaren förlorade sitt första spel. För första gången har ett datorschackprogram slagit en världsmästare under standardtidskontroll. Kasparov ändrade dock sin spelstil, vann tre och oavgjord två av de återstående fem matcherna. I maj 1997 besegrade en förbättrad version av Deep Blue Kasparov med en poäng på 3,5-2,5. 2003 gjordes en dokumentärfilm som utforskade Kasparovs förebråelser om IBMs möjliga användning av en schackspelare, kallad "The match is over: Kasparov and the machine" ( Eng . Game Over: Kasparov and the machine ). Filmen hävdade att Deep Blues mycket hypade vinst var riggat för att öka IBM:s marknadsvärde. Delvis var dessa anklagelser berättigade. Reglerna gjorde det möjligt för utvecklare att ändra programmet mellan spelen. Deep Blue ändrades mellan spelen för att bättre förstå Kasparovs spelstil genom maskinen, vilket hjälpte till att undvika slutspelsfällan som programmet hamnade i två gånger.
IBM demonterade Deep Blue efter matchen, sedan dess har denna dator inte spelats en enda gång. Därefter ägde andra matcher mellan Man vs. Machine rum.
Med ökande datorkraft började schackprogram som körs på persondatorer nå nivån för de bästa schackspelarna. 1998 besegrade Rebel 10 -programmet Viswanathan Anand , som då var världens nummer 2. Alla spel spelades dock inte med standardtidskontroller. Av de åtta matcherna i matchen spelades fyra med blitzkontroll (fem minuter plus fem sekunder per drag), som Rebel vann med 3-1. Ytterligare två matcher var med semi-blitzkontroll (femton minuter vardera), som programmet också vann (1,5-1). Slutligen spelades de två sista spelen med standard turneringstidskontroll (två timmar för 40 drag och en timme för resten av dragen), och här vann Anand med en poäng på 0,5-1,5. Vid den tiden, i snabba spel, spelade datorer bättre än människor, men med klassisk tidskontroll var fördelen med en dator framför en människa fortfarande inte så stor.
År 2000 kunde de kommersiella schackprogrammen Junior och Fritz lotta matcher mot tidigare världsmästarna Garry Kasparov och Vladimir Kramnik .
I oktober 2002 tävlade Vladimir Kramnik och Deep Fritz i en åtta matcher i Bahrain . Matchen slutade oavgjort. Kramnik vann det andra och tredje spelet med hjälp av traditionell antidatortaktik - att spela försiktigt och sikta på en långsiktig fördel som datorn inte kan se i sitt sökträd. Ändå vann Fritz den femte matchen efter Kramniks blunder. Många turneringskommentatorer kallade det sjätte spelet mycket spännande. Kramnik, som hade en bättre position i början av mittspelet , försökte offra en bit för att skapa en stark taktisk attack (en sådan strategi är mycket riskabel mot datorer). Fritz hittade ett starkt försvar och detta anfall försämrade Kramniks position avsevärt. Kramnik gav upp spelet och trodde att spelet var förlorat. Efterföljande analys visade dock att det var osannolikt att Fritz hade kunnat få spelet till sina vinster. De två senaste matcherna slutade oavgjort.
I januari 2003 spelade Garry Kasparov mot Juniorprogrammet i New York . Matchen slutade med 3-3.
I november 2003 spelade Garry Kasparov med X3D Fritz . Matchen slutade med 2-2.
2005 besegrade Hydra , ett speciellt schackprogram- och hårdvarusystem med 64 processorer, Michael Adams - schackspelaren som vid den tiden var den sjunde bästa Elo -schackspelaren i världen - i en sexspelsmatch med en poäng på 5,5 -0,5 (även om Adams hemförberedelser var mycket lägre än Kasparovs 2002). Vissa kommentatorer trodde att Hydra äntligen skulle ha en obestridlig fördel gentemot de bästa schackspelarna.
I november-december 2006 spelade världsmästaren Vladimir Kramnik med programmet Deep Fritz . Matchen slutade med seger för bilen med 2-4.
Fler Endgame-databaser
Datorer används för att analysera vissa slutspelspositioner . Sådana slutspelsdatabaser skapas med hjälp av efterhand , med utgångspunkt från positioner där slutresultatet är känt (t.ex. där ena sidan var schackmatt) och se vilka andra positioner som finns inom rörelseavstånd, sedan ett drag bort från dessa, och så vidare. Ken Thompson , känd som chefsdesigner för operativsystemet UNIX , var en pionjär inom detta område.
Slutspelet har länge varit en märkbar svaghet hos schackprogram, eftersom djupet i sökningen var otillräckligt. Således kan inte ens program som spelade en mästares styrka vinna i slutspelspositioner, där även en måttligt stark schackspelare kunde tvinga fram en vinst.
Men resultaten av datoranalys överraskade ibland människor. 1977 kunde Thompsons Belle -schackmaskin , med hjälp av slutspelsdatabaser av kung+rook kontra kung+drottning, dra teoretiskt förlorade slutspel mot titulerade schackspelare.
De flesta stormästare vägrade att spela mot datorn i ett slutspel för dam mot torn , men Walter Brown antog utmaningen. Positionen var upplagd på ett sådant sätt att det teoretiskt var möjligt att vinna i 30 drag med felfritt spel. Brown fick två och en halv timme för femtio drag. Efter fyrtiofem drag gick Brown med på oavgjort, efter att inte ha kunnat vinna under de senaste fem dragen. I slutpositionen kunde Brown schackmatt först efter sjutton drag.
År 2002 publicerades stora slutspelsdatabasformat inklusive Edward Tablebases , De Koning Endgame Database och Nalimov Endgame Tablebases , som många schackprogram nu stöder som Rybka , Shredder och Fritz . Slutspel med fem pjäser eller mindre har analyserats fullständigt. Sexdelade slutspel har analyserats med undantag för femdelade positioner mot en ensam kung. Mark Burzhutsky och Yakov Konoval analyserade några slutspel med sju stycken. I alla dessa slutspelsdatabaser anses castling vara omöjligt.
Databaserna genereras genom att de positionsuppskattningar som har inträffat hittills lagras i minnet och att dessa resultat används för att minska sökträdet om sådana positioner inträffar igen. Enbart lämpligheten att komma ihåg poängen för alla tidigare uppnådda positioner innebär att den begränsande faktorn för att lösa ett slutspel helt enkelt är mängden minne som datorn har. Med ökningen av kapaciteten hos datorminne kommer slutspel med ökad komplexitet förr eller senare att lösas.
En dator som använder en slutspelsdatabas kommer, när den når en position i dem, att kunna spela felfritt och omedelbart avgöra om positionen är vinst, förlust eller oavgjort, samt hitta det snabbaste och längsta sättet att uppnå ett resultat. Att känna till en korrekt positionsuppskattning är också användbart när man ökar datorns styrka, eftersom det gör att programmet kan välja sätt att uppnå målet beroende på situationen [det vill säga förenkla och byta ut för att få en tydligt granskad position].
Datorer ligger märkbart före människor i korta taktiska manövrar som ligger inom djupet av programmets sökning. Speciellt farlig i sådana fall är drottningen, som är perfekt för kortvariga manövrar. Därför, i ett spel mot datorn, gör människor ofta ett försök att få programmet att byta damer. Detta händer till exempel när en person medvetet försämrar sin position i början av spelet, och datorn ser det som fördelaktigt för honom. Om programmet ställer in bedömningen av positionen som att föredra för sig själv, kommer det troligen att byta bitar, och detta är fördelaktigt för personen. Naturligtvis har programmerare lärt sig om sådana "tricks" och detta tas hänsyn till i de senaste versionerna av deras program.
Istället måste schackspelare spela mot datorn med långvariga manövrar som programmet inte kan se inom sitt sökdjup. Till exempel vann Kramnik mot Deep Fritz med ett långvarigt passerat bondförskott, vars fördelar Fritz upptäckte för sent.
Framgången med schackprogram tyder på att det är möjligt att skriva program som spelar lika bra i andra spel, som shogi eller go .
Liknande algoritmer kanske kan användas när man spelar andra schackvarianter. I shogi finns det fler möjliga drag, materiella fördelar betyder mycket mindre, men positionsfördelar är mycket mer betydande. Komplexa system byggs för att garantera kungens säkerhet, men det är inte lätt för en dator att utvärdera dessa system. Antalet pjäser i detta spel är konstant, och därför blir spelet inte lättare med tiden, vilket gör det omöjligt att skapa en bas av slutspel. Det finns heller inga helt statiska tillstånd här, eftersom spelet reduceras till en positionskamp under hela tiden. Därför är det mycket svårare att skriva ett bra program för att spela shogi än att skriva ett schackprogram, även om mycket erfarenhet av schackspel kan appliceras på detta spel. .
Go har blivit en riktig utmaning för programmerare . Komplexiteten i att beräkna Go är flera storleksordningar större än i schack. Vid varje steg är cirka 200-300 drag möjliga, medan en statisk bedömning av livslängden för grupper av stenar är praktiskt taget omöjlig. Ett drag här kan helt förstöra hela spelet, även om de andra dragen var framgångsrika. Därför räcker inte algoritmer som har varit framgångsrika för att spela schack för att spela Go på en professionell nivå. Men i oktober 2015 vann AlphaGo , ett datorprogram utvecklat av Google DeepMind , för första gången i match mot 2-dan professionella Fan Hui . Och i mars 2016 vann hon en match med Lee Sedol , ett 9-dan proffs, med en poäng på 4-1.
Schack | |
---|---|
Huvudartiklar | |
Schackinventering | |
schackregler | |
Ordlista med termer | |
Schacktaktik | |
Schackstrategi | |
debuterar | |
Slutspel | |
Schackwebbplatser |
|
Schackprogram |