1 votos

¿Cómo dividir una lista en listas más pequeñas para que las probabilidades de que un elemento se encuentre con otro se distribuyan uniformemente?

Estoy luchando con un algoritmo para dividir un grupo de concursantes en grupos más pequeños para hacer rondas. Tomemos por ejemplo un grupo de $20$ personas, que quiero dividir en $3$ grupos $(7,7,6).$ En cada ronda del concurso, los grupos son diferentes, de modo que todos tienen que combatir a todos los demás en una distribución bastante justa.

El problema es que con una selección aleatoria (ingenua) una persona tiene que combatir más a la misma persona que otra. Es decir, dos elementos acaban a menudo en el mismo grupo.

Me gustaría hacer esto más justo para que para un número dado de concursantes, tamaño de grupo (no todos los grupos son del mismo tamaño) y número de rondas, el algoritmo encuentre un conjunto justo de grupos por ronda para que en promedio cada concursante tenga las mismas probabilidades de encontrarse con el mismo concursante durante las rondas.

¿Existe alguna literatura sobre este tema que pueda consultar? ¿O algún algoritmo conocido?

1 votos

Esto parece un ejercicio de teoría numérica o combinatoria más que de probabilidad o aleatoriedad. Sólo utilizarías la probabilidad si tus restricciones no determinaran completamente cuál es la solución.

0 votos

¿Cuántas rondas hay? ¿Compiten los tres grupos entre sí, o compiten las personas entre sí dentro de los grupos?

0 votos

La cantidad de rondas varía de 6 a digamos 20. Depende del número de participantes y de la duración del concurso. Normalmente, una ronda dura 15 minutos por grupo. Si un concurso dura 6 horas, podemos tener 4 grupos y 6 rondas. Los grupos de entre 7 y 10 personas están bien. Los participantes compiten entre sí.

2voto

Robert Claypool Puntos 136

Está claro que el equilibrio perfecto no es alcanzable en todos los casos: supongamos que se hacen cuatro rondas para cuatro personas en dos grupos, entonces todo el mundo tiene que jugar con un oponente al menos dos veces y con otro como máximo una vez. Así que ahora podemos discutir qué es exactamente un objetivo alcanzable.

Considere para cada par de personas el número de rondas en las que están en el mismo grupo (es decir, el número de veces que juegan entre sí). Queremos que este conjunto múltiple $S$ de los números para que se componga de números cercanos entre sí. Podríamos, por ejemplo, tratar de tener $\max S - \min S \leq 1$ (es decir, si $A$ juega $B$ $n$ veces, entonces $C$ juega $D$ como máximo $n + 1$ y al menos $n - 1$ veces). (Advertencia: en este momento no tengo claro que esto sea siempre posible). O podríamos intentar que la varianza del $S$ sea mínimo. Por último, podríamos intentar minimizar la varianza con la condición min / max.

Si los grupos fueran del mismo tamaño, entonces podría utilizar diseños de bloques para lograr un equilibrio perfecto (donde $S$ es constante) para algunos conjuntos de parámetros. Por lo demás, sin embargo, creo que no hay ninguna teoría que dé una solución exacta a este problema. Es muy posible que la forma más práctica de resolverlo sea utilizando un meta-heurística como Recocido simulado o Búsqueda Tabu .

0 votos

Esta respuesta me indicó la dirección correcta en la búsqueda de algoritmos. Siendo un ingeniero (clásico), soy más pragmático que teórico... así que voy a hacer una aproximación utilizando la selección aleatoria y un filtro en el conjunto de resultados.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X