Come determineresti che il giocatore imbroglia negli scacchi online?


40

Esistono molti siti Web online, in cui i giocatori possono giocare a scacchi in tempo reale tra loro. La maggior parte dei giochi dura 5-10 minuti. Con la disponibilità del software di scacchi si può trarre vantaggio utilizzando Fritz o Rybka per suggerire una mossa per lui.

Ad esempio, posso semplicemente inserire ogni mossa del mio avversario e vedere quale software mi suggerirà.

Stavo pensando ad alcune funzionalità che possono suggerire che il giocatore stia barando:

  • quante volte cambia schermo
  • velocità di gioco (in posizioni facili e molto difficili)
  • precisione del gioco

Qualcuno ha qualche altra idea?

PS: Non importa per me, da quale prospettiva stai pensando (server o lato client).


Ottima domanda e problema rilevante oggi! Ma intendi rilevare i trucchi del blitz online usando un algoritmo o rilevare proprio come un giocatore umano mentre giochi un avversario?
Rauan Sagit,

Le strategie di rilevamento degli imbrogli funzionano solo quando l'imbroglione è "stupido". L'adozione di strategie di truffa più intelligenti (vedi il mio commento alla risposta di NoviceProgrammer) renderebbe quasi impossibile indovinare la frode.
Andrea Mori,

Penso che questo sia praticamente un problema. Gioco su chess.com. Immagino che forse 1 persona su 10 in realtà imbroglia. E se sospetto che il mio avversario abbia avuto qualche aiuto, li blocco semplicemente.
Randy Minder,

Risposte:


33

Questa è in realtà una domanda molto complessa, e non una che è stata risolta in modo soddisfacente, per quanto ne sappia. In sostanza, stiamo chiedendo un algoritmo per eseguire una sorta di test di Turing inverso, per distinguere tra giocatori umani e computer.

Innanzitutto, i controlli sul lato client presenteranno sempre dei punti deboli, a meno che non si abbia il controllo completo dell'ambiente client. Prendiamo la prima idea: controllando per passare da una finestra all'altra, suona bene. Sfortunatamente, è banalmente aggirato eseguendo un motore di scacchi su un computer separato o integrando il mio motore con il client in modo che non avvenga alcun "cambio di finestra", o cambiando il client per segnalare 0 cambiamenti nella finestra, o ... Non c'è vero modo per essere sicuri che sia il tuo codice in esecuzione sul client, davvero.

Ciò che ci rimane sono ambienti client fisicamente strettamente controllati (che non accadranno per nessun gioco online) o controlli sul lato server, cioè guardando le mosse effettive giocate (e forse il tempo tra le mosse, come dici tu) e cercando di dedurre il computer o l'aspetto umano.

Il controllo lato server può anche dividere un paio di modi. Probabilmente potresti provare un approccio "dall'alto verso il basso", che sarebbe qualcosa del tipo "dai giochi passati nella storia, solo il 2% degli umani ha fatto quella mossa, mentre il 50% dei computer ce l'ha fatta". Questo sarebbe effettivamente un buon modo per farlo, se avessimo abbastanza dati per "qualsiasi data posizione". Lo spazio di ricerca degli scacchi è così grande, tuttavia, che anche i set di dati molto grandi non avranno un numero significativo di partite corrispondenti alla tua posizione, una volta superato l'inizio della metà del gioco.

Supponendo che non abbiamo statistiche affidabili sul lato umano dell'equazione, potresti comunque presentare la posizione a un numero di motori di scacchi (con un numero di diverse impostazioni di tempo ciascuno), e vedere quanto le mosse dei giocatori coincidono quello di un computer. Di per sé, ciò porterebbe anche a molti falsi positivi, tuttavia, ripetuti positivi per lo stesso motore di scacchi e le impostazioni del tempo renderebbero sempre più probabile che il giocatore stesse barando. Per migliorare ulteriormente questo aspetto, probabilmente esaminerei un approccio "dal basso verso l'alto" dell'analisi delle posizioni degli scacchi; in breve, cercando di capire perché umani e computer giocano diversamente. Ad esempio, gli umani tendono a riconoscere schemi comuni. In un gioco con schemi "dispari" o situazioni improbabili, un essere umano avrebbe meno probabilità di giocare in modo molto preciso. Nessuna di queste,

Per aggiungere alcuni dettagli alla tua lista, vorrei seguire il modo in cui i professori rilevano il plagio nei documenti, rilevando un cambiamento improvviso. Negli scacchi, questo è estremamente difficile da definire, ma un improvviso cambiamento nello stile di gioco o nella forza del gioco può indicare un imbroglio. In particolare, cercherò mosse insolitamente aggressive che tendono semplicemente a "allenarsi" e non hanno alcun aspetto negativo per il giocatore (troppo preciso). Compagni forzati in 4+ mosse da un giocatore che normalmente mette i cavalieri sul bordo del tabellone, ecc. (È possibile ... semplicemente non probabile). Tuttavia, come funzionerebbe esattamente sembra che potrebbe occupare un intero libro (o più).

EDIT: Recentemente è stato pubblicato un articolo su imbroglio e rilevazione negli scacchi di alto livello .


3
gli umani contro i computer possono dare falsi positivi all'apertura del gioco, è molto facile memorizzare le migliori giocate
ajax333221

@ ajax333221 Sono completamente d'accordo. In una certa misura, qualcosa di simile potrebbe applicarsi al gioco finale, in cui un essere umano potrebbe interpretarlo abbastanza vicino alla perfezione, basandosi solo su conoscenze precedenti. Detto questo, se riesco a rilevare possibili imbrogli in un gioco, sono sicuro che con informazioni aggiuntive e analisi sofisticate, un computer potrebbe fare lo stesso. Il compagno forzato in 4+ mosse è stato un vero esempio di un recente gioco online contro un giocatore valutato 1050 - altamente suggestivo, per non dire altro ...
Daniel B

20

In un lampo, puoi dire per quanto tempo stanno usando. Le persone che usano i motori impiegano una quantità consistente di tempo per ogni mossa, invece di battere attraverso l'apertura e rallentare fino a gattonare nel medioevo come la maggior parte dei giocatori normali. In particolare, non possono giocare velocemente l'apertura, perché devono aggiornare la scheda del computer dopo ogni mossa di apertura. Se impiegano cinque secondi nella mossa due e cinque secondi nella mossa venti, probabilmente usano un motore.


Non sono sicuro che questo fosse vero al momento della pubblicazione, ma lo stoccafisso può accettare il tempo rimanente come input per dare la priorità a ciò che si muove per passare il tempo.
OganM

15

Il numero di interruttori dello schermo e la velocità di riproduzione sono privi di significato. Se li usi per lamentarti con gli organizzatori di un sito di giochi di scacchi online, ti rideranno.

Esistono due modi per sapere se qualcuno sta tradendo. Il primo è la "pistola fumante". Considera questa sezione di gioco -

Allwermann, Clemens (1900) - Kalinitschev, Sergey (2505) Boeblingen (9), 30.12.1999
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

La domanda è: cosa giocheresti in quella posizione? La situazione è che una vittoria in questo, l'ultimo round della competizione, ti farà vincere il torneo prima di una serie di grandmaster. Non male per un semplice 1900. Sospetto che molti di noi suonerebbero qualcosa di ragionevolmente solido che mantiene la vittoria. Si muove come Rxb7 o Rd7 o (per i codardi come me ;-) Rxf6. Qa7 è un battito cardiaco di una mossa, una pistola fumante. Fritz giudica la migliore mossa della posizione, un enorme 0,1 davanti alla mossa migliore successiva, Rd7.

Fumare la seconda pistola alla fine della partita quando il nero si è dimesso lasciando il giocatore classificato 1900 come il vincitore assoluto del torneo. Cosa diresti a Kalinitschev in quella posizione?

Ecco come è andata la conversazione:

Allwermann: "È compagno in 8"

Kalinitschev: "Io non la penso così"

Allwermann: "" Dai un'occhiata, scoprirai che ho ragione "

Allwermann aveva ragione, ovviamente. Riesci a trovare il compagno in 8 nella posizione finale? Senza assistenza al silicio?

Quindi, hai la tua pistola fumante e la porti agli organizzatori. Cosa faranno?

Bene, allora arriva il secondo modo di rilevare e dimostrare oltre ogni ragionevole dubbio che la frode sta succedendo.

Dovranno raccogliere almeno 20 giochi ciascuno con almeno 20 mosse non di database e inserirli in un motore per il controllo. Fondamentalmente quello che stanno cercando è la percentuale di tempo in cui il sospetto sceglie uno spostamento non di database che corrisponde alla prima scelta del motore, una delle prime 2 scelte, una delle prime 3 scelte. Le soglie di "prova" sono -

Top 1 65%

Top 2 80%

Top 3 90%

Un esempio recente è il furore per le prestazioni di Borislav Ivanov .

Ecco le sue statistiche -

Zadar 19th: Houdini 1.5a x64 Hash: 256 Tempo: 30s Profondità massima: 20ply {Borislav Ivanov (Giochi: 9)}

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

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

{Top 3 Match: 285/314 (90,8%) Avversari: 238/313 (76,0%)

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

Nell'ottavo round il feed live è andato giù (si sospetta che ciò abbia permesso al suo aiuto esterno di ottenere le mosse) e ha perso contro GM Predojevic. Se questo risultato viene rimosso, le nuove statistiche sono:

Zadar 19th: Houdini 1.5a x64 Hash: 256 Tempo: 30s Profondità massima: 20ply {Borislav Ivanov (Giochi:)}

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

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

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

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

Come vedi, entrambi i set di statistiche lo farebbero buttare da un server di scacchi. Per un confronto, ecco l'analisi per il gioco 8 quando il feed era inattivo:

{Bianco: Borislav Ivanov}

{Top 1 Match: 13/27 (48,1%)

{Top 2 Match: 18/27 (66,7%)

{Prime 3 partite: 20/27 (74,1%)

{Top 4 Match: 22/27 (81,5%)

{Nero: Borki Predojevic}

{Top 1 Match: 15/27 (55.6%)

{Top 2 Match: 19/27 (70,4%)

{Prime 3 partite: 20/27 (74,1%)

{Top 4 Match: 25/27 (92,6%)

Si noti che FIDE ha istituito una commissione per studiare i modi per rilevare e combattere i truffatori informatici. Le loro linee guida sono qui . Nota questa sezione:

E. Lo strumento di screening dei giochi basato su Internet FIDE

FIDE fornirà uno strumento di screening dei giochi basato su Internet, che sarà accessibile a tutti i funzionari autorizzati FIDE (IO, IA, membri ACC) e Federazioni nazionali. Sarà ospitato su una pagina web dedicata a FIDE e consentirà alle parti autorizzate di caricare giochi in formato PGN per un "test rapido" che identificherà i potenziali outlier in un torneo. Con "screening" si comprende che ciò fornisce solo un test preliminare senza valore di giudizio, tranne per il fatto che può essere citato rifiutando le accuse e rifiutando di procedere a un test completo manuale.


1
Ottima analisi! I risultati di T3 / T4 sono convincenti, soprattutto quando viene riportata la probabilità dei suoi risultati. A proposito: mi rendo conto che il tuo post è stato pubblicato qualche tempo fa, ma ti capita ancora di avere la citazione per la conversazione tra Kalinitschev e Allwermann? Chiaramente, nessun 1900 troverà un compagno in 8 affidabile, specialmente quando un 2500 non lo vede. Non sembra particolarmente intelligente per lui aver sollevato questo punto quando potrebbe da solo causare il sospetto che stia barando.
Jaxter,

1
A proposito: non sono d'accordo sul fatto che Qa7! è un arresto del cuore. È semplicemente sfruttando i due fatti che: 1) il rango posteriore di Black è debole e 2) è vulnerabile a un compagno su di esso. Quindi, qualsiasi diversione della torre fuori dal rango posteriore consentirà tattiche potenzialmente vincenti. In questo caso, White usa la mossa per attaccare la pedina b e per coordinare la sua regina e la torre sul settimo in modo che la torre sia difesa. Il bianco vince almeno una pedina dopo 1 ... Qxf7 2.Qxa8 + Qg8 3.Qxb7. Penso che qualsiasi GM avrebbe dovuto vedere la mossa Qa7, e sono molto sorpreso che Kalinitschev l'abbia persa. È la mossa più forzata sulla scacchiera, dopo Rxf6 ?!
Jaxter,

1
@jaxter Le informazioni provengono da en.chessbase.com/post/a-history-of-cheating-in-che-3- . Nota "Non sono d'accordo sul fatto che Qa7! Sia un arresto del cuore" - se leggi l'articolo vedrai che Vishy Anand non è d'accordo con te :-). Dall'articolo - 'Allora, cosa gioca il nostro eroe? 31.Qa7? !! "Fritzy!" Strillò Anand e scoppiò in incontrollabili risate quando vide questo e le seguenti mosse (ho filmato la sua allegria e l'ho incluso nel mio rapporto multimediale su ChessBase Magazine 69). '
Brian Towers

Grazie per il riferimento. Prendo il tuo punto. Sarei sicuramente stato disposto a dare una mossa alla mossa, ma ciò è in parte dovuto al fatto che avrei giudicato che il Bianco potesse sopravvivere al contrattacco del Nero senza calcolare tutte le linee . Se tentassi di farlo a) sarei sicuro di commettere un errore fatale eb) prenderei gli heebie-jeebies e sceglierei una mossa diversa. È proprio perché uso l'intuizione che spesso suono mosse bizzarre come ... Qa7 !. È anche senza dubbio un fattore che contribuisce al perché la mia valutazione è inferiore a 2000 ...
jaxter

C'è una differenza tra la mossa migliore è una mossa che ti aspetteresti che molti giocatori trovino, e una tattica brillante che non ti aspetteresti che la maggior parte dei giocatori vedesse. La commedia di White sopra ha molte di queste ultime.
CashCow

9

Per dare la mia risposta su come mi avvicinerei a questo, vorrei usare una semplice idea:

  • Test di ipotesi nulla

L'idea è che esiste un numero limitato di motori di scacchi disponibili pubblicamente, diciamolo N. Questa ipotesi ovviamente preclude la possibilità che l'imbroglione abbia scritto il proprio motore di scacchi (o stia usando un motore di scacchi pubblicamente non disponibile) ma per catturare imbroglioni casuali questo dovrebbe essere un presupposto abbastanza forte.

L'applicazione del Null Hypothesis Test sarebbe molto semplice: per ogni motore di scacchi Xe per ogni sottosequenza di mosse del gioco corrente calcolare la probabilità pdi osservare la sottosequenza giocata assumendo l' ipotesi nulla che il giocatore non stia usando il motore di scacchi Xper fare le mosse per loro. Si potrebbe ipotizzare ingenuamente che il giocatore si muova a caso (o scelga casualmente da un numero selezionato di mosse migliori d_i), quindi la probabilità per una data sottosequenza di kmosse corrispondenti alla lunghezza che Xverrebbe calcolata da un motore di scacchi verrebbe calcolata come (d_1)/(n_1) * (d_2)/(n_2) * (d_3)/(n_3) *...* (d_k)/(n_k)dov'è d_iil numero di possibili (in alto) mosse da effettuare alithturno, come valutato dal motore Xed n_iè il numero di mosse totali disponibili per il giocatore al turno i(o qualche sottoinsieme ragionevole).

Quindi calcola semplicemente

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

Se p*è inferiore a una certa soglia, etichettare il giocatore come un imbroglione poiché esiste una sottosequenza ye un motore di scacchi Xche porta la probabilità che il giocatore non stia barando al di sotto di una probabilità desiderata.


8

Penso che l'analisi post-partita ti dia le migliori possibilità di identificare se un giocatore stava imbrogliando. Questo può essere fatto usando ciò che viene chiamato come analisi T3 / T4.

Questo fondamentalmente misura la frequenza con cui un giocatore sceglie una delle prime 3 o prime 4 mosse suggerite da un motore. Ciò elimina in gran parte la necessità di identificare il motore target in uso (dato che generalmente concorderanno sui primi 4/5 movimenti anche se l'ordine di preferenza è diverso).

Ci sono software disponibili che eseguiranno una serie di giochi dell'utente contro le prime n mosse del motore. Modificare:

Sono a conoscenza di ChessAnalyse che può essere utilizzato per effettuare tale analisi. Puoi provare la versione di prova di 30 giorni.


2
Questo può essere contrastato da un imbroglione intelligente che ha una certa conoscenza degli scacchi come segue: gioca mosse che semplicemente non peggiorano la tua posizione e attendi l'errore del tuo avversario che comprometterebbe la sua posizione. Se stai giocando un blitz da 5 a 15 minuti contro qualcuno che non ha la forza del GM, questo accadrà sicuramente, prima o poi. Se inoltre lanci occasionalmente una mossa sbagliata e / o non insisti nel vincere ogni singola partita, sono sicuro che il tuo imbroglio non verrebbe rilevato.
Andrea Mori,

@AndreaMori: sono d'accordo che puoi evitare alcune situazioni, ma man mano che la sua valutazione migliora, sarà costretto a cercare sempre di più e alla fine verrà rilevato.
sidprasher,

Grazie, hai detto che è disponibile un software. Puoi fare un esempio?
Salvador Dali,

6

Se il tuo sito offre agli utenti un clic di ottenere posizioni FEN o PGN mentre il gioco è in esecuzione , dovresti considerare di tracciarli.

Alcuni imbroglioni fin dall'inizio, ma altri preferiscono iniziare a imbrogliare solo quando sono nei guai, e ovviamente useranno la funzione copia FEN / PGN poiché richiede molto tempo per impostare manualmente la posizione.

Dovresti in qualche modo memorizzarlo insieme alla mossa nel momento in cui l'ha copiata, in questo modo puoi confrontare da quel punto con le mosse seguenti e vedere se la sua forza è notevolmente aumentata con l'aiuto dei motori degli scacchi.

Ma è molto importante che tu lo usi solo per aiutarti a decidere se stava imbrogliando, sarebbe ingiusto usare uno script che non utilizza alcun intervento umano, ci possono essere molti falsi positivi, ad esempio, spesso mi piace copiare le posizioni mentre sto giocando per analizzarli in seguito senza la necessità di cercare il mio gioco o trovare la mossa esatta dal PGN. E non lo lascio sempre nei miei appunti perché ho paura di sovrascriverlo, quindi lo sposto nel blocco note (il che significa che cambio Windows subito dopo averlo copiato).


2
Questo sembra indirizzare il punto di vista del "come gestire un server", piuttosto che il "il mio avversario tradisce?" uno (non che l'OP abbia detto nulla su quale caso contasse per lui). Vale la pena menzionarlo, poiché mi ci è voluto un po 'di tempo per capire cosa intendevi, pensandolo dal punto di vista del giocatore. (Buona risposta… una volta capito questo ^ _ ^ ')
Nikana Reklawyks il

1
grazie @ajax. Non ho pensato di salvare la mossa in cui è stata copiata la posizione e di analizzare la differenza tra la forza prima e dopo.
Salvador Dali,

e, naturalmente, i truffatori scopriranno e disabiliteranno tale tracciamento. o fare la propria funzionalità di copia, non è così difficile: codegolf.stackexchange.com/questions/89647/chess-conversion
Sarge Borsch

3

FWIW, nessuno ha menzionato il Dr. Ken Regan per nome, sebbene il puntatore al blog di Lipton descriva un altro articolo su Chess Life che discute del suo lavoro.

Quell'articolo è molto informativo sul lavoro di Regan, sullo stato delle tecniche di rilevazione che erano in vigore nel 2014 e sul lavoro della FIDE nella creazione di un comitato per definire e diffondere standard, strumenti e tecniche per aiutare i TD a eliminare i tradimenti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.