Czy istnieje silnik, który znajduje najlepszy „praktyczny” ruch?

25

Standardowy silnik szachowy znajdzie ruch, który uważa za najlepszy, zakładając najlepszą grę z obu stron. Ale ten ruch może prowadzić do nieznacznej przewagi lub trudnej linii, która może łatwo doprowadzić do błędów dla gracza o określonej umiejętności. Czy istnieje program, który znajduje najlepszy „praktyczny” ruch dla np. Średnio zaawansowanych graczy? Na przykład, może wybrać ruch, który prowadzi do bardzo silnej pozycji atakującej, w której przeciwnik najprawdopodobniej popełni błąd, nawet jeśli można go obronić przy idealnej grze.

Ari
źródło
5
Bardzo interesujące pytanie, ale myślę, że wdrożenie czegoś takiego może być trudne, ponieważ „praktyczne” może być bardzo różne w zależności od sytuacji. Na przykład, czy ten sam ruch byłby równie praktyczny przeciwko przeciwnikowi 200 punktów powyżej i 200 punktów poniżej? Co z klasyczną grą kontra gra błyskawiczna?
Akavall
Wygląda na to, że chcesz czegoś bliższego do expectimax niż minimax?
Mehrdad
To przypomina mi pokera. Myślę, że większość pokerbotów zawsze wykonuje praktyczne ruchy zamiast zakładać równowagę Nasha i próbować grać teoretycznie najlepsze ruchy.
Paul
Jednym ze sposobów, aby o tym myśleć, jest to, że chcesz oszacować inną funkcję celu. Kiedy przegrywasz, nie chcesz po prostu zminimalizować, o ile tracisz (kogo to obchodzi, jeśli przegrasz przez stonoga lub królową). Zamiast tego chcesz zminimalizować, o ile tracisz, pod warunkiem, że nadal istnieje linia, na którą twój przeciwnik mógłby się rozsądnie zakochać. Możesz określić „rozsądny upadek”, licząc „tylko” ruchy lub sytuacje, w których tylko ruch górny (lub dwa) kontynuuje przewagę, ale inne ruchy prowadzą do uzyskania przewagi.
ddunn801
Analogicznie, w futbolu amerykańskim kopniesz do przodu, ponieważ daje (wąską) okazję do szybkiego zdobycia bramki, nawet jeśli oczekiwany wynik pogorszyłby sytuację.
ddunn801

Odpowiedzi:

22

Opisujesz coś bardzo podobnego do pogardy . Pogarda polega na tym, że jeśli utrzymasz większą dynamikę na pozycji, słabszy przeciwnik z większym prawdopodobieństwem popełni błędy, które możesz następnie wykorzystać. Dlatego, biorąc pod uwagę dwa ruchy, które dają podobne oceny, silnik z wysokim wynikiem pogardy wybierze ten, który utrzymuje większą dynamikę w tej pozycji. Wszystkie najsilniejsze obecnie tradycyjne silniki mają pogardę (przykład dla Komodo ).

Niebezpieczeństwo pogardy polega na tym, że wobec silnego przeciwnika wysoka pogarda może cię zabić - w końcu zmuszasz silnik do wykonania słabszego ruchu, aby utrzymać grę przy życiu.

Nęcić
źródło
1
Dzięki, to podobne do tego, czego szukam, ale moje pytanie dotyczy nawet graczy o tej samej umiejętności. Na przykład jeden ruch może doprowadzić do zwycięstwa 9/10 razy, biorąc pod uwagę prawdopodobne ruchy, które wykona przeciwnik.
Ari
3
@Ari jest jednak podobny. Wykonaj dwa ruchy, z których jeden doprowadzi do remisu, a drugi może doprowadzić do wygranej 90% czasu, a przegraną pozostałe 10% czasu. Silnik o bardzo wysokiej pogardzie może wybrać ten drugi (i przegrać z doskonałą obroną).
Allure
1
Bez pogardy silniki prawdopodobnie przyciągnęłyby większość gier przeciwko gorszym przeciwnikom, nie wykluczając w żadnym momencie wymuszonych powtórzeń.
Inercyjna ignorancja
1
Może być bardzo dobry, jeśli drugiemu graczowi brakuje czasu.
Ian Ringrose
@Ari Jeśli twój przeciwnik jest na tym samym poziomie co Ty, to jeśli możesz wykonać metaanalizę linii (to znaczy nie tylko decydując, czy wygrywa, ale oceniając prawdopodobieństwo, że Twój przeciwnik zobaczy, że wygrywa), wtedy Prawdopodobnie będę w stanie to przeanalizować.
Kumulacja
6

Zdałem sobie sprawę, że to pytanie dotyczy głównie standardowych silników szachowych, które używają funkcji minimax do oceny ruchów. Jednak silniki szachowe, takie jak alphazero, wykorzystują wyszukiwanie drzewa monte carlo do symulacji wielu różnych gier, dzięki czemu nie tylko patrzą na najlepsze możliwe ruchy. Możliwe, że można je już wykorzystać do znalezienia najlepszego „praktycznego” ruchu lub że można je do tego dostosować. Na przykład algorytm wyszukiwania Monte Carlo można zaktualizować, aby spojrzeć na „rozsądne” ruchy i zasymulować, co się stanie.

Ari
źródło
Ale musisz zaprogramować „rozsądny” algorytm.
Inercyjna ignorancja
1

Nie całkiem.

Bazy danych są przydatne, ponieważ mogą powiedzieć, że często odtwarzany jest ruch, a wynik jest taki, że nie są idealne z różnych powodów.

Fritz 12 (nie jestem pewien co do późniejszych wersji) ma miernik „gorąca”, który mówi, jak złożona jest odmiana.

Dolna linia. to kombinacja rzeczy. Szukasz ruchów, w których najbardziej zasadnicze ruchy okażą się złe. Żaden silnik tego nie powie.

Savage47
źródło