Aby obliczyć daleko do przodu, silniki szachowe minimax muszą wykonywać przycinanie alfa-beta, w którym nie obliczają pozycji, które oczywiście wygrywają lub oczywiście przegrywają. Bez przycinania silniki musiałyby poradzić sobie z ponad miliardem pozycji w pierwszych 4 ruchach / 8 warstwach gry.
Moje pytanie brzmi: w jaki sposób silniki minimax wykonują przycinanie alfa-beta bez oceny końcowych pozycji ? Skąd silnik wie, czy pozycja została całkowicie wygrana / przegrana bez obliczania tak głębokiego, jak to tylko możliwe? Na przykład:
- e4 e5 2. Sf3 d6 3. Gc4 Gg4 4. Sc3 Sc6 5. h3 Bh5 6. Sxe5 Gxd1
W tym momencie, Dwa ruchy białych od mata. Zakładając, że silnik nie był świadomy obecności partnera prawnego, czy nie zastosowałby przycinania alfa-beta i po prostu przestałby w tym momencie obliczać, zakładając, że pozycja jest wygrana dla czarnych?
Jestem świadomy ciszy wyszukiwanie, w którym silnik nie przestanie obliczać, dopóki pozycja nie zostanie uznana za „cichą”. Na tej pozycji białe są w stanie grać Gxf7 +, a król czarnych jest w niebezpieczeństwie, więc ta pozycja nie kwalifikowałaby się jako spokojna pozycja.
Ale jeśli silnik musi wyszukiwać ciszę za każdym razem, gdy musi podjąć decyzję czy wykonać przycinanie Alpha-Beta i przestać dalej kalkulować, czy to nie pokonuje celu przycinania w pierwszej kolejności? Ponieważ musisz obliczyć z wyprzedzeniem, aby sprawdzić, czy nie musisz obliczać z wyprzedzeniem.
EDYCJA: Istnieją dwie odpowiedzi na to pytanie, które uważam za bardzo przydatne. Spójrz na odpowiedź SmallChess, aby uzyskać informacje na temat problemów z ograniczeniem głębokości obliczeń silników. Zobacz odpowiedź RemcoGerlicha, aby uzyskać doskonały opis tego, czym jest przycinanie Alpha-Beta. Kiedy pisałem to pytanie, tak naprawdę nie wiedziałem, co to jest.