Existem muitos sites online, onde os jogadores podem jogar xadrez em tempo real uns com os outros. A maioria dos jogos tem de 5 a 10 minutos de duração. Com a disponibilidade do software de xadrez, pode-se tirar vantagem usando Fritz ou Rybka para sugerir uma jogada para ele.
Por exemplo, posso inserir cada jogada do meu oponente e ver o que o software irá sugerir para mim .
Eu estava pensando em alguns recursos que podem sugerir que o jogador está trapaceando:
- número de vezes que ele muda a tela
- velocidade de jogar (em posições fáceis e realmente difíceis)
- precisão do jogo
Alguém tem alguma outra ideia?
PS: Tem não importa para mim, de qual perspectiva você está pensando (servidor ou cliente).
Comentários
- Excelente pergunta e problema relevante hoje! Mas você quer dizer detectar trapaça blitz online usando um algoritmo ou detectar apenas como um jogador humano enquanto joga contra um oponente?
- Estratégias de detecção de trapaça só funcionam quando o trapaceiro é ” estúpido “. A adoção de estratégias de trapaça mais inteligentes (veja meu comentário para a resposta do ‘ do NoviceProgrammer) tornaria a trapaça quase impossível de adivinhar.
- Acho que isso é quase uma não é problema. Eu jogo no chess.com. Eu imagino que talvez 1 pessoa em cada 10 realmente trapaceie. E se eu suspeitar que meu oponente recebeu ajuda, eu simplesmente o bloqueio.
Resposta
Esta é na verdade uma questão muito complexa, e não uma que tenha sido resolvida de forma satisfatória, que eu saiba. Essencialmente, estamos pedindo um algoritmo para realizar uma espécie de teste de Turing reverso, para diferenciar entre jogadores humanos e computadores.
Primeiro, as verificações do lado do cliente sempre terão pontos fracos, a menos que você esteja em controle completo do ambiente do cliente. Vamos pegar a primeira ideia – verificar se há alternância entre as janelas, parece bom. Infelizmente, é trivialmente contornado executando um mecanismo de xadrez em um computador separado ou integrando meu mecanismo ao cliente para que nenhuma “troca de janela” ocorra, ou alterando o cliente para relatar 0 alterações na janela, ou … Não há nenhuma maneira real de ter certeza de que é seu código em execução no cliente, realmente.
O que resta são os ambientes de cliente fisicamente controlados (que não vai acontecer para nenhum jogo online), ou verificação do lado do servidor, ou seja, olhar para os movimentos reais que foram jogados (e talvez o tempo entre os movimentos, como você diz) e tentar deduzir o aspecto humano ou do computador .
A verificação do lado do servidor também pode dividir algumas maneiras. Você provavelmente poderia tentar uma abordagem “de cima para baixo”, que seria algo como “dos jogos anteriores na história, apenas 2% dos humanos fizeram esse movimento, enquanto 50% dos computadores o fizeram “. Esta seria realmente uma boa maneira de fazer isso, se tivéssemos dados suficientes para” qualquer posição “. O ritmo do xadrez é tão grande, no entanto, que mesmo conjuntos de dados muito grandes não terão um número significativo de jogos correspondentes à sua posição, uma vez que você passe o meio do jogo.
Supondo que não Se você tiver quaisquer estatísticas confiáveis sobre o lado humano da equação, você ainda pode apresentar a posição a vários motores de xadrez (com várias configurações de tempo diferentes cada) e ver quão próximos os movimentos dos jogadores correspondem aos de um computador. Por si só, isso também levaria a muitos falsos positivos, no entanto, positivos repetidos para o mesmo mecanismo de xadrez e configurações de tempo tornariam cada vez mais provável que o jogador estivesse trapaceando. Para aumentar ainda mais isso, eu provavelmente examinaria uma abordagem “de baixo para cima” para analisar as posições do xadrez; em suma, tentar descobrir por que humanos e computadores funcionam de maneira diferente. Por exemplo. os humanos tendem a reconhecer padrões comuns. Em um jogo com padrões “estranhos” ou situações improváveis, é menos provável que um humano seja capaz de jogar com muita precisão. Nenhum deles, por si só, é particularmente prejudicial, mas dado um grande número de jogos, destacaria tendências para os administradores.
Para adicionar alguns detalhes à sua lista, eu seguiria as linhas de como os professores detectar plagarismo em papéis – detectando uma mudança repentina. No xadrez, isso é extremamente difícil de definir, mas uma mudança repentina no estilo de jogo ou na força do jogo pode indicar trapaça. Especificamente, eu procuraria movimentos atipicamente agressivos que tendem a apenas “funcionar” e não têm nenhuma desvantagem para o jogador (muito preciso). Companheiros forçados em 4+ movimentos de um jogador que normalmente coloca cavalos na borda do tabuleiro , etc (é possível … mas improvável). No entanto, como isso funcionaria exatamente, poderia ocupar um livro inteiro (ou mais).
EDITAR: Houve um artigo sobre trapaça e detecção no xadrez de nível superior recentemente.
Comentários
- humanos vs computadores podem dar falsos positivos na abertura do jogo, é muito fácil memorizar as melhores jogadas
- @ ajax333221 Concordo totalmente. Até certo ponto, algo semelhante pode se aplicar ao final do jogo, onde um humano pode jogar quase perfeitamente, apenas com base em conhecimento prévio. Dito isso, se eu conseguir detectar uma possível trapaça em um jogo, ‘ tenho certeza de que, com informações adicionais e análises sofisticadas, um computador poderia fazer o mesmo. O mate forçado em 4 ou mais movimentos foi um exemplo real de um jogo online recente contra um jogador com pontuação de 1.050 – altamente sugestivo, para dizer o mínimo …
Resposta
No blitz, você pode dizer por quanto tempo eles estão usando. Pessoas que usam motores usam uma quantidade consistente de tempo para cada movimento, em vez de passar pela abertura e desacelerar a um rastreamento no meio do jogo como a maioria dos jogadores normais. Em particular, eles não podem jogar a abertura rápido, porque eles têm que atualizar a placa do computador após cada movimento de abertura. Se eles levarem cinco segundos no movimento dois e cinco segundos no movimento vinte, provavelmente estão usando um motor.
Comentários
- Não tenho certeza se isso era verdade no momento da postagem, mas o stockfish pode aceitar o tempo restante como uma entrada para priorizar o que se move para gastar o tempo.
Resposta
O número de trocas de tela e a velocidade de jogo não fazem sentido. Se você usar isso para reclamar com os organizadores de um site de jogo de xadrez online, eles vão rir de você.
Existem duas maneiras para saber se alguém está trapaceando. A primeira é a “arma fumegante”. Considere esta seção de jogos –
[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
A questão é o que você jogaria nesse A situação é que uma vitória nesta, a última rodada da competição, fará com que você ganhe o torneio antes de uma série de grandes mestres. Nada mal para meros 1900. Suspeito que a maioria de nós jogaria algo razoavelmente sólido que mantém o vitória. Jogadas como Rxb7 ou Rd7 ou (para covardes como eu 😉 Rxf6. Qa7 é um golpe que detém o coração, uma arma fumegante. Fritz é classificado como o melhor movimento na posição, um colossal 0,1 à frente do próximo melhor movimento, Rd7.
Jogo Smoking gun # 2 no final do jogo quando as pretas renunciaram, deixando o jogador classificado de 1900 como o vencedor absoluto do torneio. O que você diria a Kalinitschev nessa posição?
É assim que a conversa foi:
Allwermann: “É companheiro em 8”
Kalinitschev: “Acho que não”
Allwermann: ““ Olha só, você vai descobrir que “estou certo”
Allwermann estava certo, é claro. Você consegue encontrar o companheiro em 8 na posição final? Sem assistência de silicone?
Então, você tem sua arma fumegante e você a leva para os organizadores. O que eles farão?
Bem, então vem a segunda maneira de detectar e provar, sem qualquer dúvida razoável, que há trapaça.
Eles precisarão coletar pelo menos 20 jogos cada um com pelo menos 20 movimentos não relacionados ao banco de dados e alimentá-los em um mecanismo para verificação. Basicamente, o que eles estão procurando é a porcentagem de tempo em que o suspeito escolhe um movimento não pertencente ao banco de dados que corresponda à primeira escolha do motor, uma das 2 primeiras escolhas, uma das 3 primeiras escolhas. Os limites de “prova” são –
Principais 1 65%
Principais 2 80%
Principais 3 90%
Um exemplo recente é o furor com o desempenho de Borislav Ivanov .
Aqui estão suas estatísticas –
Zadar 19: Houdini 1.5a x64 Hash: 256 Tempo: 30s máx. Profundidade: 20ply {Borislav Ivanov (Games: 9)}
{Top 1 Match: 210/314 (66,9%) Adversários: 150/313 (47,9%)
{Top 2 Partida: 270/314 (86,0%) Oponentes: 207/313 (66,1%)
{As 3 principais partidas: 285/314 (90,8%) Oponentes: 238/313 (76,0%)
{Top 4 da partida: 293/314 (93,3%) Oponentes: 267/313 (85,3%)
Na 8ª rodada o feed ao vivo caiu (suspeita-se que isso permitiu sua ajuda externa obter os movimentos) e ele perdeu para o GM Predojevic. Se este resultado for removido, as novas estatísticas são:
Zad ar 19: Houdini 1.5a x64 Hash: 256 Tempo: 30s Profundidade máxima: 20ply {Borislav Ivanov (Jogos:)}
{1 partida mais importante: 197/287 (68,6%) Oponentes: 135/286 ( 47,2%)
{2 principais jogos: 252/287 (87,8%) Oponentes: 188/286 (65,7%)
{3 principais jogos: 265/287 (92,3%) Oponentes: 218/286 (76,2%)
{4 principais partidas: 272/287 (94,8%) Oponentes: 242/286 (84,6%)
Como você pode ver, os dois conjuntos de estatísticas o faria ser jogado de um servidor de xadrez. Para comparação, aqui está a análise para o jogo 8 quando o feed estava inativo:
{Branco: Borislav Ivanov}
{1 partida principal: 13/27 (48,1%)
{2 jogos principais: 18/27 (66,7%)
{3 jogos principais: 20/27 (74,1%)
{4 jogos principais: 22/27 (81,5%)
{Negra: Borki Predojevic}
{1 partida principal: 15/27 (55,6%)
{2 partidas principais: 19 / 27 (70,4%)
{3 partidas mais populares: 20/27 (74,1%)
{4 partidas mais populares: 25/27 (92.6%)
Observe que a FIDE criou uma comissão para investigar maneiras de detectar e combater trapaças no computador. Suas diretrizes estão aqui . Observe esta seção:
E. A Ferramenta de Triagem de Jogos Baseada na Internet da FIDE
A FIDE fornecerá uma Ferramenta de Triagem de Jogos baseada na Internet, que estará acessível a todos os oficiais FIDE autorizados (IO, IA, membros do ACC) e Federações Nacionais. Deve ser hospedado em uma página da Web dedicada à FIDE e permitirá que partes autorizadas façam upload de jogos no formato PGN para um “teste rápido” que identificará potenciais discrepantes em um torneio. Por “triagem” entende-se que isso fornece apenas um teste preliminar sem valor de julgamento, exceto que pode ser citado ao rejeitar alegações e recusar-se a proceder a um teste completo manual.
Comentários
- Ótima análise! Os resultados T3 / T4 são convincentes, especialmente quando a probabilidade de seus resultados é relatada. BTW: Eu sei que sua postagem foi feita há algum tempo, mas por acaso você ainda tem a citação para a conversa entre Kalinitschev e Allwermann? Claramente, nenhum 1900 encontrará um companheiro no 8 de forma confiável, especialmente quando um 2500 não ‘ o vê. Não ‘ não parece particularmente inteligente para ele ter levantado este ponto quando poderia por si causar a suspeita de que ele ‘ s trapaceando.
- BTW: discordo que Qa7! é uma rolha de coração. É ‘ está simplesmente explorando os dois fatos que: 1) Black ‘ s back rank é fraco, e 2) ele ‘ é vulnerável a um companheiro nele. Portanto, qualquer desvio da torre para fora da fileira de trás permitirá táticas potencialmente vencedoras. Nesse caso, as brancas usam o movimento para atacar o peão-b e coordenar sua rainha e torre no sétimo, para que a torre seja defendida. As brancas ganham pelo menos um peão após 1 … Qxf7 2.Dxa8 + Qg8 3.Dxb7. Acho que qualquer GM deveria ter visto o movimento Qa7 e eu ‘ estou muito surpreso que Kalinitschev não o tenha percebido. É ‘ é o movimento mais forte no tabuleiro, depois de Rxf6 ?!
- @jaxter A informação vem de en.chessbase.com/post/a-history-of-cheating-in-che-3- . Observação ” Eu discordo que Qa7! é um impedimento para o coração ” – se você ler o artigo, verá que Vishy Anand discorda de você :-). Do artigo – ‘ Então, o que nosso herói joga? 31.Qa7? !! “Fritzy!” gritou Anand e teve acessos de riso incontroláveis quando viu este e os movimentos seguintes (filmei sua alegria e incluí-o em meu relatório multimídia na ChessBase Magazine 69). ‘
- Obrigado pela referência. Eu entendi seu ponto. Eu certamente estaria disposto a tentar o movimento, mas isso ‘ é em parte porque eu teria julgado que as brancas poderiam sobreviver às pretas ‘ s contra-ataque sem calcular todas as linhas . Se eu tentasse fazer isso a) eu ‘ d me certificaria de cometer um erro fatal, eb) eu ‘ d obteria o heebie-jeebies e escolha um movimento diferente. É ‘ precisamente porque eu uso a intuição de que freqüentemente jogo movimentos estranhos como … Qa7 !. É ‘, sem dúvida, um fator que contribui para o motivo de minha classificação estar abaixo de 2.000 …
- Há ‘ sa diferença entre a jogada superior ser uma jogada sólida que você ‘ esperaria que muitos jogadores encontrassem e uma tática brilhante que você não ‘ t espera que a maioria dos jogadores veja. A ‘ jogada das brancas acima tem vários dos últimos.
Resposta
Para dar minha resposta sobre como abordaria isso, eu usaria uma ideia simples:
- Teste de hipótese nula
A ideia é que haja um número limitado de mecanismos de xadrez disponíveis publicamente, digamos N
deles. Essa suposição, é claro, exclui a possibilidade de que o trapaceiro tenha escrito seu próprio mecanismo de xadrez (ou esteja usando algum mecanismo de xadrez não disponível publicamente), mas para pegar trapaceiros casuais essa deve ser uma suposição forte o suficiente.
A aplicação do Teste de hipótese nula seria muito simples: para cada mecanismo de xadrez X
e para cada subsequência de movimentos do jogo atual calcule a probabilidade p
de observar a subsequência jogada assumindo o hipótese nula de que o jogador não usando o mecanismo de xadrez X
para fazer os movimentos por eles. Uma suposição ingênua pode ser feita de que o jogador se move aleatoriamente (ou escolhe aleatoriamente a partir de um número selecionado de movimentos principais d_i
), então a probabilidade para uma dada subsequência de comprimento k
os movimentos correspondentes que um mecanismo de xadrez X
faria seriam calculados como (d_1)/(n_1) * (d_2)/(n_2) * (d_3)/(n_3) *...* (d_k)/(n_k)
onde d_i
é o número de movimentos possíveis (principais) a serem feitos na ith
curva, conforme classificado pelo motor X
e n_i
é o número total de movimentos disponíveis para o jogador no turno i
(ou algum subconjunto razoável.)
Então, simplesmente calcule
p* = minimum p over all chess engine X, all subsequences y.
Se p*
for menor que um certo limite, rotule o jogador como um trapaceiro, pois existe uma subsequência y
e mecanismo de xadrez X
que traz a probabilidade de que o jogador seja não trapaceando abaixo de uma probabilidade desejada.
Resposta
Acho que a análise pós-jogo oferece a melhor chance de identificar se um jogador estava trapaceando. Isso pode ser feito usando o que é chamado de análise T3 / T4.
Basicamente, mede a frequência com que um jogador escolhe um dos 3 ou 4 movimentos mais sugeridos por um motor. Isso elimina amplamente a necessidade de identificar o mecanismo de destino em uso (já que eles geralmente concordam com os principais 4/5 movimentos, mesmo se a ordem de preferência for diferente).
Há software disponível que irá executar um conjunto de jogos do usuário contra os principais n movimentos do motor. Editar:
Estou ciente do ChessAnalyse que pode ser usado para fazer tal análise. Você pode tentar a versão de teste de 30 dias.
Comentários
- Isso pode ser combatido por um trapaceiro inteligente que tenha algum conhecimento de xadrez da seguinte maneira: jogue movimentos isso simplesmente não torna sua posição pior e espera o erro do seu oponente ‘ que comprometeria sua posição. Se você está jogando blitz de 5 a 15 minutos contra alguém que não tem a força do GM, isso definitivamente acontecerá, mais cedo ou mais tarde. Além disso, se você fizer uma jogada ruim ocasional e / ou não insistir em vencer todos os jogos, eu ‘ tenho certeza de que sua trapaça não será detectada.
- @AndreaMori: concordo que você pode evitar algumas situações, mas conforme a avaliação dele melhorar, ele será obrigado a pesquisar mais e mais e, eventualmente, será detectado.
- Obrigado, você mencionou que existe software disponível. Você pode dar um exemplo?
Resposta
Se seu site dá aos usuários um clique para obter posições FEN ou PGN enquanto o jogo está rodando , você deve considerar rastreá-los.
Alguns trapaceiros trapaceiam desde o início, mas outros preferem apenas começar a trapacear quando estão com problemas, e eles irão obviamente, use o recurso de cópia FEN / PGN, já que é demorado configurar a posição manualmente.
Você deve, de alguma forma, armazenar isso junto com o movimento no momento em que ele copiou, desta forma você pode comparar que aponte para os movimentos a seguir e veja se sua força aumentou muito com a ajuda de motores de xadrez.
Mas é muito importante que você use isso apenas para ajudá-lo a decidir se ele estava trapaceando, seria injusto para usar um script que não usa intervenção humana, pode haver muitos falsos positivos, por exemplo, muitas vezes gosto de copiar posições enquanto estou jogando para analisá-las posteriormente sem a necessidade de procurar pelo meu jogo ou encontrar o O movimento exato do PGN. E eu nem sempre o deixo na minha área de transferência por medo de sobrescrevê-lo, então eu o movo para o bloco de notas (o que significa que eu troco de janela logo após copiá-lo).
Comentários
- Isso parece estar abordando o ” como gerenciar um servidor ” ponto de vista, em vez de o ” meu oponente está trapaceando? ” (não que o OP tenha dito algo sobre qual caso importava para ele). Vale a pena mencionar , pois demorei um pouco para entender o que você quis dizer, pensando no ponto de vista do ‘ do jogador.(Boa resposta … uma vez que isso seja entendido ^ _ ^ ‘)
- obrigado @ajax. Não pensei em salvar o movimento no qual a posição foi copiada e analisar a diferença entre a força antes e depois.
- e é claro que trapaceiros descobrirão e desabilitarão esse rastreamento. ou fazer sua própria funcionalidade de cópia, ‘ não é tão difícil: codegolf.stackexchange.com/questions/89647/chess-conversion
Resposta
FWIW, ninguém mencionou o Dr. Ken Regan pelo nome, embora o apontador para o blog de Lipton descreve outro artigo em Chess Life que discute seu trabalho.
Esse artigo é muito informativo sobre o trabalho de Regan, o estado das técnicas de detecção que estavam em vigor em 2014 e o trabalho da FIDE na criação de um comitê para definir e promulgar padrões, ferramentas e técnicas para auxiliar o DT ” s em erradicar a trapaça.