Sistema de puntuación de torneos no organizados 1 contra 1

Supongamos que quiero organizar un torneo de juegos con juegos 1 contra 1 (piense en el ajedrez) que (para simplificar) solo gane o pierda como resultado y necesito una forma de clasificar a los jugadores. Hablando formalmente, quiero una función que tome una lista de (jugador1, jugador2, quién_ganó) triples y devuelva una clasificación de jugadores, por ejemplo, atribuyéndoles a cada uno de ellos un número (lista de (jugador, puntaje) ).

Debido a que el torneo será informal y desorganizado, no puedo influir de ninguna manera en quién juega contra quién y cuándo. El sistema de puntuación que estoy buscando debe tener estas propiedades:

  • El orden de los juegos no debería importar.
  • Si dos (o más) jugadores siguen jugando uno contra el otro una y otra vez, con las mismas probabilidades de ganar, los puntajes no deberían cambiar (o no cambiar mucho, por ejemplo, converger).

Si es necesario, los nuevos juegos pueden afectar las puntuaciones de todas las personas y los cálculos pueden necesitar una computadora.

¿Qué sistemas de puntuación cumplen esto?

¿Cuántos juegos esperas tener en el "torneo"? Parece que solo necesita una clasificación ELO básica, pero no creo que vaya a funcionar tan bien en una muestra tan pequeña.
El evento que tengo en mente probablemente anotará de una docena a cien jugadores.
Después de leer sobre ELO, no creo que cumpla con ninguna de mis dos propiedades deseadas.
¿Se llevó a cabo el torneo? ¿Qué sistema terminaste usando?
Esto suena como una especie de gráfico casi topológico . Construya un gráfico dirigido con un nodo por jugador y un arco de A a B con peso positivo ab si A y B han jugado juntos a+b veces, con A ganando a veces y B ganando b veces, y a > b. Luego resuelva el problema del conjunto de arcos de retroalimentación para este gráfico dirigido ponderado.
En ese entonces escribí un pequeño programa que simplemente visualiza el DAG de victorias, sin necesariamente crear un pedido total: < github.com/nomeata/DAG-Tournament >

Respuestas (2)

Pruebe esto , es un sistema llamado Calificación de Historial Completo. Del resumen:

Whole-History Rating (WHR) es un nuevo método para estimar las fortalezas variables en el tiempo de los jugadores involucrados en comparaciones pareadas. Al igual que muchas variaciones del sistema de calificación Elo, el enfoque de historia completa se basa en el modelo dinámico de Bradley-Terry. Pero, en lugar de usar aproximaciones incrementales, WHR calcula directamente el máximo exacto a posteriori sobre todo el historial de calificación de todos los jugadores. Esta precisión adicional tiene un costo computacional más alto que los métodos tradicionales, pero el cómputo sigue siendo lo suficientemente rápido como para aplicarse fácilmente en tiempo real a servidores de juegos a gran escala (se agrega un nuevo juego en menos de 0,001 segundos). Los experimentos demuestran que, en comparación con Elo, Glicko, TrueSkill y los algoritmos de historial deteriorado, WHR produce mejores predicciones.

Ha sido utilizado con bastante éxito por un juego que juego llamado Arimaa . Para una puntuación de torneo, en lugar de una clasificación de habilidad del jugador, probablemente querrá tratar todos los juegos como si se jugaran simultáneamente, en lugar de permitir que la proporción fluctúe con el tiempo.

Si lo que busca es el código fuente, puede encontrar útil esta implementación pura de Ruby . Puede admitir cualquier juego de dos jugadores, siempre que el resultado sea una simple victoria/derrota.

Ese enlace se informa como muy inseguro; ¿Sabes por qué?
@PieterGeerkens Ni idea, ninguno de mis navegadores me da ese mensaje. ¿Alguien más puede corroborar?
@Pieter Geerkens - El enlace me parece bien. Es una página web académica estándar muy simple que ni siquiera usa Javascript.

ELO

ELO es el sistema de clasificación más simple , pero no cumple con sus requisitos ya que el orden de los juegos sí importa . en ELO, cada jugador tiene una calificación de condición física que se actualiza después de cada juego. Ganar a un jugador con una calificación más alta que la tuya aumenta en gran medida tu calificación, ganar a un jugador con una calificación más baja que la tuya aumenta ligeramente tu calificación.

ver Comprender el sistema de calificación Elo

No estoy seguro de que realmente lo haga, con ELO el puntaje depende del orden de los juegos jugados (ver también < stackoverflow.com/questions/23942349/… )
@JoachimBreitner, tienes razón, mi error, olvidó que quieres que el orden de los juegos no importe.