¿Cómo determinarías que el jugador está haciendo trampa en el ajedrez en línea?

40

Hay muchos sitios web en línea, donde los jugadores pueden jugar ajedrez en tiempo real entre ellos. La mayoría de los juegos duran entre 5 y 10 minutos. Con la disponibilidad del software de ajedrez, uno puede aprovechar el uso de Fritz o Rybka para sugerirle un movimiento.

Por ejemplo, puedo ingresar cada movimiento de mi oponente y ver qué software me sugerirá.

Estaba pensando en algunas características que pueden sugerir que el jugador está haciendo trampa:

  • Número de veces que cambia la pantalla
  • velocidad de juego (en posiciones fáciles y realmente difíciles)
  • precisión del juego

¿Alguien tiene alguna otra idea?

PD: No me importa, desde qué perspectiva está pensando (servidor o cliente).

Salvador Dalí
fuente
¡Excelente pregunta y problema relevante hoy! ¿Pero quieres decir detectar trampas de bombardeo en línea usando un algoritmo o detectar como un jugador humano mientras juegas con un oponente?
Rauan Sagit
Las estrategias de detección de trampas solo funcionan cuando el tramposo es "estúpido". Adoptar estrategias de trampa más inteligentes (ver mi comentario a la respuesta de NoviceProgrammer) haría que la trampa sea casi imposible de adivinar.
Andrea Mori
Creo que esto no es un problema. Yo juego en chess.com. Supongo que tal vez 1 de cada 10 personas realmente engaña. Y si sospecho que mi oponente recibió algo de ayuda, simplemente los bloqueo.
Randy Minder el

Respuestas:

33

Esta es en realidad una pregunta muy compleja, y no una que haya sido resuelta de manera satisfactoria, que yo sepa. Esencialmente, estamos pidiendo un algoritmo para realizar una especie de prueba de Turing inversa, para diferenciar entre jugadores humanos y computadoras.

Primero, las verificaciones del lado del cliente siempre tendrán debilidades, a menos que tenga el control completo del entorno del cliente. Tomemos la primera idea: comprobar si cambia entre ventanas, suena bien. Desafortunadamente, se soluciona trivialmente ejecutando un motor de ajedrez en una computadora separada, o integrando mi motor con el cliente para que no se produzca un "cambio de ventana", o cambiando el cliente para informar 0 cambios en la ventana, o ... No hay forma real de asegurarse de que realmente se trata de su código que se ejecuta en el cliente.

Lo que nos queda es entornos de cliente controlados físicamente (que no sucederá para ningún juego en línea), o verificación del lado del servidor, es decir, mirar los movimientos reales que se jugaron (y tal vez el tiempo entre los movimientos, como dices), y tratando de deducir la computadora o el aspecto humano.

La comprobación del lado del servidor también puede dividirse de dos maneras. Probablemente podría intentar un enfoque "de arriba hacia abajo", que sería algo similar a "de juegos pasados ​​en la historia, solo el 2% de los humanos hizo ese movimiento, mientras que el 50% de las computadoras lo hicieron". En realidad, esta sería una muy buena manera de hacerlo, si tuviéramos suficientes datos para "cualquier posición dada". Sin embargo, el espacio de búsqueda del ajedrez es tan grande que incluso los conjuntos de datos muy grandes no tendrán un número significativo de juegos que coincidan con su posición, una vez que pase la primera mitad del juego.

Suponiendo que no tenemos estadísticas confiables sobre el lado humano de la ecuación, aún podría presentar la posición a varios motores de ajedrez (con una cantidad de configuraciones de tiempo diferentes cada uno) y ver qué tan cerca coinciden los movimientos de los jugadores el de una computadora. Por sí solo, esto también conduciría a muchos falsos positivos, sin embargo, los repetidos positivos para el mismo motor de ajedrez y la configuración del tiempo harían más y más probable que el jugador estuviera haciendo trampa. Para mejorar aún más esto, probablemente buscaría un enfoque "de abajo hacia arriba" para analizar las posiciones de ajedrez; en resumen, tratando de descubrir por qué los humanos y las computadoras juegan de manera diferente. Por ejemplo, los humanos tienden a reconocer patrones comunes. En un juego con patrones "extraños" o situaciones poco probables, sería menos probable que un humano pueda jugar con mucha precisión. Ninguno de esos,

Para agregar algunos detalles a su lista, seguiría la línea de cómo los profesores detectan el plagarismo en los documentos, al detectar un cambio repentino. En ajedrez, esto es extremadamente difícil de definir, pero un cambio repentino en el estilo de juego o la fuerza de juego puede indicar trampa. Específicamente, buscaría movimientos agresivos inusualmente que tienden a "funcionar" y no tienen inconvenientes para el jugador (demasiado precisos). Compañeros forzados en más de 4 movimientos de un jugador que normalmente pone caballeros en el borde del tablero, etc. (es posible ... simplemente no es probable). Sin embargo, cómo funcionaría exactamente esto parece que podría ocupar un libro completo (o más).

EDITAR: Hubo un artículo sobre trampa y detección en el ajedrez de alto nivel recientemente.

Daniel B
fuente
3
los humanos contra las computadoras pueden dar falsos positivos en la apertura del juego, es muy fácil memorizar las mejores jugadas
ajax333221
@ ajax333221 Estoy completamente de acuerdo. Hasta cierto punto, algo similar puede aplicarse al final del juego, donde un humano podría jugarlo casi de manera perfecta, solo en base a conocimientos previos. Dicho esto, si puedo detectar posibles trampas en un juego, estoy seguro de que con información adicional y análisis sofisticado, una computadora podría hacer lo mismo. El compañero forzado en más de 4 movimientos fue un ejemplo real de un juego en línea reciente contra un jugador con una calificación de 1050, muy sugerente, por decir lo menos ...
Daniel B
20

En blitz, puedes saber cuánto tiempo están usando. Las personas que usan motores usan una cantidad constante de tiempo para cada movimiento, en lugar de pasar rápidamente por la apertura y reducir la velocidad para arrastrarse en el medio juego como la mayoría de los jugadores normales. En particular, no pueden jugar la apertura rápidamente, porque tienen que actualizar su tablero de la computadora después de cada movimiento de apertura. Si tardan cinco segundos en el movimiento dos y cinco segundos en el movimiento veinte, probablemente estén usando un motor.

Andrew Latham
fuente
No estoy seguro si esto era cierto en el momento de la publicación, pero pescado seco puede aceptar el tiempo que permanezca como una entrada para priorizar lo que mueve al pasar el tiempo.
OganM
15

El número de cambios de pantalla y la velocidad de juego no tienen sentido. Si los utiliza para quejarse ante los organizadores de un sitio web de ajedrez en línea, se reirán de usted.

Hay dos formas de saber si alguien está haciendo trampa. El primero es la "pistola humeante". Considera esta sección del juego:

Allwermann, Clemens (1900) - Kalinitschev, Sergey (2505) Boeblingen (9), 30.12.1999
1. QA7 Tg8 2. Qxb7 Ae4 3. Cf4 Df5 4. Dd7 De5 5. KH1 g5 6. Nh3 g4 7. NF2 Af5 8. Nxg4 Ae4 9. R7xf6 Axg2 + 10. Kxg2 De4 + 11. KH3

La pregunta es ¿qué jugarías en esa posición? La situación es que una victoria en esta, la última ronda de la competencia, te hará ganar el torneo por delante de una serie de grandes maestros. No está mal para un mero 1900. Sospecho que la mayoría de nosotros jugaríamos algo razonablemente sólido que mantiene la victoria. Se mueve como Rxb7 o Rd7 o (para cobardes como yo ;-) Rxf6. Qa7 es el corazón de un movimiento, una pistola humeante. Fritz califica como el mejor movimiento en la posición, un enorme 0.1 por delante del siguiente mejor movimiento, Rd7.

El juego de la pistola humeante n. ° 2 al final del juego cuando las negras renunciaron, dejando al jugador clasificado en 1900 como el ganador absoluto del torneo. ¿Qué le dirías a Kalinitschev en esa posición?

Así fue la conversación:

Allwermann: "Es compañero en 8"

Kalinitschev: "No lo creo"

Allwermann: "" Compruébalo, verás que tengo razón "

Allwermann tenía razón, por supuesto. ¿Puedes encontrar al compañero en 8 en la posición final? Sin asistencia de silicio?

Entonces, tienes tu pistola humeante y la llevas a los organizadores. ¿Qué harán ellos?

Bueno, entonces viene la segunda forma de detectar y probar más allá de toda duda razonable que está ocurriendo el engaño.

Tendrán que recopilar al menos 20 juegos cada uno con al menos 20 movimientos que no sean de la base de datos y alimentarlos en un motor para su verificación. Básicamente, lo que están buscando es el porcentaje de veces que el sospechoso elige un movimiento que no pertenece a la base de datos que coincide con la primera selección del motor, una de las primeras 2 selecciones, una de las primeras 3 selecciones. Los umbrales de "prueba" son:

Top 1 65%

Top 2 80%

Top 3 90%

Un ejemplo reciente es el furor sobre el desempeño de Borislav Ivanov .

Aquí están sus estadísticas:

Zadar 19th: Houdini 1.5a x64 Hash: 256 Tiempo: 30s Profundidad máxima: 20ply {Borislav Ivanov (Juegos: 9)}

{Top 1 Match: 210/314 (66.9%) Oponentes: 150/313 (47.9%)

{Top 2 Match: 270/314 (86.0%) Oponentes: 207/313 (66.1%)

{Top 3 Match: 285/314 (90.8%) Oponentes: 238/313 (76.0%)

{Top 4 Match: 293/314 (93.3%) Oponentes: 267/313 (85.3%)

En la octava ronda, la transmisión en vivo se redujo (se sospecha que esto permitió que su ayuda externa obtuviera los movimientos) y perdió ante GM Predojevic. Si se elimina este resultado, las nuevas estadísticas son:

Zadar 19th: Houdini 1.5a x64 Hash: 256 Tiempo: 30s Profundidad máxima: 20ply {Borislav Ivanov (Juegos:)}

{Top 1 Match: 197/287 (68.6%) Oponentes: 135/286 (47.2%)

{Top 2 Match: 252/287 (87.8%) Oponentes: 188/286 (65.7%)

{Top 3 Match: 265/287 (92.3%) Oponentes: 218/286 (76.2%)

{Top 4 Match: 272/287 (94.8%) Oponentes: 242/286 (84.6%)

Como puede ver, ambos conjuntos de estadísticas lo echarían de un servidor de ajedrez. A modo de comparación, aquí está el análisis para el juego 8 cuando el feed estaba inactivo:

{Blanco: Borislav Ivanov}

{Top 1: 13/27 (48.1%)

{Top 2 Match: 18/27 (66.7%)

{Top 3 Match: 20/27 (74.1%)

{Top 4 Match: 22/27 (81.5%)

{Negro: Borki Predojevic}

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

{Top 2 Match: 19/27 (70.4%)

{Top 3 Match: 20/27 (74.1%)

{Top 4 Match: 25/27 (92.6%)

Tenga en cuenta que la FIDE ha establecido una comisión para investigar formas de detectar y combatir el engaño informático. Sus pautas están aquí . Tenga en cuenta esta sección:

E. La herramienta de detección de juegos basada en Internet de la FIDE

La FIDE suministrará una herramienta de detección de juegos basada en Internet, a la que podrán acceder todos los funcionarios autorizados de la FIDE (miembros de IO, IA, ACC) y las federaciones nacionales. Se alojará en una página web dedicada a la FIDE y permitirá a las partes autorizadas cargar juegos en formato PGN para una "prueba rápida" que identificará posibles valores atípicos en un torneo. Por "selección" se entiende que esto proporciona solo una prueba preliminar sin valor de juicio, excepto que puede citarse mientras se rechazan las acusaciones y se niega a proceder a una prueba completa manual.

Brian Towers
fuente
1
¡Gran análisis! Los resultados de T3 / T4 son convincentes, especialmente cuando se informa la probabilidad de sus resultados. Por cierto: me doy cuenta de que tu publicación se hizo hace un tiempo, pero ¿todavía tienes la cita para la conversación entre Kalinitschev y Allwermann? Claramente, ningún 1900 va a encontrar un compañero en 8 de manera confiable, especialmente cuando un 2500 no lo ve. No parece particularmente inteligente para él haber planteado este punto cuando por sí solo podría causar la sospecha de que está haciendo trampa.
jaxter
1
Por cierto: no estoy de acuerdo con que Qa7! Es un tapón de corazón. Simplemente está explotando los dos hechos que: 1) el rango de espalda del negro es débil, y 2) es vulnerable a un compañero en él. Por lo tanto, cualquier desviación de la torre fuera del rango posterior permitirá tácticas potencialmente ganadoras. En este caso, las blancas usan el movimiento para atacar al peón b y coordinar su reina y su torre en la séptima para que la torre se defienda. Las blancas ganan al menos un peón después de 1 ... Dxf7 2.Dxa8 + Dg8 3.Dxb7. Creo que cualquier GM debería haber visto el movimiento Qa7, y estoy muy sorprendido de que Kalinitschev se lo haya perdido. ¡Es el movimiento más forzado en el tablero, después de Txf6 ?!
jaxter
1
@jaxter La información proviene de en.chessbase.com/post/a-history-of-cheating-in-che-3- . Tenga en cuenta que "no estoy de acuerdo con que Qa7 sea un paro cardíaco". Si lee el artículo, verá que Vishy Anand no está de acuerdo con usted :-). Del artículo: 'Entonces, ¿qué juega nuestro héroe? 31.Qa7? !! "Fritzy!" Chilló Anand y se echó a reír incontrolablemente cuando vio esto y los siguientes movimientos (filmé su alegría y la incluí en mi informe multimedia en ChessBase Magazine 69). '
Brian Towers
Gracias por la referencia Acepto tu punto. Ciertamente habría estado dispuesto a darle una oportunidad al movimiento, pero eso es en parte porque habría juzgado que las blancas podrían sobrevivir al contraataque de las negras sin calcular todas las líneas . Si intentara hacer eso a) estaría seguro de que cometería un error fatal, yb) obtendría los heebie-jeebies y elegiría un movimiento diferente. Precisamente porque uso la intuición, a menudo juego movimientos extraños como ... ¡Qa7 !. También es indudablemente un factor que contribuye a que mi calificación sea inferior a 2000 ...
jaxter
Hay una diferencia entre el movimiento superior que es un movimiento sólido que esperarías que encontraran muchos jugadores, y una táctica brillante que no esperarías que la mayoría de los jugadores vieran. El juego de arriba de las blancas tiene varias de estas últimas.
CashCow
9

Para dar mi respuesta sobre cómo abordaría esto, usaría una idea simple:

  • Prueba de hipótesis nula

La idea es que hay un número limitado de motores de ajedrez disponibles al público, digamos Nde ellos. Esta suposición, por supuesto, excluye la posibilidad de que el tramposo haya escrito su propio motor de ajedrez (o esté utilizando algún motor de ajedrez que no esté disponible públicamente), pero para atrapar tramposos casuales esto debería ser una suposición lo suficientemente fuerte.

La aplicación de la Prueba de hipótesis nula sería muy simple: para cada motor de ajedrez Xy para cada subsecuencia de movimientos del juego actual, calcule la probabilidad pde observar la subsecuencia jugada asumiendo la hipótesis nula de que el jugador no está utilizando el motor de ajedrez Xpara realizar los movimientos. para ellos. Se podría hacer una suposición ingenua de que el jugador se mueve al azar (o elige al azar de un número seleccionado de movimientos superiores d_i), entonces la probabilidad de una subsecuencia dada de kmovimientos de coincidencia de longitud Xque haría un motor de ajedrez se calcularía como (d_1)/(n_1) * (d_2)/(n_2) * (d_3)/(n_3) *...* (d_k)/(n_k)dónde d_iestá el número de posibles movimientos (superiores) para hacer en elithturno, según la clasificación del motor Xy n_ies el número total de movimientos disponibles para el jugador en el turno i(o algún subconjunto razonable).

Entonces simplemente calcule

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

Si p*es menor que un cierto umbral, etiqueta al jugador como tramposo, ya que existe una subsecuencia yy un motor de ajedrez Xque aumenta la probabilidad de que el jugador no esté haciendo trampa por debajo de la probabilidad deseada.

ldog
fuente
8

Creo que el análisis posterior al juego te da la mejor oportunidad de identificar si un jugador estaba haciendo trampa. Esto se puede hacer usando lo que se llama el análisis T3 / T4.

Básicamente, esto mide la frecuencia con la que un jugador elige uno de los 3 mejores o 4 mejores movimientos sugeridos por un motor. Esto elimina en gran medida la necesidad de identificar el motor de destino en uso (ya que generalmente acordarán los 4/5 movimientos principales, incluso si el orden de preferencia es diferente).

Hay software disponible que ejecutará un conjunto de juegos del usuario contra los principales movimientos del motor. Editar:

Soy consciente de ChessAnalyse que se puede utilizar para hacer dicho análisis. Puedes probar la versión de prueba de 30 días.

sidprasher
fuente
2
Esto puede ser contrarrestado por un tramposo inteligente que tiene algunos conocimientos de ajedrez de la siguiente manera: jugar movimientos que simplemente no empeoran su posición y esperar el error de su oponente que comprometería su posición. Si estás jugando bombardeo de 5 a 15 minutos contra alguien que no tiene fuerza GM, esto definitivamente sucederá, tarde o temprano. Si además haces un mal movimiento ocasional y / o no insistes en ganar cada juego, estoy seguro de que tu trampa no se detectará.
Andrea Mori
@AndreaMori: estoy de acuerdo en que puede evitar algunas situaciones, pero a medida que mejore su calificación, se verá obligado a buscar más y más y eventualmente será detectado.
sidprasher
Gracias, ha mencionado que hay software disponible. ¿Puede dar un ejemplo?
Salvador Dali
6

Si su sitio le da a los usuarios un clic para obtener posiciones FEN o PGN mientras el juego se está ejecutando , debería considerar rastrearlos.

Algunos tramposos hacen trampa desde el principio, pero otros prefieren comenzar a hacer trampa solo cuando están en problemas, y obviamente usarán la función de copia FEN / PGN, ya que lleva mucho tiempo configurar la posición manualmente.

De alguna manera deberías almacenar eso junto con el movimiento en el momento en que lo copió, de esta manera puedes comparar desde ese punto con los siguientes movimientos y ver si su fuerza aumentó enormemente con la ayuda de los motores de ajedrez.

Pero es muy importante que lo use solo para ayudarlo a decidir si estaba haciendo trampa, sería injusto usar un guión que no use intervención humana, puede haber muchos falsos positivos, por ejemplo, a menudo me gusta copiar posiciones mientras juego para luego analizarlos sin la necesidad de buscar mi juego o encontrar el movimiento exacto de la PGN. Y no siempre lo dejo en mi portapapeles porque temo sobrescribirlo, así que lo muevo al bloc de notas (lo que significa que cambio las ventanas justo después de copiarlo).

ajax333221
fuente
2
Esto parece estar abordando el punto de vista de "cómo administrar un servidor", en lugar de "¿está haciendo trampa mi oponente?" uno (no es que el OP dijera nada sobre qué caso le importaba). Vale la pena mencionarlo, ya que me tomó un poco de tiempo entender lo que querías decir, pensando en el punto de vista del jugador. (Buena respuesta ... una vez que esto se entiende ^ _ ^ ')
Nikana Reklawyks
1
gracias @ajax. No he pensado en guardar el movimiento en el que se copió la posición y analizar la diferencia entre la fuerza antes y después.
Salvador Dali
y, por supuesto, los tramposos descubrirán y desactivarán ese seguimiento o hacer su propia funcionalidad de copia, no es tan difícil: codegolf.stackexchange.com/questions/89647/chess-conversion
Sarge Borsch
3

FWIW, nadie ha mencionado al Dr. Ken Regan por su nombre, aunque el puntero al blog de Lipton describe otro artículo en Chess Life que analiza su trabajo.

Ese artículo es muy informativo sobre el trabajo de Regan, el estado de las técnicas de detección que estaban vigentes en 2014 y el trabajo de la FIDE en la creación de un comité para definir y promulgar estándares, herramientas y técnicas para ayudar a los TD a eliminar las trampas.

jaxter
fuente