Istnieje wiele witryn internetowych, na których gracze mogą grać w szachy w czasie rzeczywistym. Większość gier trwa od 5 do 10 minut. Dzięki dostępności oprogramowania szachowego można skorzystać z pomocy Fritza lub Rybki, aby zasugerować mu ruch.

Na przykład mogę po prostu wprowadzić każdy ruch mojego przeciwnika i zobaczyć, jakie oprogramowanie zaproponuje mi .

Myślałem o kilku cechach, które mogą sugerować, że gracz oszukuje:

  • ile razy przełącza ekran
  • prędkość grać (na łatwych i naprawdę trudnych pozycjach)
  • dokładność gry

Czy ktoś ma jakieś inne pomysły?

PS: Tak nie ma dla mnie znaczenia, z której perspektywy myślisz (po stronie serwera czy klienta).

Komentarze

  • Świetne pytanie i istotny problem dzisiaj! Ale czy masz na myśli wykrywanie oszustw błyskawicznych online za pomocą algorytmu, czy też wykrywanie tak samo jak gracz podczas gry z przeciwnikiem?
  • Strategie wykrywania oszustw działają tylko wtedy, gdy oszust jest ” głupi „. Przyjęcie bardziej sprytnych strategii oszukiwania (zobacz mój komentarz do odpowiedzi NoviceProgrammer ') sprawiłoby, że oszustwa byłoby prawie niemożliwe do odgadnięcia.
  • Myślę, że to dość bez problemu. Gram na chess.com. Domyślam się, że może 1 osoba na 10 faktycznie oszukuje. A jeśli podejrzewam, że mój przeciwnik uzyskał pomoc, po prostu go blokuję.

Odpowiedź

To jest właściwie bardzo złożone pytanie, o ile wiem, nie takie, które zostało rozwiązane w zadowalający sposób. Zasadniczo „prosimy o algorytm do wykonywania pewnego rodzaju odwrotnego testu Turinga, w celu rozróżnienia między ludzkimi graczami a komputerami.

Po pierwsze, testy po stronie klienta zawsze będą miały słabe punkty, chyba że jesteś w pełna kontrola środowiska klienta. Weźmy pierwszy pomysł – sprawdzenie przełączania między oknami, brzmi dobrze. Niestety, można to obejść w trywialny sposób, uruchamiając silnik szachowy na oddzielnym komputerze lub integrując mój silnik z klientem, aby nie następowało „przełączanie okien”, lub zmieniając klienta, aby zgłaszał 0 zmian w oknie lub … Nie ma prawdziwego sposobu, aby upewnić się, że to naprawdę Twój kod działa na kliencie.

Pozostaje nam fizycznie ściśle kontrolowane środowiska klienckie (które nie zdarzy się w żadnych grach online) lub sprawdzanie po stronie serwera, tj. patrzenie na rzeczywiste ruchy, które zostały rozegrane (i być może czas między ruchami, jak mówisz) i próba wywnioskowania komputera lub aspektu ludzkiego .

Sprawdzanie po stronie serwera można również podzielić na kilka sposobów. Prawdopodobnie możesz wypróbować podejście „z góry na dół”, które byłoby czymś w rodzaju „z poprzednich gier w historii, tylko 2% ludzi wykonało ten ruch, podczas gdy 50% komputerów to robi. ”Byłby to naprawdę dobry sposób, gdybyśmy mieli wystarczająco dużo danych dla„ dowolnej pozycji ”. tempo szachów jest jednak tak duże, że nawet bardzo duże zbiory danych nie będą zawierały znaczącej liczby gier pasujących do Twojej pozycji, gdy przejdziesz przez wczesną środkową partię.

Zakładając, że nie mieć jakiekolwiek wiarygodne statystyki dotyczące ludzkiej strony równania, nadal możesz prezentować pozycję wielu silnikom szachowym (z różnymi ustawieniami czasu) i zobaczyć, jak dokładnie ruchy graczy pasują do ruchów komputera. Samo w sobie doprowadziłoby to również do wielu fałszywych trafień, jednak powtarzające się pozytywy dla tego samego silnika szachowego i ustawień czasu sprawiłyby, że coraz bardziej prawdopodobne byłoby, że gracz oszukuje. Aby to jeszcze bardziej wzmocnić, prawdopodobnie przyjrzałbym się podejściu „oddolnemu” do analizy pozycji szachowych; krótko mówiąc, próbując dowiedzieć się, dlaczego ludzie i komputery grają inaczej. Na przykład. ludzie mają tendencję do rozpoznawania wspólnych wzorców. W grze z „dziwnymi” wzorami lub nieprawdopodobnymi sytuacjami, człowiek byłby mniej skłonny do bardzo dokładnej gry. Żaden z nich sam w sobie nie jest szczególnie potępiający, ale biorąc pod uwagę dużą liczbę gier, zwróciłoby to uwagę administratorów na trendy.

Aby dodać kilka szczegółów do twojej listy, podałbym linie profesorów wykryć plagiat w gazetach – wykrywając nagłą zmianę. W szachach jest to niezwykle trudne do zdefiniowania, ale nagła zmiana stylu gry lub siły gry może wskazywać na oszustwo. Konkretnie, szukałbym nietypowych, agresywnych ruchów, które zwykle „sprawdzają się” i nie mają żadnych wad dla gracza (zbyt dokładne). Wymuszone maty w 4+ ruchach od gracza, który zwykle stawia skoczków na krawędzi szachownicy itp. (jest to możliwe … po prostu mało prawdopodobne). Jak dokładnie to działałoby, brzmi tak, jakby mogło zająć całą książkę (lub więcej).

EDYCJA: Był artykuł o oszukiwaniu i wykrywaniu w szachach najwyższego poziomu .

Komentarze

  • ludzie kontra komputery mogą dawać fałszywe alarmy w otwarciu gry, bardzo łatwo jest zapamiętaj najlepsze odtworzenia
  • @ ajax333221 Całkowicie się zgadzam. Do pewnego stopnia coś podobnego może odnosić się do gry końcowej, w której człowiek może rozegrać to całkiem blisko ideału, po prostu na podstawie wcześniejszej wiedzy. To powiedziawszy, jeśli potrafię wykryć możliwe oszustwa w grze, ' m na pewno dzięki dodatkowym informacjom i zaawansowanej analizie komputer mógłby zrobić to samo. Wymuszony mat w 4 lub więcej ruchach był faktycznym przykładem z niedawnej gry online z graczem z oceną 1050 – bardzo sugestywny, delikatnie mówiąc …

Odpowiedź

W błyskawicznym tempie możesz określić, ile czasu wykorzystują. Ludzie używający silników używają stałej ilości czasu na każdy ruch, zamiast błyskawicznie przebijać się przez otwarcie i zwalniać do czołgania się w grze środkowej, jak większość normalnych graczy. W szczególności, nie mogą grać szybko debiutu, ponieważ muszą aktualizować swoją tablicę komputerową po każdym ruchu otwierającym. Jeśli zajmują pięć sekund w ruchu, dwie i pięć sekund w ruchu dwudziestym, prawdopodobnie używają silnika.

Komentarze

  • Nie jestem pewien, czy było to prawdą w momencie wysyłania, ale sztokfisz może przyjąć pozostały czas jako dane wejściowe, aby określić priorytet tego, w czym się porusza, aby spędzić czas.

Odpowiedź

Liczba przełączeń ekranu i szybkość gry są bez znaczenia. Jeśli użyjesz ich do złożenia skargi organizatorom strony internetowej z grami w szachy, będą się z ciebie śmiać.

Są dwa sposoby by stwierdzić, czy ktoś oszukuje. Pierwsza to „dymiąca broń”. Rozważ tę sekcję o grze –

[White "Allwermann,Clemens (1900) "] [Black "Kalinitschev,Sergey (2505) Boeblingen (9), 30.12.1999"] [FEN "r6k/1p3Rpp/p2p1bq1/3N4/2P5/1P6/P1b2QPP/5RK1 w - - 0 1"] 1.Qa7 Rg8 2.Qxb7 Be4 3.Nf4 Qf5 4.Qd7 Qe5 5.Kh1 g5 6.Nh3 g4 7.Nf2 Bf5 8.Nxg4 Be4 9. R7xf6 Bxg2+ 10. Kxg2 Qe4+ 11. Kh3 

Pytanie brzmi, w co byś zagrał Sytuacja jest taka, że wygrana w tej, ostatniej rundzie zawodów, wygrywa turniej przed szeregiem arcymistrzów. Nieźle jak na 1900. Podejrzewam, że większość z nas zagrałaby coś w miarę solidnego, co utrzymuje win. Porusza się jak Wxb7 lub Rd7 lub (dla tchórzy takich jak ja 😉 Wxf6. Qa7 to bicie serca ruchu, dymiący pistolet. Fritz jest uznawany za najlepszy ruch na tej pozycji, aż o 0,1 przed kolejnym najlepszym ruchem, Rd7.

Dymiące partie nr 2 na koniec gry, kiedy czarne zrezygnowały, pozostawiając gracza z oceną 1900 jako zwycięzca turnieju. Co powiedziałbyś Kalinitschevowi na takiej pozycji?

Tak przebiegała rozmowa:

Allwermann: „To kolega w 8”

Kalinitschev: „Nie sądzę”

Allwermann: „Sprawdź to, przekonasz się, że mam rację”

Allwermann miał oczywiście rację. Czy potrafisz znaleźć mata w 8 na ostatniej pozycji? Bez silikonu?

Masz więc swoją dymiącą broń i zanieś ją organizatorom. Co oni zrobią?

No cóż, teraz jest drugi sposób wykrywania i udowodnienia ponad wszelką wątpliwość, że oszukuje się.

Będą musieli zebrać co najmniej 20 gier, każda z co najmniej 20 ruchów niezwiązanych z bazą danych i przesyła je do silnika w celu sprawdzenia. Zasadniczo to, czego szukają, to procent czasu, w którym podejrzany wybiera ruch niezwiązany z bazą danych, który pasuje do pierwszego wyboru silnika, jednego z pierwszych dwóch wyborów, jednego z trzech pierwszych typów. Progi „dowodu” to –

Najlepsze 1 65%

Najlepsze 2 80%

Najlepsze 3 90%

Najnowszym przykładem jest furorę z powodu występu Borislava Ivanova .

Oto jego statystyki –

Zadar 19: Houdini 1.5a x64 Hash: 256 Czas: 30s Max Depth: 20ply {Borislav Ivanov (Games: 9)}

{Top 1 Match: 210/314 (66,9%) Przeciwnicy: 150/313 (47,9%)

{Top 2 Mecz: 270/314 (86,0%) Przeciwnicy: 207/313 (66,1%)

{Pierwsza trójka: 285/314 (90,8%) Przeciwnicy: 238/313 (76,0%)

{Top 4 mecz: 293/314 (93,3%) Przeciwnicy: 267/313 (85,3%)

W 8. rundzie transmisja na żywo spadła (podejrzewa się, że umożliwiło to jego pomoc z zewnątrz dostać ruchy) i przegrał z GM Predojevic. Jeśli ten wynik zostanie usunięty, to nowe statystyki to:

Zad ar 19: Houdini 1.5a x64 Hash: 256 Czas: 30s Max Depth: 20ply {Borislav Ivanov (Games:)}

{Top 1 Match: 197/287 (68,6%) Przeciwnicy: 135/286 ( 47,2%)

{Top 2 mecz: 252/287 (87,8%) Przeciwnicy: 188/286 (65,7%)

{Top 3 mecz: 265/287 (92,3%) Przeciwnicy: 218/286 (76,2%)

{Top 4 mecz: 272/287 (94,8%) Przeciwnicy: 242/286 (84,6%)

Jak widać, oba sety statystyk dałoby mu wyrzucenie z serwera szachowego. Dla porównania, oto analiza dla meczu 8, kiedy kanał był wyłączony:

{Białe: Borislav Ivanov}

{Pierwszy mecz: 13/27 (48,1%)

{2 najlepsze mecze: 18/27 (66,7%)

{3 najlepsze mecze: 20/27 (74,1%)

{4 najlepsze mecze: 22/27 (81,5%)

{Czarne: Borki Predojevic}

{Pierwszy mecz: 15/27 (55,6%)

{Drugi najlepszy mecz: 19 / 27 (70,4%)

{3 najlepsze mecze: 20/27 (74,1%)

{4 pierwsze mecze: 25/27 (92.6%)

Pamiętaj, że FIDE powołało komisję do zbadania sposobów wykrywania i zwalczania oszustw komputerowych. Ich wytyczne znajdują się tutaj . Zwróć uwagę na tę sekcję:

E. Internetowe narzędzie do selekcji gier FIDE

FIDE dostarczy internetowe narzędzie do selekcji gier, które będzie dostępne dla wszystkich upoważnionych przedstawicieli FIDE (członków IO, IA, ACC) i federacji krajowych. Będzie on umieszczony na dedykowanej stronie FIDE i umożliwi upoważnionym stronom przesyłanie gier w formacie PGN w celu przeprowadzenia „szybkiego testu”, który pozwoli zidentyfikować potencjalne wartości odstające w turnieju. Przez „badanie przesiewowe” rozumie się, że zapewnia to jedynie wstępny test bez wartości osądu, z wyjątkiem tego, że można go przytoczyć, odrzucając zarzuty i odmawiając przejścia do ręcznego pełnego testu.

Komentarze

  • Świetna analiza! Wyniki T3 / T4 są przekonujące, zwłaszcza gdy podaje się prawdopodobieństwo jego wyników. Swoją drogą: zdaję sobie sprawę, że twój post został opublikowany jakiś czas temu, ale czy nadal masz cytat z rozmowy Kalinitschev i Allwermann? Oczywiście, żaden 1900 nie znajdzie niezawodnie partnera w 8, zwłaszcza gdy 2500 nie ' go nie widzi. Nie ' nie brzmi szczególnie mądrze, gdy poruszył tę kwestię, chociaż mogłaby sama z siebie wywołać podejrzenie, że ' to oszustwo.
  • Przy okazji: Nie zgadzam się, że Qa7! jest zatrzymaniem serca. ' po prostu wykorzystuje dwa fakty, które: 1) Tylna pozycja Czarnych ' jest słaba, a 2) ' jest narażony na kontakt z partnerem. Tak więc, jakiekolwiek przesunięcie wieży poza tylną rangę pozwoli na potencjalnie wygrywającą taktykę. W tym przypadku białe wykorzystują ten ruch, aby zaatakować pionka b i skoordynować hetmana i wieżę na siódmej pozycji, aby wieża była broniona. Białe wygrywają co najmniej pionka po 1 … Hxf7 2. Hxa8 + Hg8 3. Hxb7. Myślę, że każdy GM powinien był zobaczyć ruch Qa7, a ja ' jestem bardzo zaskoczony, że Kalinitschev go przegapił. To ' najbardziej wymuszające posunięcie na planszy, po Wxf6 ?!
  • @jaxter Informacje pochodzą z en.chessbase.com/post/a-history-of-cheating-in-che-3- . Uwaga ” Nie zgadzam się, że Qa7! to zatrzymujący serce ” – jeśli przeczytasz artykuł, zobaczysz, że Vishy Anand się z tobą nie zgadza :-). Z artykułu – ' Więc w co gra nasz bohater? 31.Qa7? !! „Fritzy!” pisnął Anand i wpadł w niekontrolowane ataki śmiechu, gdy zobaczył to i kolejne ruchy (sfilmowałem jego wesołość i umieściłem ją w moim multimedialnym raporcie w ChessBase Magazine 69). '
  • Dziękuję za odniesienie. Rozumiem twój punkt widzenia. Z pewnością byłbym skłonny wykonać ten ruch, ale to ' częściowo dlatego, że sądziłbym, że białe mogą przetrwać czarne ' s kontratak bez obliczania wszystkich linii . Jeśli spróbuję to zrobić a) ' d upewnij się, że popełnię fatalny błąd, oraz b) ' d otrzymam heebie-jeebies i wybierz inny ruch. Dzieje się tak ' właśnie dlatego, że kieruję się intuicją, że często gram dziwaczne ruchy, takie jak … Qa7 !. To ' jest również niewątpliwie czynnikiem przyczyniającym się do tego, że moja ocena jest poniżej 2000 …
  • Istnieje ' sa różnica między górnym ruchem a solidnym ruchem, którego ' spodziewasz się, że wielu graczy znajdzie, a genialną taktyką, której nie ' t spodziewać się, że większość graczy to zobaczy. Biała ' gra powyżej ma kilka takich ostatnich.

Odpowiedź

Aby udzielić odpowiedzi, jak podchodziłbym do tego, użyłbym prostego pomysłu:

  • Test hipotezy zerowej

Chodzi o to, że istnieje ograniczona liczba publicznie dostępnych silników szachowych, powiedzmy N z nich. To założenie oczywiście wyklucza możliwość, że oszust napisał swój własny silnik szachowy (lub używa jakiegoś publicznie niedostępnego silnika szachowego), ale powinno to być wystarczająco mocne założenie, aby złapać przypadkowych oszustów.

Zastosowanie Testu hipotezy zerowej byłoby bardzo proste: dla każdego silnika szachowego X i dla każdego podciągu ruchów w bieżącej grze oblicz prawdopodobieństwo p obserwacji rozegranego podciągu zakładając hipoteza zerowa , że gracz nie używając silnika szachowego X, aby wykonać za nich ruchy. Można by naiwnie założyć, że gracz porusza się losowo (lub losowo wybiera z wybranej liczby najlepszych ruchów d_i), a następnie prawdopodobieństwo dla danego fragmentu długości przesuwa silnik szachowy X sprawi, że zostanie obliczony jako (d_1)/(n_1) * (d_2)/(n_2) * (d_3)/(n_3) *...* (d_k)/(n_k), gdzie d_i to liczba możliwych (u góry) ruchów do wykonania na ith zakręcie, według oceny silnika X i n_i to liczba wszystkich ruchów dostępnych dla gracza w turze i (lub jakiś rozsądny podzbiór).

Następnie po prostu oblicz

p* = minimum p over all chess engine X, all subsequences y. 

Jeśli p* jest niższy od określonego progu, oznacz gracza jako oszusta, ponieważ istnieje podciąg y i silnik szachowy X, który zapewnia prawdopodobieństwo, że gracz jest nie oszukuje poniżej pożądanego prawdopodobieństwa.

Odpowiedź

Myślę, że analiza po zakończeniu gry daje największą szansę na zidentyfikowanie, czy gracz oszukuje. Można to zrobić za pomocą tak zwanej analizy T3 / T4.

Zasadniczo mierzy to częstotliwość, z jaką gracz wybiera jeden z 3 lub 4 najlepszych ruchów, które są sugerowane przez silnik. To w dużej mierze eliminuje potrzebę identyfikowania używanego silnika docelowego (ponieważ generalnie zgadzają się co do pierwszych 4/5 ruchów, nawet jeśli kolejność preferencji jest inna).

Dostępne jest oprogramowanie, które będzie uruchamiać zestaw gier użytkownika przeciwko n górnym ruchom silnika. Edycja:

Wiem, że ChessAnalyse może być użyte do przeprowadzenia takiej analizy. Możesz wypróbować 30-dniową wersję próbną.

Komentarze

  • Może temu przeciwdziałać inteligentny oszust, który ma pewną wiedzę szachową w następujący sposób: graj ruchami że po prostu nie pogarszaj swojej pozycji i poczekaj na błąd ' przeciwnika, który zagroziłby jego pozycji. Jeśli grasz od 5 do 15 minut blitza z kimś, kto nie ma siły GM, to na pewno się wydarzy, wcześniej czy później. Co więcej, jeśli od czasu do czasu wykonasz zły ruch i / lub nie będziesz nalegać na wygraną w każdej grze, ' jestem pewien, że Twoje oszustwo pozostanie niewykryte.
  • @AndreaMori: zgadzam się, że możesz uniknąć kilku sytuacji, ale gdy jego / jej ocena się poprawi, będzie zmuszony do szukania coraz więcej i w końcu zostanie wykryty.
  • Dziękuję, wspomniałeś że jest dostępne oprogramowanie. Czy możesz podać przykład?

Odpowiedz

Jeśli witryna daje użytkownikom jedno kliknięcie, uzyskaj pozycje FEN lub PGN gdy gra jest uruchomiona , powinieneś rozważyć ich śledzenie.

Niektórzy oszuści oszukują od samego początku, ale inni wolą zacząć oszukiwać tylko wtedy, gdy mają kłopoty, i tak się stanie oczywiście użyj funkcji kopiowania FEN / PGN, ponieważ ręczne ustawienie pozycji jest czasochłonne.

Powinieneś jakoś zapisać to wraz z ruchem w momencie, gdy go kopiował, w ten sposób możesz porównać z wskaż następujące ruchy i zobacz, czy jego siła znacznie wzrosła przy pomocy silników szachowych.

Ale bardzo ważne jest, abyś używał go tylko po to, aby pomóc Ci zdecydować, czy oszukuje, byłoby to niesprawiedliwe aby użyć skryptu, który nie wykorzystuje interwencji człowieka, może być wiele fałszywych trafień, na przykład często lubię kopiować pozycje podczas gry, aby później je analizować bez potrzeby wyszukiwania mojej gry lub znajdowania Dokładny ruch z PGN. I nie zawsze zostawiam to w swoim schowku z obawy przed nadpisaniem, więc przenoszę go do notatnika (co oznacza, że przełączam okna zaraz po skopiowaniu).

Komentarze

  • Wydaje się, że dotyczy to ” sposobu zarządzania serwerem ” punktu widzenia, a nie ” czy mój przeciwnik oszukuje? ” (nie żeby operator powiedział cokolwiek o tym, który przypadek ma dla niego znaczenie). Warto wspomnieć zajęło mi trochę czasu, zanim zrozumiałem, co masz na myśli, myśląc o tym z punktu widzenia gracza '.(Dobra odpowiedź… jeśli to zrozumiesz ^ _ ^ ')
  • dzięki @ajax. Nie myślałem o zapisaniu ruchu, w którym pozycja została skopiowana, i przeanalizowaniu różnicy między siłą przed i po.
  • i oczywiście oszuści dowiedzą się i wyłączy to śledzenie. lub wykonaj własną funkcję kopiowania, ' nie jest takie trudne: codegolf.stackexchange.com/questions/89647/chess-conversion

Odpowiedź

FWIW, nikt nie wymienił nazwiska dr Kena Regana, chociaż wskaźnik do bloga Liptona opisuje inny artykuł w Chess Life , który omawia jego pracę.

Ten artykuł jest bardzo pouczający o pracach Regan, stanie technik wykrywania, które obowiązywały w 2014 roku, oraz o pracach FIDE nad utworzeniem komitetu do zdefiniowania i rozpowszechnienia standardów, narzędzi i technik wspomagających TD ” walczymy z oszustwami.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *