Computerskak

Computerskak  er et populært begreb inden for forskning i kunstig intelligens , hvilket betyder skabelsen af ​​software og specielle computere til at spille skak . Udtrykket "computerskak" bruges også til at henvise til et spil mod et computerskakprogram, et spil programmer indbyrdes. Siden 2000'erne har selv de stærkeste menneskelige spillere ingen chance mod skakprogrammer [1] .

Historie

Skakmaskinernes historie er ældre end computernes historie. Ideen om en skakmaskine går tilbage til det attende århundrede. Omkring 1769 dukkede den mekaniske tyrkiske skakmaskine op. Det var beregnet til underholdning for dronning Maria Theresia. Maskinen spillede rigtig godt - der var en stærk skakspiller inde i den, som lavede træk.

Skabelsen af ​​mekaniske skakautomater ophørte med fremkomsten af ​​digitale computere i midten af ​​det 20. århundrede. I 1951 skrev Alan Turing Turochamp- algoritmen , hvormed en maskine kunne spille skak, kun opfinderen selv fungerede som en maskine. Dette sludder fik endda navnet - "Turings papirmaskine". Det tog en person mere end en halv time at foretage et enkelt træk. Algoritmen var ret betinget, og selv optagelsen af ​​spillet, hvor Turings "papirmaskine" tabte til en af ​​hans kolleger, er blevet bevaret [2] . På grund af manglende adgang til en computer er programmet aldrig blevet testet i drift.

Omkring dette tidspunkt, i 1951, skrev matematikeren Claude Shannon sit første papir om skakprogrammering. Han skrev: " Selvom det måske ikke har nogen praktisk betydning, er spørgsmålet i sig selv teoretisk interessant, og lad os håbe, at løsningen af ​​dette problem vil tjene som en fremdrift for løsningen af ​​andre problemer af lignende karakter og af større betydning ." Shannon bemærkede også den teoretiske eksistens af det bedste træk i skak og den praktiske umulighed i at finde et.

Næste trin i udviklingen af ​​skakprogrammering var udviklingen ved Los Alamos atomlaboratorium i 1952 på en MANIAC I -computer med en clockfrekvens på 11 kHz af et skakprogram til at spille på et 6x6-bræt, uden deltagelse af elefanter. Det er kendt, at denne computer spillede et spil mod en stærk skakspiller, det varede 10 timer og endte med skakspillerens sejr. Et andet spil blev spillet mod en pige, der for nylig havde lært at spille skak. Maskinen vandt på 23. træk, for sin tid var det en stor præstation.

I 1957 skabte Alex Bernstein det første program til at spille på et standard skakbræt og med deltagelse af alle brikker [3] .

En vigtig udvikling for computerskak skete i 1958, da Allen Newell , Cliff Shawog Herbert Simon udviklede en søgetræ-reduktionsalgoritme kaldet " alpha-beta pruning " [3] [4] som søgefunktionerne i alle stærke moderne programmer er bygget på.

I 1967, i en kamp med fire spil, slog et program oprettet ved Institute for Theoretical and Experimental Physics (ITEP) Stanford University skakprogram 3-1. Ifølge stormestrene, der spillede med programmet, spillede det med styrken fra den tredje skakkategori . [5]

Ved det 1. verdensmesterskab i skak blandt computerprogrammer i august 1974 i Stockholm ( Sverige ) vandt Kaissa-programmet , der blev oprettet i 1971 af ansatte ved Institute of Control Problems ved USSR Academy of Sciences, alle fire partier og blev den første verdensmester. blandt skakprogrammerne, overhalingsprogrammerne "Chess 4", "Chaos" og "Ribbit", som hver fik 3 point. Mesterskabet blev overværet af 13 biler fra 8 lande i verden, som transmitterede deres træk til mesterskabshallen til operatøren via telefon.

Den første maskine til at nå niveauet som en skakmester var , i 1983 af Joe Condon og Thompson . Belle var den første computer designet udelukkende til at spille skak. Dens officielle Elo-vurdering var 2250, hvilket gør den til sin tids mest kraftfulde skakmaskine.

I 1994 tabte Garry Kasparov en blitz-turnering i München til Fritz 3 -programmet . Programmet overgik også Viswanathan Anand , Boris Gelfand og Vladimir Kramnik . Stormester Robert Huebner nægtede at spille mod programmet og tabte automatisk. Kasparov spillede den anden kamp med Fritz og vandt med 4 sejre og 2 uafgjorte.

I februar 1996 besejrede Garry Kasparov Supercomputeren Deep Blue med 4-2. Denne kamp er bemærkelsesværdig, da det første spil blev vundet af Deep Blue , hvilket automatisk blev den første computer, der besejrede en verdensmester i skak i turneringsvilkår. Deep Blue beregnede 50 milliarder positioner hvert tredje minut, mens Kasparov beregnede 10 stillinger for samme tid. Deep Blue havde 200 processorer . Siden da har skak-entusiaster og computeringeniører skabt mange skakmaskiner og computerprogrammer.

I 1997 vandt Deep Blue en omkamp (2 sejre, 3 uafgjorte, 1 tab) og blev den første computer til at besejre den stærkeste skakspiller i verden. Kasparov var ikke længere i stand til at tjene penge tilbage, fordi IBM opgav yderligere konkurrencer, da missionen var afsluttet.

Skakcomputere er nu tilgængelige til en meget lav pris. Mange open source-programmer er dukket op, især Crafty , Fruit og GNU Chess , som kan downloades gratis fra internettet og kan slå mange professionelle skakspillere. De bedste kommercielle og gratis programmer som Shredder , Fritz eller Komodo er allerede et godt stykke over niveauet for menneskelige mestre. Open source-motoren Stockfish er højt rangeret på computervurderingslister som CEGT , CCRL , SCCT og CSS , takket være den samarbejdende udvikling og test af mange mennesker [6] .

Motivation

De første motiver for computeriseringen af ​​skak var ønsket om at have det sjovt, skabe programmer til computerskakturneringer og udføre videnskabelig forskning , der ville tillade en dybere forståelse af menneskets kognitive evner. Til de to første formål har computerskak været en fænomenal succes: Der er gået mindre end halvtreds år fra de første forsøg på at skabe et skakprogram, der kunne konkurrere på lige fod med de bedste skakspillere.

Alexander Kronrod definerede computerskakkens rolle med den velkendte sætning: "skak er kunstig intelligenss frugtflue ". Analogien ligger på overfladen: Skak er en ubetinget intellektuel, men samtidig en klart formaliseret, enkel i struktur og kompakt opgave, det vil sige, at det er et bekvemt objekt for laboratorieforskning i kunstig intelligens, ligesom en frugtflue pga. på grund af sin lille størrelse, frugtbarhed og hurtige forandringer er generationer et praktisk laboratorieobjekt til at studere arvelighed. Faktisk blev mange velkendte metoder og områder af kunstig intelligens testet på skak, herunder metoder til at optimere optælling (undgå den " kombinatoriske eksplosion " ved beregning af muligheder flere skridt fremad), mønstergenkendelse , ekspertsystemer , logisk programmering .

Men til manges overraskelse og ærgrelse har skak bragt folk lidt tættere på at skabe maskiner med menneskelignende intelligens. Moderne skakprogrammer er faktisk stoppet på det mest primitive stadium af intellektuel aktivitet: de udforsker et stort antal mulige træk for begge spillere ved at bruge forskellige metoder til afkortning af opregningstræet, inklusive en relativt simpel evalueringsfunktion . I kombination med databaser, der lagrer forudberegnede færdige åbninger og slutspil, takket være moderne computeres hastighed og hukommelse, giver disse metoder allerede en computer, der spiller skak på stormesterniveau. Af disse grunde har computerskak ikke længere så stor akademisk interesse. Rollen som "Drosophila af kunstig intelligens" er blevet overtaget af andre tankespil , såsom for eksempel Go . Meget mere end i skak begrænser mængden af ​​opregning af muligheder i sådanne spil muligheden for at bruge simple metoder og kræver, at videnskabsmænd anvender mere spekulative tilgange til spillet. .

Implementeringsproblemer

Udviklere af skakprogrammer skal træffe en række beslutninger, når de skriver dem. Disse omfatter:

Se også:

Skakcomputere

En skakcomputer  er en specialiseret enhed til at spille skak . Bruges normalt til underholdning og øvelse af skakspillere i mangel af en menneskelig partner, som et middel til at analysere forskellige spilsituationer, til at konkurrere computere med hinanden.

Forbrugerskakcomputere er normalt lavet i form af et skakbræt med et display og et sæt taster til at udføre de nødvendige spilhandlinger. Afhængigt af designet må brættet ikke på nogen måde være forbundet med computerdelen og ikke have nogen elektronik, eller omvendt kan det være et display, der viser en grafisk repræsentation af spilsituationen.

Siden midten af ​​1980'erne er forbrugerskakcomputere blevet produceret i USSR " Elektronika IM -01 ", " Elektronika IM-05 ", " Elektronika IM-29 " ("Chess Partner"), "Intellect-01", "Intellect". -02", "Debut", "Phoenix", "100 år med Novosibirsk" og andre.

De fleste af programmerne er baseret på flytteoptællingsmetoden, der er programmer baseret på heuristiske metoder. Et forsøg på at skabe et rigtigt skakprogram baseret på en skakmesters algoritme blev lavet af den tidligere verdensmester M. Botvinnik og hans assistentprogrammører B. Shtilman og A. Reznitsky.

Et stort gennembrud i udviklingen af ​​skakprogrammer kom med brugen af ​​neurale netværk . For eksempel skabte DeepMind i 2017 et neuralt netværksprogram , der efter at have lært på egen hånd i flere timer var i stand til at slå de bedste skakalgoritmer. I en 100-spils serie mod Stockfish tabte AlphaZero aldrig og vandt 25 kampe med hvid og tre kampe med sort. AlphaZero-algoritmen blev skabt på basis af AlphaGo- programmet , som tidligere blev den absolutte mester i spillet Go . AlphaZero-algoritmen ligner mere, hvordan en person spiller skak. Den overvejer færre stillinger end andre programmer. Ifølge forfatterne anslår den 80 tusinde positioner i sekundet, sammenlignet med 70 millioner i sekundet for Stockfish. I modsætning til AlphaGo er AlphaZero i stand til at lære flere opgave-spil på én gang, og ikke kun ét. AlphaZero blev ikke undervist i spillet, men gav kun grundlæggende viden om spillets regler. AlphaZero spillede derefter med sig selv og udviklede taktik på egen hånd [7] [8] .

Strukturen af ​​et skakprogram

Den første forskning i skakprogrammering blev udført i 1950 af den amerikanske matematiker Claude Shannon , som med succes forestillede sig to hoved mulige søgemetoder, der kunne bruges og gav dem navnet "Type A" og "Type B".

Type A-programmer bruger den såkaldte "brute force"-tilgang , der lærer alle mulige positioner til en fast dybde ved hjælp af Minimax -algoritmen . Shannon hævdede, at denne metode ville være upraktisk af to grunde.

For det første, med omkring tredive træk muligt i en typisk position, tager det omkring 12,5 minutter at lære omkring 753 millioner nodepositioner (beregner omkring tre træk frem for begge sider), selv i det "meget optimistiske" tilfælde, hvor computeren er i stand til at evaluere en million positioner i sekundet (det tog fyrre år at opnå dette).

For det andet forsømte Type A-programmer det såkaldte statiske tilstandsproblem ved at forsøge at evaluere positionen i starten af ​​en udveksling af brikker eller andre vigtige sekvenser af træk (såsom taktiske kombinationer). Derfor antog Shannon, at med Type A-algoritmen ville antallet af positioner, der skulle undersøges, stige enormt, hvilket ville bremse programmet betydeligt. I stedet for at spilde computerens processorkraft på at undersøge dårlige eller ubetydelige træk, foreslog Shannon at bruge Type B-programmer. Denne metode har to forbedringer:

  1. En "stilhed"-søgning anvendes .
  2. Den udforsker ikke alt, men kun nogle passende træk for hver position.

Dette gav programmerne mulighed for at beregne vigtige træk til en større dybde og gøre det inden for rimelig tid. Den første tilgang har bestået tidens tand: alle moderne[ hvornår? ] programmer anvender en efterfølgende "rolig" søgning, før de evaluerer en position.

Grundlæggende algoritmer for moderne programmer

Computerskakprogrammer behandler skaktræk som et spiltræ. I teorien bør de evaluere alle positioner, der vil forekomme efter alle mulige træk, derefter alle mulige træk efter disse træk osv. Hvert træk af en spiller kaldes en " node ". Optællingen af ​​træk fortsætter, indtil programmet når den maksimale dybde af søgningen eller fastslår, at den endelige position er nået (for eksempel skakmat eller dødvande ). Allerede på baggrund af vurderingen af ​​stillingen vælger han den bedste strategi. I hver position er antallet af mulige træk for spilleren omtrent lig med 35. For en komplet analyse af fire halve træk (to træk af hver spiller) er det nødvendigt at udforske omkring halvanden million muligheder for seks - næsten to mia. Analyse 3 træk frem er meget lidt for et godt spil.

Programmører forsøger at begrænse antallet af træk, der skal sorteres fra på forskellige måder ( trimning af søgetræet  - beskæring af spiltræ ). Den mest populære er alfa-beta beskæring , som ikke tager stilling til positioner, der har en lavere score end dem, der allerede er vurderet.

Omtrentlig softwareimplementering:

private int AlphaBeta ( int farve , int Dybde , int alfa , int beta ) { if ( Dybde == 0 ) returner Evaluer ( farve ); int bestmove ; Vector moves = GenerateMoves (); for ( int i = 0 ; i < moves . size ( ); i ++ ) { makeMove ( moves . get ( i )); eval = - AlphaBeta ( - farve , Dybde - 1 , - beta , - alfa ); unmakeMove ( moves . get ( i )); if ( eval >= beta ) returner beta ; if ( eval > alpha ) { alpha = eval ; if ( Dybde == defaultDepth ) { bestmove = flytter . ( i ); } } } returner alfa ; }

Eksempel på første opkald:

AlphaBeta ( 1 , 6 , heltal . MIN_VALUE , heltal . MAX_VALUE );

Ved det første kald kaldes metoden (funktionen) med det maksimale vindue. I rekursive kald ombyttes variablerne alfa og beta med fortegnsvending og "indsnævrer" søgemassen.

Den anden almindelige metode er iterativ uddybning . Først krydses spiltræet til en vis dybde, hvorefter flere bedste træk fremhæves. Programmet evaluerer derefter disse træk i forhold til større dybde for at lære mere om deres konsekvenser. Denne operation gentages indtil det bedst mulige forløb set fra programmets synspunkt. Denne tilgang giver dig mulighed for hurtigt at kassere en betydelig procentdel af ulovende spilmuligheder. For eksempel giver det ikke mening at undersøge, hvad der sker, hvis du bytter en dame til en bonde, når der er bedre træk i stillingen.

Et vigtigt element i skakalgoritmer er positionsevalueringssystemet . Det er umuligt at vurdere positionen helt præcist, fordi det ville være nødvendigt at analysere billioner af sekvenser af træk fra begyndelsen til slutningen af ​​spillet. Hvis der var en funktion, der ville gøre det muligt at estimere positionen pålideligt, ville opgaven med at spille skak blive forenklet til at vurdere hvert af de flere dusin tilgængelige træk, og der ville ikke være behov for at beregne yderligere træk.

Derfor er uddannelsens vurdering af stillingen meget omtrentlig, selvom uddannelsernes evalueringsfunktioner løbende forbedres. Evalueringsfunktioner evaluerer normalt positioner i hundrededele af en bonde. Disse funktioner evaluerer kun nogle få simple parametre:

  1. For det første er dette en vurdering af materialet: hver bonde er 1 point, biskoppen og ridderen er 3 hver, tårnet er 5, dronningen er 9. Kongen vurderes nogle gange til 200 bønder (Shannons artikel) eller 1.000.000.000 bønder ( programmet blev udviklet i USSR i 1961) for at sikre, at skakmat opvejer alle andre faktorer. Mere avancerede funktioner har mere præcise brikkerværdikoefficienter, som afhænger af spillets stadie og placeringen på skakbrættet.
  2. For det andet den positionelle fordel, som afhænger af brikkernes placering på brættet; for eksempel er en blokeret brik værdsat mindre end en fri; også kongens sikkerhed, dominans over midten af ​​brættet osv. evalueres; der er også mere sofistikerede scoringssystemer (nogle bruger endda viden om neurale netværk ), men selv en så simpel funktion tillader programmet at spille meget stærkt; i skak er hovedproblemet ikke at vurdere positionen, men at opregne træet af mulige træk.

Positionsevalueringsfunktioner er ineffektive, når situationen på brættet ændrer sig dramatisk med hvert træk, når der for eksempel er en brikkerudveksling eller en slags skakkombination udføres. Det er her, konceptet om en statisk tilstand ( hvilende ) og beregningshorisonten kom fra . I en statisk tilstand er der en langsom positionskamp på skakbrættet, og den opmærksomhedsværdige beregningshorisont er meget bred. Det betyder, at den afgørende ændring ikke kommer i en fremtid, der let kan forudses. I en sådan situation er positionsevalueringsfunktioner vigtigere end forsøg på at beregne mulige muligheder.

I en dynamisk situation kan et spil baseret på positionsevalueringsfunktionen føre til helt fejlagtige beslutninger. I det ekstreme tilfælde, hvis programmet har en kort afstemt beregningshorisont og kun tager højde for en kortsigtet positionsevaluering, kan enden komme lige i det øjeblik, hvor udvekslingen af ​​dronninger finder sted, og en af ​​dem kan allerede blive slået, og den anden er endnu ikke udskiftet. Evalueringen af ​​en sådan tilstand af programmet fører til en fuldstændig fejlagtig konklusion, at en af ​​spillerne har en kæmpe fordel, mens den vil forsvinde i ét træk, hvilket programmet dog ikke ser. Hvis staten endnu ikke er statisk, skal du fortsætte udvekslingen til slutningen og evaluere situationen, når der ikke er flere mulige radikale ændringer. Folk skelner generelt intuitivt mellem disse to situationer – skakprogrammer skal på den anden side have et sæt betingelser, der gør det muligt for dem at ændre måden, de fungerer på i statiske og dynamiske tilstande.

Det er sværere at vurdere træk i åbningen . Flertal[ hvor meget? ] programmer bruger åbningsbiblioteker skrevet på forhånd, som har et vist lille antal indledende træk og svar på et vist antal træk, som ikke er konstant, fordi det afhænger af typen af ​​åbning.

Computer versus menneske

Selv i 1970'erne og 80'erne forblev spørgsmålet åbent, hvornår et skakprogram ville være i stand til at besejre de stærkeste skakspillere. I 1968 satsede den internationale stormester David Levy på, at ingen computer kunne slå ham i de næste ti år. Han vandt et væddemål ved at slå Chess 4.7 (den stærkeste på det tidspunkt) i 1978 , men han vidste, at det ikke var for lang tid, før computere ville slå verdensmestrene. I 1989 slog Deep Thought -programmet Levy.

Men programmerne var stadig et godt stykke under niveauet for verdensmesteren, som Garry Kasparov demonstrerede, da han besejrede den samme Deep Thought to gange i 1991.

Dette varede indtil 1996, hvor en kamp mellem Kasparov og IBM 's Deep Blue- computer fandt sted , hvor mesteren tabte sit første spil. For første gang har et computerskakprogram slået en verdensmester under standardtidskontrol. Kasparov ændrede dog sin spillestil, vandt tre og uafgjort to af de resterende fem kampe. I maj 1997 besejrede en forbedret version af Deep Blue Kasparov med en score på 3,5-2,5. I 2003 blev der lavet en dokumentarfilm, der udforskede Kasparovs bebrejdelser om IBMs mulige brug af en skakspiller, kaldet "The match is over: Kasparov and the machine" ( Eng . Game Over: Kasparov and the machine ). Filmen hævdede, at Deep Blues meget hypede sejr var manipuleret for at øge IBMs markedsværdi. Til dels var disse beskyldninger berettigede. Reglerne tillod udviklere at ændre programmet mellem spil. Deep Blue blev ændret mellem spil for bedre at forstå Kasparovs spillestil ved maskinen, hvilket hjalp med at undgå den slutspilsfælde , som programmet faldt i to gange.

IBM afmonterede Deep Blue efter kampen, siden er denne computer ikke blevet spillet én gang. Efterfølgende fandt andre Man vs Machine kampe sted.

Med stigende computerkraft begyndte skakprogrammer, der kører på personlige computere, at nå niveauet for de bedste skakspillere. I 1998 besejrede Rebel 10 -programmet Viswanathan Anand , som dengang var verdens nr. 2. Men ikke alle spil blev spillet med standard tidskontroller. Af de otte kampe i kampen blev fire spillet med blitzkontrol (fem minutter plus fem sekunder pr. træk), som Rebel vandt 3-1. Yderligere to kampe var med semi-blitz kontrol (hver femten minutter), som programmet også vandt (1,5-1). Endelig blev de sidste to partier spillet med standard turneringstidskontrol (to timer for 40 træk og en time for resten af ​​træk), og her vandt Anand med en score på 0,5-1,5. På det tidspunkt spillede computere i hurtige spil bedre end mennesker, men med klassisk tidsstyring var fordelen ved en computer frem for et menneske stadig ikke så stor.

I 2000 kunne de kommercielle skakprogrammer Junior og Fritz tegne kampe mod tidligere verdensmestre Garry Kasparov og Vladimir Kramnik .

I oktober 2002 konkurrerede Vladimir Kramnik og Deep Fritz i en otte-kamps kamp i Bahrain . Kampen endte uafgjort. Kramnik vandt det andet og tredje spil ved at bruge traditionelle anti-computer-taktik - at spille forsigtigt og sigte efter en langsigtet fordel, som computeren ikke kan se i sit søgetræ. Alligevel vandt Fritz den femte kamp efter Kramniks bommert. Mange turneringskommentatorer kaldte det sjette spil meget spændende. Kramnik, der havde en bedre position i begyndelsen af ​​midtspillet , forsøgte at ofre en brik for at skabe et stærkt taktisk angreb (en sådan strategi er meget risikabel mod computere). Fritz fandt et stærkt forsvar, og dette angreb forværrede Kramniks position markant. Kramnik overgav spillet og troede, at spillet var tabt. Efterfølgende analyse viste dog, at Fritz næppe var i stand til at bringe spillet til sine gevinster. De sidste to kampe endte uafgjort.

I januar 2003 spillede Garry Kasparov mod Junior- programmet i New York . Kampen endte med 3-3.

I november 2003 spillede Garry Kasparov med X3D Fritz . Kampen endte med 2-2.

I 2005 besejrede Hydra , et specielt skaksoftware- og hardwaresystem med 64 processorer, Michael Adams  - skakspilleren, der på det tidspunkt var den syvendebedste Elo skakspiller i verden  - i en seks-kamps kamp med en score på 5,5 -0,5 (selvom Adams' hjemmeforberedelse var meget lavere end Kasparovs i 2002). Nogle kommentatorer mente, at Hydra endelig ville have en ubestridelig fordel i forhold til de bedste skakspillere.

I november-december 2006 spillede verdensmester Vladimir Kramnik med programmet Deep Fritz . Kampen endte med bilens sejr med 2-4.

Slutspils databaser

Flere Endgame-databaser

Computere bruges til at analysere nogle slutspilspositioner . Sådanne slutspilsdatabaser oprettes ved hjælp af bagklogskab , startende fra positioner, hvor slutresultatet er kendt (f.eks. hvor den ene side var skakmat) og se, hvilke andre positioner der er inden for bevægelsesafstand, derefter en bevægelse væk fra dem, og så videre. Ken Thompson , kendt som chefdesigner af UNIX -operativsystemet , var en pioner på dette område.

Slutspil har længe været en mærkbar svaghed ved skakprogrammer, da dybden af ​​søgningen var utilstrækkelig. Således er selv programmer, der spillede en mesters styrke, ikke i stand til at vinde i slutspilspositioner, hvor selv en moderat stærk skakspiller kunne tvinge en sejr.

Men resultaterne af computeranalyse overraskede nogle gange folk. I 1977 var Thompsons Belle skakmaskine ved hjælp af slutspilsdatabaser af konge+rook versus konge+dronning i stand til at tegne teoretisk tabende slutspil mod skakspillere med titlen.

De fleste stormestre nægtede at spille mod computeren i et slutspil mellem dronning og tårn , men Walter Brown tog imod udfordringen. Stillingen var sat op på en sådan måde, at det teoretisk var muligt at vinde i 30 træk med fejlfrit spil. Brown fik to en halv time til halvtreds træk. Efter femogfyrre træk gik Brown med til uafgjort, da han ikke var i stand til at vinde i de sidste fem træk. I den endelige position kunne Brown først skakmat efter sytten træk.

I 2002 blev større slutspilsdatabaseformater udgivet, inklusive Edward Tablebases , De Koning Endgame Database og Nalimov Endgame Tablebases , som mange skakprogrammer nu understøtter såsom Rybka , Shredder og Fritz . Slutspil med fem brikker eller mindre er blevet fuldt analyseret. Slutspil med seks brikker er blevet analyseret med undtagelse af fem brikkers positioner mod en enlig konge. Mark Burzhutsky og Yakov Konoval analyserede nogle slutspil med syv brikker. I alle disse slutspilsdatabaser anses castling for umuligt.

Databaserne genereres ved at gemme de positionsestimater, der har fundet sted indtil nu, og bruge disse resultater til at reducere søgetræet, hvis sådanne positioner opstår igen. Alene det hensigtsmæssige i at huske scorerne for alle tidligere opnåede positioner betyder, at den begrænsende faktor i løsningen af ​​et slutspil simpelthen er mængden af ​​hukommelse, computeren har. Med stigningen i computerhukommelsens kapacitet vil slutspil med øget kompleksitet før eller siden blive løst.

En computer, der bruger en slutspilsdatabase, vil, når den når en position i dem, være i stand til at spille fejlfrit og med det samme afgøre, om stillingen vinder, taber eller uafgjort, samt finde den hurtigste og længste vej til at opnå et resultat. At kende et nøjagtigt positionsestimat er også nyttigt, når du øger computerens styrke, da det vil give programmet mulighed for at vælge måder at nå målet afhængigt af situationen [det vil sige simplificere og udveksle for at få en klart undersøgt position].

  • Alle 5-cifrede slutninger fylder 7,03 GB.
  • Alle 6-cifrede slutninger fylder 1.205 TB.
  • Alle 7-cifrede slutninger fylder 140 TB.
  • Alle 8-cifrede slutninger vil tage cirka 10 PB.

Spil mod software

Computere er mærkbart foran mennesker i korte taktiske manøvrer, der er inden for dybden af ​​programmets søgning. Særligt farlig i sådanne tilfælde er dronningen, som er perfekt til kortvarige manøvrer. Derfor gør folk i et spil mod computeren ofte et forsøg på at få programmet til at udveksle dronninger. Dette sker for eksempel, når en person bevidst forværrer sin position i begyndelsen af ​​spillet, og computeren betragter det som gavnligt for ham. Hvis programmet sætter vurderingen af ​​stillingen som at foretrække for sig selv, så vil det højst sandsynligt udveksle brikker, og det er gavnligt for personen. Selvfølgelig har programmører lært om sådanne "tricks", og det er taget højde for i de seneste versioner af deres programmer.

I stedet skal skakspillere spille mod computeren med langvarige manøvrer, som programmet ikke kan se inden for sin søgedybde. For eksempel vandt Kramnik over Deep Fritz med et langsigtet bestået bondeforskud, hvis fordele Fritz opdagede for sent.

Skak og andre spil

Succesen med skakprogrammer tyder på, at det er muligt at skrive programmer, der spiller lige så godt i andre spil, såsom shogi eller go .

Lignende algoritmer kunne måske bruges, mens du spiller andre varianter af skak. I shogi er der flere mulige træk, materielle fordele betyder meget mindre, men positionelle fordele er meget mere betydelige. Der bygges komplekse systemer for at garantere kongens sikkerhed, men det er ikke nemt for en computer at evaluere disse systemer. Antallet af brikker i dette spil er konstant, og derfor bliver spillet ikke nemmere med tiden, hvilket gør det umuligt at skabe en base af slutspil. Der er heller ingen helt statiske tilstande her, fordi spillet er reduceret til en positionskamp gennem hele tiden. Derfor er det meget sværere at skrive et godt program til at spille shogi end at skrive et skakprogram, selvom en masse erfaring i skakspil kan bruges på dette spil. .

Go er blevet en reel udfordring for programmører . Kompleksiteten ved at beregne Go er flere størrelsesordener større end i skak. Ved hvert trin er omkring 200-300 træk mulige, mens en statisk vurdering af levetiden for grupper af sten er praktisk talt umulig. Et træk her kan fuldstændig ødelægge hele spillet, selvom de andre træk var vellykkede. Derfor er algoritmer, der har haft succes til at spille skak, ikke tilstrækkelige til at spille Go på et professionelt niveau. Men i oktober 2015 vandt AlphaGo , et computerprogram udviklet af Google DeepMind , for første gang i kampen mod 2-dan professionel Fan Hui . Og i marts 2016 vandt hun en kamp med Lee Sedol , en 9-dans professionel, med en score på 4-1.

Tidslinje for computerskak

  • 1769 - Wolfgang Kempelen skabte skakautomaten, som blev en af ​​periodens største fup.
  • 1868 - Charles Hooper introducerede Ajeeb maskinpistolen  - som også indeholdt en skakspiller.
  • 1912 - Leonardo Torres Quevedo byggede en maskine, der kunne spille et King + Rook vs. King slutspil .
  • 1948 - Norbert Wieners bog "Kybernetik" udkom, som beskriver, hvordan et skakprogram kan oprettes ved hjælp af en minimax-søgning med begrænset dybde og en evalueringsfunktion.
  • 1950 - Claude Shannon udgav Programmering af computeren til at spille skak, en af ​​de første artikler om computerskak.
  • 1951 - Alan Turing udviklede det første program på papir, der kunne spille skak.
  • 1952 - Dietrich Prinz udviklede et program, der løste skakproblemer.
  • 1956 - det første skak-lignende spil, der kunne spilles af et program udviklet af Paul Stein og Mark Wells til MANIAC I -computeren ( Los Alamos , USA).
  • 1956 - John McCarthy opfandt alfa-beta søgealgoritmen .
  • 1958 - NSS blev det første program til at bruge en alfa-beta søgealgoritme.
  • 1958 - De første skakprogrammer, der kunne spille hele skakspil, var et skabt af Alex Bernstein og det andet af sovjetiske programmører.
  • 1962 - Det første program, der spillede troværdigt, var Kotok-McCarthy .
  • 1966-1967 - den første kamp mellem programmer. I denne kamp besejrede ITEP M-2 maskinen Kotok -McCarthy programmet på Stanford University MANIAC maskinen . Kampen varede 9 måneder, kommunikation blev udført via telegraf .
  • 1967 - Mac Hack Six , udviklet af Richard Greenblatt , blev det første program til at slå et menneske i turneringstidskontrol.
  • 1970 er det første år af det nordamerikanske mesterskab i computerskak .
  • 1974 - Caissa vandt det første verdensmesterskab i computerskak.
  • 1977 - skabelsen af ​​de første skakmikrocomputere CHESS CHALLENGER [9] og BORIS .
  • 1977 - Oprettelse af International Computer Chess Association.
  • 1977 - Chess 4.6 blev den første skakcomputer til at få succes i en seriøs skakturnering.
  • 1980 er det første år af World Microcomputer Chess Championship.
  • 1981 - Cray Blitz vandt Mississippi State Chess Championship med en score på 5-0 og en præstationsvurdering på 2258.
  • 1982 - Ken Thompsons Belle Appliance opnår US Master titel.
  • 1988 - HiTech , udviklet af Hans Berliner og Carl Ebeling , vinder en kamp mod stormester Arnold Denker med en score på 3,5-0,5.
  • 1988 - Deep Thought kom på førstepladsen med Tony Miles i Software Toolworks Open ( Los Angeles ), foran den tidligere verdensmester Mikhail Tal og flere stormestre, især Samuel Reshevsky , Walter Brown , Alon Greenfeld og Mikhail Gurevich . I denne turnering besejrede Deep Thought GM Bent Larsen og blev den første computer til at slå en GM i turneringen.
  • 1992 - for første gang vinder en mikrocomputer, Chessmachine Gideon 3.1 , udviklet af Ed Schroeder (Ed Schröder), VII World Chess Championship blandt computerprogrammer , foran mainframes og supercomputere .
  • 1997 - Deep Blue vandt kampen mod Garry Kasparov (2-1=3).
  • 2002 - Vladimir Kramnik gjorde uafgjort mod Deep Fritz .
  • 2003 - Kasparov spillede uafgjort mod Deep Junior .
  • 2003 - Kasparov spillede uafgjort mod X3D Fritz .
  • 2005 - Hydra vandt kampen med Michael Adams med en score på 5,5-0,5.
  • 2005 - et hold af computere ( Hydra , Deep Junior og Fritz ), slog med en score på 8,5-3,5 et hold af skakspillere ( Veselin Topalov , Ruslan Ponomarev og Sergey Karyakin ), som havde en gennemsnitlig Elo-vurdering på 2681 .
  • 2006 - Verdensmester, Vladimir Kramnik , besejret af Deep Fritz 4-2.
  • 2014 - Den amerikanske stormester Hikaru Nakamura tabte en minikamp til Stockfish 5 -programmet med en score på 1-3 (+0=2-2). Manden spillede de første to partier med et handicap på en bonde og de næste to uden handicap, men ved hjælp af anvisningerne fra Rybka 3 skakprogrammet .

Computerskakteoretikere

Se også

Noter

  1. Checkmate, Human: How Computers Got So Good at Chess Arkiveret 13. januar 2017 på Wayback Machine  (Få adgang 11. januar 2017)
  2. Alan Turing vs Alick Glennie Arkiveret 19. februar 2006 på Wayback Machine // "Turing Test", 1952
  3. 1 2 Tidlige computerskakprogrammer arkiveret 21. juli 2012. // Bill Walls vidunderlige skakverden
  4. Computer Chess History af Bill Wall Arkiveret 28. oktober 2009.
  5. Kaissa (program)  // Wikipedia. — 2019-01-20.
  6. Tørrfisk-testkø . Hentet 19. juni 2014. Arkiveret fra originalen 28. november 2018.
  7. På kun 4 timer mestrede Googles AI al skakviden i  historien . videnskabelig alarm. Hentet 28. november 2018. Arkiveret fra originalen 10. november 2018.
  8. Kunstig intelligens fra Google mestrede skak på mesterniveau på 4 timer . Ny tid (7. december 2017). Dato for adgang: 28. november 2018. Arkiveret fra originalen 28. november 2018.
  9. Chess Challenger - Chess Programming Wiki . Hentet 24. august 2016. Arkiveret fra originalen 13. juli 2018.

Litteratur

  • Skak. Spil og vind! [Tekst] / Nikolay Kalinichenko. - Moskva [og andre]: Peter, 2012. - 269, [1] s. : ill.; 25 cm - ISBN 978-5-459-01609-3
  • Kornilov DA Programmering af skak og andre logiske spil. - Sankt Petersborg. : BHV-Petersburg, 2005. - ISBN 5-94157-497-5 .

Artikler