# Computerschaak

Computerschaak is het bordspel schaken zoals dat gespeeld wordt door computers. Om te kunnen schaken moet een computer voorzien zijn van een schaakprogramma.
Computers kunnen tegenwoordig sterker schaken dan vrijwel elke menselijke speler. Dat is zowel te danken aan de enorme rekensnelheid van computers als aan de in de loop der jaren steeds beter geworden programma's. Kenmerkend voor het schaken door computers is onder meer dat het gewoonlijk vrij is van duidelijke tactische fouten.

## Werking

| 8 | | | | | | | | |
| 7 | | | | | | | | |
| 6 | | | | | | | | |
| 5 | | | | | | | | |
| 4 | | | | | | | | |
| 3 | | | | | | | | |
| 2 | | | | | | | | |
| 1 | | | | | | | | |
| | a | b | c | d | e | f | g | h |
| | Er dreigt 1 ... Dg2 mat. | Er dreigt 1 ... Dg2 mat. | Er dreigt 1 ... Dg2 mat. | Er dreigt 1 ... Dg2 mat. | Er dreigt 1 ... Dg2 mat. | Er dreigt 1 ... Dg2 mat. | Er dreigt 1 ... Dg2 mat. | Er dreigt 1 ... Dg2 mat. |
De gebruikelijkste manier waarop schaakprogramma's een nieuwe zet bepalen is door de zetten die in een bepaalde stelling mogelijk zijn, in het computergeheugen uit te voeren, waarna de ontstane stelling wordt geëvalueerd. Uiteraard zijn er als reactie daarop weer nieuwe zetten mogelijk. Een "halve zet" (dus een van zwart óf van wit) noemt men een 'ply'. Een computer die 5 zetten diep nadenkt, moet de stelling dus 10 ply diep onderzoeken.
Over het algemeen mag men verwachten dat een computerprogramma geen overduidelijke fouten over het hoofd ziet. Bijvoorbeeld: een menselijke speler ziet een relatieve penning weleens over het hoofd, hij speelt een paard weg waardoor een loper van de tegenstander de dame kan slaan. Maar er is alle kans dat de tegenstander zich fixeert op het paard en de buitenkans ook over het hoofd ziet. Een computerprogramma zal zo'n fout niet zo gauw maken.
Veel computerprogramma's staan erom bekend dat ze doorspelen tot het bittere einde en nimmer een partij opgeven. Ziet het programma een zet waarmee het onvermijdelijke mat nog even kan worden uitgesteld, dan zal het vaak die zet uitvoeren. Zie afgebeelde stelling. Het is nog mogelijk het onheil uit te stellen, namelijk met 1. De4. Dan sneuvelt de witte dame, maar de koning is nog even gered, hoewel niet voor lang. Een dergelijke zet wordt wel eens schaak der wrake genoemd. Een menselijke speler zal het een lachwekkende zet vinden en meteen opgeven. Veel schaakprogramma's zullen die zet echter toch uitvoeren.
Een mogelijkheid om remise voor te stellen ontbreekt meestal en sommige programma's spelen zelfs verder als er een overduidelijk dode stelling is ontstaan.

### Complexiteit

Stel dat er in een gemiddelde stelling 20 zetten mogelijk zijn, dan zou een schaakprogramma dat 5 zetten (10 ply) diep nadenkt, 20$^{10}$ stellingen moeten evalueren, wat neerkomt op ruim 10$^{13}$ stellingen. Hoewel het ondoenlijk is dit grote aantal stellingen te controleren, zijn er toch schaakcomputers die 5 zetten (en meer) vooruit kunnen denken. Dit is mogelijk doordat het schaakprogramma bepaalde voortzettingen niet meer bekijkt als duidelijk is dat die toch alleen tot verlies leiden. Dit wegsnijden van voortzettingen uit het denkproces wordt vaak aangeduid als 'pruning' (letterlijk 'snoeien').
Hoewel een schaakpartij officieel eindigt met mat, kan een schaakprogramma eenvoudigheidshalve het spel laten eindigen met het slaan van de koning. Voor de praktijk van het spel maakt dat geen verschil, het spel duurt een zet langer. Alleen voor pat moet een uitzondering worden gemaakt.
Echter, doordat het einde van het spel een zet later komt, kan het zijn dat mat door het programma over het hoofd wordt gezien. Een programma dat maar één zet vooruit kijkt en de keus heeft tussen de dame slaan (waardering 1000) en de koning aanvallen (waardering 10) zal het eerste kiezen. Dat de aanval op de koning mat is, ziet het programma niet, want dat blijkt pas op de volgende zet. Een programma dat twee zetten vooruit kijkt, kiest tussen nu meteen de dame slaan (1000) of bij de volgende zet de koning slaan (100 000), en dat maakt een groot verschil.

### Evaluatie van een stelling

Een stelling wordt geëvalueerd door er een bepaalde getalswaarde aan toe te kennen. Zo zou de computer een stelling waarin hij zelf is matgezet met -100 000 kunnen waarderen en een stelling waarin zijn tegenstander mat staat met +100 000. Dan is mat altijd slechter respectievelijk beter dan elke andere stelling.
Bepaalde kenmerken van een stelling zullen deze waarde verhogen of verlagen. Zo zal stukverlies de waarde in de regel verlagen. Maar ook andere kenmerken hebben er invloed op: het bezit van dubbelpionnen verlaagt de waarde meestal. Hoewel paard en loper ongeveer evenveel waard zijn, wordt het bezit van lopers in een open stelling gunstiger gewaardeerd dan het bezit van paarden. Een ander kenmerk dat de waarde van een stelling beduidend kan verhogen is het bezit van vrijpionnen.
Door de getalswaarde van de gegenereerde stellingen te vergelijken, kan de computer bepalen welke stelling voor hem het gunstigste is.
De oudste programma's spelen reproduceerbaar, dat wil zeggen dat in een bepaalde situatie altijd dezelfde zet zal worden gedaan. Het is dan mogelijk een partij opnieuw te spelen. Moderne programma's doen enigszins willekeurige zetten. Dit kan op twee manieren:
* Wanneer twee of meer van de onderzochte zetten precies dezelfde beste beoordeling hebben, dan zal het programma willekeurig een van deze zetten uitkiezen.
* Er wordt een willekeurige zet gekozen uit alle onderzochte zetten, waarbij de zet met de beste beoordeling de beste kans maakt. Er is dan een kleine kans dat een slecht beoordeelde zet wordt uitgevoerd.

## Geavanceerd schaken

Geavanceerd Schaken is een vorm van schaken die in 1998 ontwikkeld is door Garri Kasparov, waarbij een mens speelt tegen een andere mens en beide toegang hebben tot computers om hun kracht te verhogen. De resulterende "gevorderde" speler, voerde Kasparov aan, zou sterker zijn dan een menselijke of een solo-computer. De geavanceerde schaakspeler heet Centaur (man & computer).

### Geavanceerde schaaktoernooien

In de afgelopen jaren zijn er overal ter wereld talloze geavanceerde schaaktoernooien geweest. De belangrijkste waren ongetwijfeld het PAL / CSS Freestyle Tournament gesponsord door de PAL Group in Abu Dhabi. Deze wereldwijde toernooien werden gehouden in de "Playchess"-webserver (ChessBase) en een zeer hoog niveau van het spel, misschien wel het hoogste dat ooit in een spelletje schaak met tijdcontrole is gespeeld. Dit zijn de winnaars in chronologische volgorde: Zacks (Steven Cramton en Zackary Stephen, USA), Zorchamp (Hydra, Verenigde Arabische Emiraten), Rajlich (Vasik Rajlich, Rybka, Hongarije), Xakru (Jiri Dufek, Tsjechië), vliegende schotels (Daniel Nielsen, Denemarken) Rajlich (Vasik Rajlich, Rybka, Hongarije), Ibermax (Anson Williams, Engeland), Ultima (Eros Riccio, Italië). Vergelijkbare toernooien werden ook georganiseerd door FICGS en Infinity Chess.
Op basis van de in geavanceerde schaaktoernooien verkregen resultaten werd door Infinity Chess de Elo-rating voor centauren ontwikkeld, met als eerste Sephiroth (Eros Riccio) met 2755 Elo-punten.