To nie pierwszy raz, kiedy znalazłem znacznie lepszy ruch niż silnik szachowy, nawet zrozumienie tych ruchów po ich wykonaniu zajmuje trochę czasu.
Na przykład ruch 15 ... Bf2
w grze poniżej:
Silnik pozostaje przez jakiś czas niezauważony, dopiero gdy się ruszam, zaczyna widzieć resztę góry lodowej.
Wiem, że wszystko zależy od tego, ile czasu poświęcisz na analizę, ale nie do przyjęcia jest to, że ludzie potrafią znaleźć te ruchy w krótszym czasie niż komputery.
- Dlaczego silniki szachowe nie dostrzegają dobrych ruchów na niektórych pozycjach? (Kiedyś czytałem coś o „efekcie horyzontalnym”, może to jest związane?)
- Czy są inne godne uwagi przykłady? (np. ta słynna łamigłówka , rozwiązanie zajmuje trochę czasu)
Te pytania zawierają przydatne informacje, aby częściowo wyjaśnić niektóre czynniki, które mogą powodować tę anomalię: Jakie algorytmy i heurystyki są popularne w szachach komputerowych? , W jakich sytuacjach przeciwnika komputerowego powinienem stworzyć, aby mieć większą szansę na wygraną? , Oceny komputerowe: na ile są godne zaufania?
Uwagi: Pułapka jest znana jako Wędka , wiem, że spóźniłem się na partnera w 3 (i partnera w 7) :(, limit czasu na ruch to dni (szachy korespondencyjne), ale zajęło mi to około 5-10 minut aby zakończyć obliczanie wszystkiego.
źródło
15... Bf2
się wcale po 5 minutach.Odpowiedzi:
Powodem są nazywane techniki przycinania do przodu (patrz http://chessprogramming.wikispaces.com/Pruning ) z ProbCut w pierwszej linii.
Ruch 15 ... Bf2 jest przycinany na płytkich głębokościach, ponieważ obejmuje ofiarę 16. Rxf1 bez odzyskania czegoś konkretnego z dowodami natychmiast po nim. Matenet jest również trudny do zauważenia, ponieważ zawiera pewne dalsze „ciche” ruchy, jak na przykład 17 ... Ke7, i tak również silniki, nie tylko ludzie mają trudności z widzeniem odległych cichych ruchów, ponieważ są często przycinane.
W tym konkretnym przypadku nie można nawet powiedzieć, że silniki nie dostrzegają dobrych ruchów, ponieważ również kontynuacja 15 ... Rh3h1 jest bardzo dobrym ruchem i prowadzi do absolutnie wygranej pozycji.
Na koniec należy pamiętać, że siła silnika jest zawsze mierzona w kategoriach siły elo, a nie zdolności do znalezienia absolutnie najkrótszej drogi do wygranej. Nie ma znaczenia, czy silnik wygra w 8 ruchach, czy w 25 ruchach. Dążenie do wygranej za najkrótszą wygraną oznaczałoby stratę czasu, ponieważ przez większość czasu nie ma tak tajnego dobrego posunięcia. A strata czasu zaszkodziłaby ocenie ELO silników.
źródło
Próbuję tego z Houdini 1.5 (darmowa wersja). Na początku 15 ... Bf2 nie pojawia się w pierwszych 5 ruchach, a następnie, gdy osiąga głębokość 15, robi to jak # 1. Zajmuje około 19 sekund na moim czteroletnim komputerze, nie tak długo.
Dlatego nie może go nie zauważyć, ale uważa, że jest to najlepszy ruch po osiągnięciu głębokości 15. Najwyraźniej, o ile tylko wygląda na 14 warstw, inne ruchy są lepsze (jak również wygrywając 15 ... f5 +).
Najwyraźniej 15 ... Bf2 to partner w 8, który ma 15 warstw (8 ruchów czarnych, 7 białych). Ale na początku po prostu uważa, że to +10 lub więcej, potem +20, następnie łączenie w 10, a następnie wiązanie w 8.
Wiązanie w linii 8 to:
Najwyraźniej, gdy Houdini 1.5 myśli, że 15 warstw jest głębokie, nie bierze pod uwagę wszystkich możliwych linii, które mają 15 warstw, lub zobaczy wiązanie w 8, gdy zakończy wyszukiwanie 15 warstw.
Myślę, że to z powodu przycinania , przestaje patrzeć na niektóre linie, gdy myśli, że nie są wystarczająco obiecujące. W ten sposób może spędzić więcej czasu na obiecujących liniach, a programista uważa, że zalety przewyższają wady. Ale nie mam teraz odpowiedzi na pytanie, co decyduje się na przycinanie tutaj (prawdopodobnie podejmuje miliony osobnych decyzji o przycinaniu na głębokości 15).
Może to mieć związek z cichymi ruchami ... Ke7 i ... Rah8, dwoma nieudanymi kontrolami w linii, w której czerń jest zmniejszona. Prawdopodobnie decyduje gdzieś, że nie warto dalej patrzeć w tę linię. Dopiero później, gdy kontynuuje linię i znajdzie wiązanie na końcu, wykonaj inne linie, które przedłużają grę (z 18.Rh1 Rxh1 i tak dalej), a następnie pojawiają się.
W każdym razie wiadomo, że nie działa to tak dobrze, że komputer myśli przez kilka sekund tylko wtedy, gdy chcesz dojść do sedna czegoś, kilka minut jest lepsze.
źródło
po przeczytaniu wszystkich odpowiedzi i innych źródeł, rozumiem teraz, że nie „pomijają” lub zdecydowali się ominąć te ruchy, ludzie zaprogramowali je w taki sposób, aby postępowali według określonego wzorca wyszukiwania (gdzie / jak / kiedy + kiedy) a co ważniejsze, kiedy należy zatrzymać wyszukiwanie i spojrzeć na bardziej obiecujące linie w celu zaoszczędzenia zasobów.
Ale przy wystarczającym czasie komputer sfinalizuje każdą możliwą kombinację na pewnej głębokości.
TL; DR
źródło
Myślę, że wszystkim brakuje znacznie szybszego partnera. Podczas sprawdzania pozycji za pomocą Houdini 3, czarny faktycznie ma wiązanie w 3 w ruchu 13. Zamiast Bf1 +, czarny powinien był grać Bf2, i pozostaje z 14. d3 bf1 + 15. Bh6 Rxh6 #. Tak więc, w nietypowej odpowiedzi na twoje pytanie, może niektóre silniki nie widziały twojego ruchu od razu, ale w przypadku Houdini 3 znalazło znacznie szybszego partnera.
źródło