To nie jest prawdziwe, wyobraź sobie, że tak się dzieje.
Computer A
jest superkomputerem. Może obliczyć 30 warstw na głębokość w ciągu 20 sekund.
Computer B
jest superkomputerem. Może obliczyć 15 warstw na głębokość w ciągu 20 sekund.
Grają ze sobą w szachy.
Czy te 15 głębokości naprawdę mają znaczenie? Sądzę, że w obrębie tych 15 głębokości może istnieć tryliony sposobów na ucieczkę przed matą lub złapanie ważnego elementu. Jasne, Computer A
wie więcej. Ale Computer B
jest w stanie przewidzieć przyszłość także dość daleko, moim zdaniem, wystarczająco daleko, aby bronić się naprawdę dobrze.
engines
calculation
ply
RikTelner
źródło
źródło
Odpowiedzi:
Tak, te 15 głębokości mają ogromne znaczenie.
Rozważ tę pozycję, która wystąpiła w Nieśmiertelnej grze Kasparowa przeciwko Topałowowi.
Testowałem tę pozycję z kilkoma silnikami. Niektóre silniki na głębokości 15 nie wykryły, że 24 ... cxd4 to przegrywający ruch i uważały, że wygrywa. Te same silniki, na większej głębokości, wykonały prawidłowy ruch 24 ... Kb6!
Na przykład nawet silnik tak potężny jak Sztokfisz 4 początkowo na głębokości 21 uważa, że ruch przegrywający 24 ... cxd4 jest poprawny.
Ten sam silnik, gdy jest włączony na nieco większej głębokości, pokazuje 24 ... Kb6 prawidłowego ruchu.
Fritz 11 SE, na głębokości 15, również zawiódł. Ale znalazł właściwy ruch na głębokości 16!
Weź również pod uwagę ten niesamowity problem, jak pozycja, którą tu znalazłem .
Sztokfisz nie był w stanie znaleźć zwycięskiej linii 1. Be2 +! do głębokości 31 i do tej pory uważał, że to zły ruch. Tutaj demonstruję zwycięstwo. Chodzi o to, że czarne są w zugswang z powodu zagrożeń ze strony partnera i muszą albo oddać królową, albo poruszyć pionka, co pozwoli białym stworzyć pionka i wygrać.
( 4 ... Qxe4 5. Nf6 + )
5. Nf4 Qg7 6. Nd3 ! Qxd4 7. c6! a5
( 7 ... Qxe4 8. Nf2 + Kf3 9. Nxe4 Kxe4 10. Kg2 Kd4 11. g4 hxg4 12. h5 Ke5 13. h6 Kf6 14. Kg3 Kg6 15. Kxg4 Kxh6 16. Kf5 Kg7 17. Ke6 Kf8 18. Kd7 Kf7 19. Kxc7 )
8. b5! a4 9. b6 cxb6 10. c7 Qxe4
( 10 ... Qc3 11. Nf2 # )
11. Nf2 + Kf3 12. Nxe4 1-0
Oto dziennik silnika ze Sztokfiszy 4. Jak widać, wykrywa on, że 1. Be2 + wygrywa, tylko na głębokości 31!
źródło
Zależność między wzrostem wydajności a głębokością wyszukiwania jest od dłuższego czasu aktywnym obszarem badań w społecznościach programistów komputerowych. Istnieje teoria, że zwiększenie głębokości poszukiwań spowodowało zmniejszenie zwrotów siły ... wydawało się to potwierdzone w wynikach eksperymentalnych.
Z mojej perspektywy ma to intuicyjne podstawy. Wyobraź sobie swoje hipotetyczne dopasowanie między dwoma superkomputerami, zaczynając od pozycji tabeli bazowej gry końcowej. Większość wygranych wymuszonych w bazach tabeli ma miejsce na horyzoncie mniejszym niż (na przykład) 50 warstw. Większość pozostałych pozycji jest wylosowanych, tylko niewielka część postanawia wygrać na większej głębokości. Komputer wyszukujący na 100 warstwach miałby ograniczoną przewagę nad komputerem 50 warstwowym, ponieważ (jak wspomniałeś) słabszy program jest w stanie nawigować przez prawie wszystkie linie, które tracą, wszystkie występujące na bardziej ograniczonej głębokości. Program 50-warstwowy miałby znacznie większą przewagę nad programem 25-warstwowym ... podobnie jak program 4-warstwowy miałby jeszcze większą przewagę nad programem 2-warstwowym.
Po raz pierwszy zetknąłem się z tą koncepcją około 15 lat temu w serii artykułów na temat Mrocznej Myśli , eksperymentując w głębokich poszukiwaniach. To świetna lektura, jeśli interesuje Cię szachy komputerowe.
Chociaż nie mogłem znaleźć referencji online, istnieje artykuł z zeszłego roku na ten temat ...
Diogo R. Ferreira (2013). Wpływ głębokości wyszukiwania na siłę gry w szachy. ICGA Journal, tom. 36, nr 2
źródło
Pytanie brzmi: czy masz na myśli 15/30 warstw wyczerpujących poszukiwań, czy nominalną głębokość / iterację 15/30 nowoczesnego silnika szachowego, takiego jak Sztokfisz?
Jeśli chodziło ci o to drugie, 15 warstw niekoniecznie wiele znaczy. Nowoczesne silniki szachowe mocno przycinają i redukują ruchy, które są rzekomo złe, więc może się zdarzyć, że poświęcenie, które wydaje się złe na pierwszy rzut oka, na nominalnej głębokości / iteracji 15 jest w rzeczywistości przeszukiwane tylko na głębokość np. 5-10. Na głębokości / iteracji 30 ruch prawdopodobnie nadal jest przeszukiwany tylko na zmniejszonej głębokości, ale wtedy może to być efektywna głębokość 15-20, co może być wystarczające, aby stwierdzić, że poświęcenie jest rzeczywiście dobre, i to zaraz po uruchomieniu silnika odkrywa, że ruch jest obiecujący, zmniejszy redukcję, dzięki czemu ruch zostanie przeszukany na głębokości bliższej do 30 warstw (lub jeszcze głębiej z powodu rozszerzeń i wyszukiwania spoczynku). Więc tak, myślę, że może to coś zmienić, nawet jeśli kombinacja mieści się w nominalnym horyzoncie 15 warstw.
Jeśli miałeś na myśli wyczerpujące wyszukiwanie, to myślę, że silnik o głębokości 15 byłby bardzo silny, pod warunkiem, że ma dobrą funkcję oceny i pewnego rodzaju wyszukiwanie bezruchu (po opuszczeniu węzłów na głębokości 15). Ze względu na malejące zwroty, myślę, że zysk podwajając głębokość byłby znacznie mniejszy niż w przypadku dopasowania dwóch nowoczesnych silników o głębokości 15 do głębokości 30. Ale to oczywiście tylko teoretyczne, ponieważ wyczerpujące poszukiwanie głębokość 15 zajęłaby kilka rzędów wielkości dłużej niż silniki zwykle osiągają głębokość / iteracja 15, więc taki eksperyment byłby możliwy tylko na niższych głębokościach.
źródło
FWIW Kiedy ARM był nowy, napisałem zoptymalizowany wyczerpujący program wyszukiwania ARM z oceną pozycji tylko materialnej po warstwie 1.
Użyłem sztuczek ze zoptymalizowanym kodem maszynowym, iteracyjnego pogłębiania, okienkowania alfa-beta podczas posortowanych ruchów (prawie wszystkie pozycje miały wartość 0, więc uzyskałem prawie optymalne przycinanie alfa-beta) - i tablice skrótów, które zmniejszyły współczynnik rozgałęzienia do znacznie mniejszego niż teoretyczny pierwiastek kwadratowy dla alfa-beta, zwykle około 4 w najgorszej części gry.
Podczas rywalizacji ze standardowymi programami w tym czasie mój program E6P znalazł się w okropnych pozycjach, ale z dodatkową warstwą lub dwoma wyczerpującymi wyszukiwaniem w porównaniu do oprogramowania w tym czasie (tj. Zwykle 6 warstw wyczerpujących + wyszukiwanie ciche w najgorszym etapie, z nawet do 12 warstw, gdy gra się uprościła), wciąż walczył z przegraną, pomimo pewności swoich przeciwników. Prawie wszystkie gry zostały rozstrzygnięte po wielu godzinach, ponieważ programy przeciwne nie mogły wygrać.
Później zoptymalizowałem go dla StrongARM, gdzie został przeniesiony do 10 warstw. Ta wersja mogłaby z łatwością pokonać wszystkich graczy niebędących szachami, chociaż oczywiście brakowało jej świadomości strategicznej, więc zastosowano słynny komentarz: tak, to ruchy szachowe - ale to nie są szachy!
Było to kilka lat temu, ale kusi mnie, by spróbować ponownie wyczerpująco, biorąc pod uwagę bardziej strategiczną ocenę pozycji w warstwie 1 - i z Intel XEON teoretycznie 10 000-100 000 razy szybszym (i 30k razy większą pamięcią tabeli skrótów) niż 4MIPS ARM2 Acorn Archimedes.
Trzeba przyznać, że nie jest to główny nurt, ale zabawa.
źródło
Szacuje się, że +1 warstwa + 55..70 przyrost ELO (wiele badań na ten temat)
Chodzi o to, że wszystkie te „biliony” zostały obliczone przez A @ D = 30, a jeśli A wybierze ruch z wygraną eval, oznacza to, że obliczył wszystkie te „biliony” i bez względu na to, który z „bilionów” poruszy odpowiedź przeciwnika - ruch wciąż wygrywa
źródło