3 votos

Generación de distribuciones aleatorias con restricciones

Estoy intentando ayudar a otro usuario de StackExchange. Estamos tratando de llenar una matriz de 6x6 con 12 A 's, 12 B y 12 C con la condición de que cada fila contenga 2 A , 2 B y 2 C y cada columna contiene también 2 A s, 2 B s, y 2 C s.

Nos gustaría hacerlo de forma aleatoria. Se me ocurrió una distribución con bastante facilidad:

enter image description here

Al examinar esto, se me ocurrió que podía intercambiar las dos primeras columnas y el resultado seguiría cumpliendo la restricción. De hecho, podría intercambiar dos columnas cualesquiera elegidas al azar y cumplir la restricción.

Lo mismo ocurre con las filas. (Supongo que esto es similar a los Cuadrados Mágicos).

Mi pregunta es: ¿Puedo obtener alguna solución realizando un conjunto de estos intercambios. Es decir, ¿hay soluciones que cumplan las restricciones que no se puedan alcanzar realizando intercambios de filas y columnas?

Si considera que no es una pregunta válida sobre matemáticas, la borraré. Si he etiquetado mal esta pregunta, por favor, hágamelo saber.

1voto

CosmoVibe Puntos 692

En primer lugar, la razón por la que el intercambio de filas y columnas sigue manteniendo la condición que deseamos es porque la condición no se preocupa por donde las letras, sólo el número de apariciones de cada letra. Intercambiar filas y columnas claramente no cambia eso, así que cualquier intercambio de filas o columnas está bien.

Sin embargo, no importa cómo cambie las filas y las columnas, todas las filas y columnas van a ser del mismo "grupo de rotación". Lo que quiero decir con esto es lo siguiente: Si giras las letras de cualquier fila y obtienes una fila diferente, esas dos filas forman parte del mismo grupo de rotaciones. Así que ABCABC se puede girar para obtener BCABCA et CABCAB .

Reescribamos esta matriz utilizando 11 , 22 y 33 para demostrarlo. De izquierda a derecha, tenemos la matriz original, las rotaciones de fila y las rotaciones de columna. A B C A B C         1 2 3 1 2 3         1 1 1 1 1 1A B C A B C         1 2 3 1 2 3         1 1 1 1 1 1B C A B C A         1 2 3 1 2 3         2 2 2 2 2 2B C A B C A         1 2 3 1 2 3         2 2 2 2 2 2C A B C A B         1 2 3 1 2 3         3 3 3 3 3 3C A B C A B         1 2 3 1 2 3         3 3 3 3 3 3

No importa cómo cambies las filas y columnas, las rotaciones van a ser las mismas en todas las filas/columnas: C B A C A B         1 2 3 1 3 2         1 1 1 1 1 1B A C B C A         1 2 3 1 3 2         2 2 2 2 2 2B A C B C A         1 2 3 1 3 2         2 2 2 2 2 2C B A C A B         1 2 3 1 3 2         1 1 1 1 1 1A C B A B C         1 2 3 1 3 2         3 3 3 3 3 3A C B A B C         1 2 3 1 3 2         3 3 3 3 3 3


Bonificación: El número de formas en que podemos ordenar una misma fila es: 6!2!2!2!=90 Por lo tanto, el número de rotaciones es 903!=15 . Lo son: 1 1 2 2 3 31 1 2 3 2 31 1 2 3 3 21 2 1 2 3 31 2 1 3 2 31 2 1 3 3 21 2 2 1 3 31 2 3 1 2 31 2 3 1 3 21 2 2 3 1 31 2 3 2 1 31 2 3 3 1 21 2 2 3 3 11 2 3 2 3 11 2 3 3 2 1

Así que a partir de su matriz de partida, podemos llegar a 1523!3!=8100 matrices diferentes del método de intercambio.


Que la conmutación cubra o no todos los casos depende de si podemos construir una matriz tal que las rotaciones NO sean completamente iguales en todas las filas y columnas, y esto sí es posible:

A B C B C AA B C C B AB A B A C CB A B C A CC C A B A BC C A A B B

Así que ahora cabe preguntarse cómo podemos llegar a estos otros casos mediante conceptos de rotación similares. Vamos a empezar con su matriz inicial:

A B C A B CA B C A B CB C A B C AB C A B C AC A B C A BC A B C A B

Intercambiemos elementos individuales.

A B C A B CA B C B A CB C A B C AB C A B C AC A B C A BC A B C A B

Lamentablemente, ahora el número de letras de cada columna está desactivado. Tendremos que ajustarlo de nuevo para solucionarlo.

A B C A B CA B C B A CB C A A C BB C A B C AC A B C B AC A B C A B

Este tipo de intercambio puede definirse del siguiente modo:

  • Elige dos casillas cualesquiera de la misma fila o columna de letras diferentes. Digamos que son P et Q y digamos que son la misma fila (si quieres intercambiar columnas en su lugar, simplemente intercambia todas las instancias de "fila" y "columna"), y llama a esa fila R1 .
  • Busque otra fila en la que P está en la misma columna que Q de R1 Llama a esta fila R2 .
  • Encontrar una fila que no sea R1 ni R2 donde P está en la misma columna que Q de R2 y Q está en la misma columna que P de R1 .
  • Intercambia todos los P et Q descritos en pasos anteriores en estas tres filas.

Este movimiento cambia los grupos de rotación de las filas y columnas, y además del intercambio fila/columna, debería ayudarte a obtener todas las disposiciones posibles (aún no lo he probado rigurosamente, pero en teoría debería funcionar).

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