¿Cómo determinar eficientemente si una escalera dada es válida?

28

En mi club de squash local, hay una escalera que funciona de la siguiente manera.

  1. Al comienzo de la temporada, construimos una tabla con el nombre de cada miembro del club en una línea separada.
  2. Luego escribimos el número de juegos ganados y el número de juegos jugados al lado de cada nombre (en la forma: jugador gana / juegos).

Así, al comienzo de la temporada, la tabla se ve así:

Carol 0/0
Billy 0/0
Alice 0/0
Daffyd 0/0

Cualquiera de los dos jugadores puede jugar un partido, con un jugador ganador. Si gana el jugador más cercano al final de la mesa, se cambia la posición de los jugadores. Luego repetimos el paso 2., actualizando el número de victorias y juegos al lado de cada jugador. Por ejemplo, si Alice vence a Billy, tenemos

Carol 0/0
Alice 1/1
Billy 0/1
Daffyd 0/0

Estos partidos continúan durante toda la temporada y eventualmente dan como resultado que los jugadores sean listados en un orden aproximado de fuerza.

Desafortunadamente, la actualización ocurre de una manera bastante casual, por lo que se cometen errores. A continuación se muestran algunos ejemplos de tablas no válidas, es decir, tablas que no se pudieron producir siguiendo correctamente los pasos anteriores para un orden de inicio (hemos olvidado el orden que usamos al comienzo de la temporada) y la secuencia de partidos y resultados:

Alice 0/1
Billy 1/1
Carol 0/1
Daffyd 0/0

Alice 2/3
Billy 0/1
Carol 0/0
Daffyd 0/0

Alice 1/1
Billy 0/2
Carol 2/2
Daffyd 0/1

Dada una tabla, ¿cómo podemos determinar eficientemente si es válida? Podríamos comenzar señalando lo siguiente:

  1. El orden de los nombres no importa, ya que hemos olvidado el orden inicial original.

  2. El número total de victorias debe ser la mitad de la suma del número de juegos jugados. (Esto muestra que el primer ejemplo anterior no es válido).

  3. Supongamos que la tabla es válida. Luego hay un multigrafo , un gráfico que admite múltiples aristas pero sin bucles, con cada vértice correspondiente a un jugador y cada arista a un partido jugado. Entonces, el número total de juegos jugados por cada jugador corresponde al grado del vértice del jugador en el multigrafo. Entonces, si no hay un multigrafo con los grados de vértice apropiados, entonces la tabla debe ser inválida. Por ejemplo, no hay un multigrafo con un vértice de grado uno y uno de grado tres, por lo que el segundo ejemplo no es válido. [Podemos verificar eficientemente la existencia de tal multigraph.]

Por lo tanto, tenemos dos comprobaciones que podemos aplicar para comenzar, pero esto todavía permite tablas no válidas, como el tercer ejemplo. Para ver que esta tabla no es válida, podemos trabajar hacia atrás, agotando todas las formas posibles en que la tabla podría haber surgido.

Me preguntaba si alguien puede pensar en un algoritmo de tiempo polinómico (en el número de jugadores y el número de juegos) para resolver este problema de decisión.

Ben
fuente
2
Quizás haya un teorema de tipo Havel Hakimi para multigrafos dirigidos ...
Aryabhata
¿Por qué no puede ser posible el tercer ejemplo? ¿Qué pasa si Alice se ganó a Bob, Carol se ganó a Bob y Carol se ganó a Daffyd? ¿Entonces Alice ganó 1 de 1 juegos, Bob ganó 0 de 2 juegos, Carol ganó 2 de 2 juegos y Daffyd ganó 0 de 1 juegos?
utdiscant
utdiscant: después de cada juego, si el jugador inferior gana, los jugadores cambian. Para mostrar que el tercer ejemplo es posible, necesitaría dar una configuración inicial y una secuencia de juegos, es decir, con un orden, que da como resultado la tabla dada.
Ben
aryabhata: Gracias, sí, ese sería un paso útil. Desafortunadamente, suena bastante difícil ...
Ben
1
Una sugerencia para estudiar / resolver esto. especificarlo como un problema SAT. luego intente muchos casos aleatorios. ver si alguno es difícil para un solucionador estándar. si no, tal vez es un subconjunto restringido en P.
vzn

Respuestas:

1

Esta no es una respuesta completa. Doy una declaración más simple del problema y algunas observaciones.

Comenzamos con un gráfico donde los vértices están etiquetados con .[norte]

vtulunasimil(v)<lunasimil(tu)

solnortemi

nortePAGSsol

Observación

lunasimil(v)vv

Creo que debería ser posible combinar esta observación con Havel-Hakimi para obtener un algoritmo de tiempo polinómico.

Kaveh
fuente
Hola. Gracias. ¿Le importaría expresar su observación nuevamente en el contexto de las escaleras? Creo que hay un contraejemplo para un gráfico de orden 3, pero tal vez lo he leído mal.
Ben
@Ben, creo que sería lo siguiente: puedes suponer que la última persona en la escalera jugó todos los juegos que ganó al comienzo del torneo y jugó todos los juegos que perdió al final del torneo . Avíseme si hay un contraejemplo para esto, no lo he comprobado cuidadosamente.
Kaveh
Desafortunadamente, hay escaleras como esta: A 2/2 B 0/1 C 0/1
Ben
@Ben, creo que el ejemplo es consistente con lo que escribí, es decir, no es un contraejemplo de la observación.
Kaveh
La escalera es válida. Supongamos que el último juego jugado fue una pérdida para C. Luego, antes del último juego, la escalera debe haberse visto así: C 0/0 B 0/1 A 1/1, pero esta escalera no es válida. Por lo tanto, no podemos suponer que el último juego fue una pérdida para C.
Ben
0

No he resuelto el problema, pero tengo resultados parciales, cuyas declaraciones se dan a continuación. Escribiré las pruebas si alguien está interesado.

Proposición . Suponga que la escalera (1) contiene más de un jugador (2) contiene el mismo número de victorias y derrotas; y (3) es tal que cada jugador ha ganado al menos un juego y ha perdido al menos un juego. Entonces la escalera es válida.

WyoyoLyoyoRyo

Lyo=0 0

Wyok:Rk>Ryo,Wk>0 0(Lk-1)++k:Rk<RyoLk,
LyoWyo=0 0
Ben
fuente