Du ställer en ganska komplex fråga, men det är bra att gå tillbaka till grunderna. Det finns ett par begrepp att tänka på:
Utvärdering
Om en (riktig) spelare visas en position och frågar "vem vinner det här spelet?", Hur går de till beslutar? Troligtvis kommer de att kontrollera några grundläggande saker, såsom: materialskillnader, i vilken grad bitar har utvecklats eller är placerade "bra", dubbla / isolerade / anslutna / passerade bönder, (kontrollerade) öppna filer, hur långt upp brädan är bönderna.
Nu, om du var tvungen att göra det, kan du komma på ett systematiskt sätt att beräkna en positionsscore baserat på ovanstående. Du kan till exempel bestämma att en bonde är värt 1 poäng och att en godkänd bonde är värt 0,3 poäng mer. Isolerade eller dubbla bönder kan vara värda lite mindre etc. Om du lägger till allt får du ett uppskattningsvärde för den omedelbara positionen till hands.
Detta är känt som utvärdering, och i princip har alla schackprogram ett sätt att utvärdera positioner (ignorera nyskapande AI-schackmotorer som vanligtvis är mycket svaga).
Men hur är det med subtila, djupa positionella rörelser?
Nåväl, vi har bara knappt klarat av ytan för positionsvärderingen. Det faktiska genomförandet av en utvärderingsfunktion kan vara förenklat för att möjliggöra att fler positioner utvärderas per sekund (om än på grovt sätt), eller mer komplicerat, vilket leder till färre positioner utvärderade, men med högre grad av självförtroende. Det är inte ovanligt att utvärderingsfunktionen tar hänsyn till hundratals eller till och med tusentals separata bitar av information.
Sök
Jag har specifikt utelämnat något från ovanstående, som är mest verkligt spelare kommer omedelbart att tänka på - finns det något sätt att omedelbart vinna spelet för vardera sidan? Några kompisar eller "hängande" bitar synliga? Även om det är lätt att bagatellisera detta är det allt annat än trivialt.
Vad betyder det för en spelare att ha fullt förtroende för en kombination? I slutändan handlar det om att ha beräknat alla alternativ. Riktiga spelare kommer vanligtvis inte att göra detta (förutom triviala eller mycket tvungna kompisar), för det mesta kommer vi bara att överväga en handfull alternativ och utesluta andra som verkar vara "icke-konstruktiva" eller uppenbarligen leder till förlust . Vi gör ofta misstag under denna beräkning, t.ex. vi kanske inser att en förändring i dragorder gör att hot förångas osv. Poängen är att för att vara helt säker på en kombination måste du faktiskt beräkna hela vägen till dess slutsats, förutsatt att varje spelare bara gör bästa möjliga drag tillgängliga till dem (detta kallas "min / max").
Nu med tanke på att schack har ett mycket större sökutrymme (det är det som "alla möjliga drag i framtiden" hänvisas till) än vad som är möjligt för en dator att beräkna, måste kompromisser göras. Precis som människor kan datorer besluta att bortse från hela tankelinjer baserat på vissa kriterier. Detta kallas heuristik . Det är värt att notera att även om du bara kan vara riktigt säker på en kombination om du råkar tvinga den, kan en komplex utvärderingsfunktion ofta upptäcka förekomsten av hot (t.ex. vi kan räkna gafflar, spettmöjligheter osv. För att styra en sökning i den riktningen ).
I slutändan, även om datorer är extremt snabba, är det heuristiken som gör att de kan beräkna så djupt. Med detta sagt kan du bli förvånad över hur djupa moderna motorer räknar ut helt, vanligtvis är det bortom tre drag, även i snabba spel.
Sammanfattning / kombinera allt
Så, för att sammanfatta - utvärderingsfunktioner har mycket intelligens inbyggda i sig (dvs de tar hänsyn till fler saker än din genomsnittliga mänskliga spelare), heuristik gör det möjligt för datorn att avlägsna tankesätt som den bestämmer förmodligen inte kommer att slutar bra, och datorer är extremt, extremt snabba. Lägg till dem så är de ganska svåra att slå.