Szukam wydajnego algorytmu, który pozwala mi przetwarzać drzewo wyszukiwania minimax dla szachów z przycinaniem alfa-beta w architekturze rozproszonej. Algorytmy, które znalazłem (PVS, YBWC, DTS, patrz poniżej) są dość stare (najpóźniej 1990). Zakładam, że od tego czasu nastąpiło wiele istotnych postępów. Jaki jest obecny standard w tej dziedzinie?
Proszę również wskazać mi idiotyczne wyjaśnienie DTS, ponieważ nie rozumiem tego z artykułów naukowych, które przeczytałem.
Algorytmy wspomniane powyżej:
- PVS: Zasada podziału wariacji
- YBWC: Young Brothers Wait Concept
- DTS: Dynamiczne dzielenie drzew
wszystkie są omówione tutaj .
Odpowiedzi:
tak, teoria znacznie się rozwinęła, zarówno ze względu na literaturę analizy szachów, jak i ogólne techniki programowania równoległego. oto kilka nowszych odniesień do (szachy) przycinania wersji beta alfa nad rozproszonymi klastrami / równoległością. także niektóre z wczesnych rozproszonych literatury komputerowej szachowej wyprzedzają wiele podstawowych równoległych wzorców projektowych i mogą być konceptualizowane w ramach tego środowiska.
Równoległy algorytm alfa-beta na GPU / Strnad, Guid (2011)
Parallel Alpha-Beta Search on Shared Memory Multiprocessors / Manohararajah (2001) 98pp!
Równoległy prosty program szachowy / Greskamp, 2003
Równoległe przycinanie alfa-beta drzew decyzyjnych w grze: implementacja szachowa / Steele 1999
Czy można uruchomić wyszukiwanie Minimax z przycinaniem alfa-beta równolegle z OpenMP? (przepełnienie stosu)
Wysokowydajny algorytm wyszukiwania drzewa równoległego DTS (Hyatt 1994)
podstawową ideą DTS jest to, że drzewa wyszukiwania są rozdzielane między węzły obliczeniowe w oparciu o złożoność ruchu / układu. nieużywane procesory, które „kończą się wcześnie”, mogą wykonać dodatkową pracę poza początkowym przydziałem, który może być początkowo rozłożony możliwie równomiernie, ale okaże się nierównomierny. stąd jest to w zasadzie rodzaj kolejki „równoważenia obciążenia” i „producenta / konsumenta” lub podobny do planowania zadań.
źródło