Zadajesz dość złożone pytanie, ale dobrze jest wrócić do podstaw. Należy wziąć pod uwagę kilka koncepcji:
Ocena
Jeśli (prawdziwy) gracz zostanie pokazany pozycji i zapytany „kto wygrywa tę grę?”, Jak podejmują decyzję? Najprawdopodobniej sprawdzą kilka podstawowych rzeczy, takich jak: różnice materiałowe, stopień, w jakim elementy zostały opracowane lub są ustawione „dobrze”, podwojone / izolowane / połączone / przekazane pionki, (kontrolowane) otwarte pliki, jak wysoko tablice, na których znajdują się pionki.
Teraz, gdybyś musiał, możesz wymyślić systematyczny sposób obliczania wyniku w oparciu o powyższe. Możesz na przykład zdecydować, że pionek jest wart 1 punkt, a przekazany pionek jest wart 0,3 punktu więcej. Pojedyncze lub podwojone pionki mogą być warte nieco mniej itp. Jeśli zsumujesz wszystko, otrzymasz wartość szacunkową dla najbliższej pozycji pod ręką.
Nazywa się to oceną i zasadniczo wszystkie programy szachowe mają sposób oceniania pozycji (ignorując nowatorskie silniki szachowe AI, które zazwyczaj są bardzo słabe).
Ale co z subtelnymi, głębokimi ruchami pozycyjnymi?
Cóż, ledwo zarysowaliśmy powierzchnię oceny pozycji. Rzeczywista implementacja funkcji oceny może być uproszczona, aby umożliwić ocenę większej liczby pozycji na sekundę (choć w przybliżeniu) lub bardziej złożoną, co prowadzi do mniejszej liczby ocenianych pozycji, ale z większym stopniem pewności. Nie jest niczym niezwykłym, że funkcja oceny bierze pod uwagę setki, a nawet tysiące osobnych informacji.
Szukaj
Właśnie pominąłem coś z powyższego, o czym większość prawdziwych graczy natychmiast pomyśli - czy jest jakiś sposób, aby natychmiast wygrać grę dla którejkolwiek ze stron? Widoczne są jakieś wiązania lub „wiszące” elementy? Chociaż łatwo jest to trywializować, nie jest to nic trywialnego.
Co to znaczy, że gracz ma pełne zaufanie do kombinacji? Ostatecznie sprowadza się to do obliczenia wszystkich opcji. Prawdziwi gracze zazwyczaj tego nie robią (z wyjątkiem trywialnych lub bardzo przymusowych partnerów), przez większość czasu rozważymy tylko garść opcji i wykluczamy inne, które wydają się „niekonstruktywne” lub oczywiście prowadzą do przegranej . Często popełniamy błędy podczas tych obliczeń, np. Możemy zdać sobie sprawę, że zmiana zleceń ruchu powoduje odparowywanie zagrożeń itp. Chodzi o to, że aby być całkowicie pewnym kombinacji, należy obliczyć całą drogę do jej zakończenia, zakładając, że każde gracz wykona dla nich tylko najlepszy możliwy ruch (jest to określane jako „min / max”).
Teraz, biorąc pod uwagę, że szachy mają znacznie większą przestrzeń do wyszukiwania (do tego odnosi się „wszystkie możliwe ruchy w przyszłości”) niż to, co jest możliwe do obliczenia przez komputer, należy dokonać kompromisów. Podobnie jak ludzie, komputery mogą postanowić zignorować całe kierunki myślenia w oparciu o określone kryteria. Jest to znane jako heurystyka . Warto zauważyć, że chociaż możesz być naprawdę pewny kombinacji, jeśli zastosujesz ją brutalnie, złożona funkcja oceny może często wykryć obecność zagrożeń (np. Możemy policzyć widelce, możliwości szpikulca itp.), Aby poprowadzić wyszukiwanie w tym kierunku ).
Ostatecznie, choć komputery są bardzo szybkie, to heurystyka pozwala im na tak głębokie obliczenia. To powiedziawszy, możesz być zaskoczony, jak głęboko nowoczesne silniki obliczają w pełni, zwykle przekraczają 3 ruchy, nawet w szybkich grach.
Wniosek / połączenie wszystkiego
Podsumowując - funkcje ewaluacyjne mają wbudowaną dużą inteligencję (tj. Uwzględniają więcej rzeczy niż przeciętny człowiek), heurystyka pozwala komputerowi wyrównać linie myśli, które według niego prawdopodobnie nie zakończą się dobrze, a komputery są niezwykle, bardzo szybkie. Dodaj je i trudno je pokonać.