¿Algoritmo qué defina permutación giratoria aritmetica perfectamente cuadrada de 21 personas para 21 sitios?

Quisiera averiguar el algoritmo para cuadrar 21 personas en 21sitios, de manera que cada día cada persona tenga un sitio distinto, y todo el mundo este en todos los sitios, repitiendo lo menos posible.

2 respuestas

Respuesta
2

La pregunta no esta muy clara pero la forma de agrupar n personas o elementos en una mesa circular es (n-1)!. Por ejemplo para tres personas es 2!=2.

Seria 123 y 132 en forma circular se entiende.

Bien, voy a concretar mas. Necesito organizar una cocina una vez terminamos. Entonces necesito poner 21 personas haciendo 21 tareas distintas, (el motivo es porque cada tarea lleva tiempos distintos de elaboracion y en cuanto se terminan uno se puede ir a casa). La intencion es que cada persona repita lo menos posible su tarea, esté en todas ellas, y se terminen juntando con todos los compañeros posible. 3 fotografia es el esquema de los lugares de la cocina y el numero se corresponde con la persona. Muchas gracias. Espero que las fotografias ayuden a que comprendas lo que digo. Gracias.

Y al margen de las matemáticas y te voy poner el ejemplo con 3 personas que le llamaríamos p1 p2 p3. Tenemos 3 puestos que serian las posiciones. Entonces.

P1P2P3 significa que la persona 1 esta en el puesto1, la persona 2 esta en el puesto 2 y la persona 3 esta en el piesto3.

Ahora mueves las personas un lugar a la derecha y quedaría P3P1P2 ahora la P3 esta en puesto 1 la P1 esta en puesto 2 y la P2 esta en puesto 3.

Lo que haces cada día es mover a todo dios un lugar a la derecha

¿Me explico?

¡Gracias! 

Sigue habiendo un problema, si aplicamos dicho metodo, siempre estara junta la misma gente en las tareas. Me gustaria que se repitiera lo menos posible.

Bueno realmente no siempre porque tienes 7 zonas. Cuando una persona pase de 3 a 4 ya cambia de compañeros porque cambia de zona. De todas formas voy pensarlo un poco más. A ver que se me ocurre. Es un problema interesante porque el algoritmo lo tiene que inventar uno mismo de acuerdo a sus necesidades. Lo pienso un poco más

Respuesta

Creo que deberías pensarlo de manera recursiva. Suponiendo n posiciones, entonces la idea es dejar fija la posición "1" y mover de la 2 a la "n", luego mueves la 2 a la posición 1 y cambias el resto, luego la 3, etc hasta llegar a "n". Si fueran 3 posiciones serían

"1" Fijo: 123 - 132

"2": 213 - 231

"3": 312 - 321

Por lo que para 3 posiciones, en realidad hay 6 posibilidades

Veamos para n = 4

"1": 1234 - 1243 - 1324 - 1342 - 1423 - 1432

"2": 2134 - 2143 - 2314 - 2341 - 2413 - 2431

"3": 3124 - 3142 - 3214 - 3241 - 3412 - 3421

"4": 4123 - 4132 - 4213 - 4231 - 4312 - 4312

Para 4 posiciones hay 24 posibilidades, ahora vamos a o confirmar para 1 y 2 posiciones, pero creo que ya vas viendo cuantas son las posibilidades

Para n= 1

"1": 1 como era obvio, una sola posibilidad

Para n= 2

"1": 12

"2": 21

Creo que también era obvio, en resumen tenemos

n=1....posibilidades = 1

n=2....posibilidades = 2

n=3....posibilidades = 6

n=4....posibilidades = 24

Creo que ya haz podido deducir, que las posibilidades son n!, por lo que para tu ejercicio tendrás 21! Posibilidades que es aprox 5.1x 10^16

Creo que si no lo resuelves con un algoritmo es inmanejable hacer esto 'a mano'

Salu2

Yo no quiero saber el numero de combinaciones posibles, si no el "patron" de orden que debo seguir para que repitan lo menos posible tanto de sitio como de compañero. Me interesa saber ese algoritmo del que hablas.

Es que el algoritmo va a depender del lenguaje de programación utilizado. ¿O simplemente quieres un pseudocódigo?

Salu2

El algoritmo es para excel... cuanta más información puedas darme mejor. Gracias :)

Ok, dejame que arme algo, porque ahora estoy medio justo de tiempo igualmente, volviendo a la complejidad del algoritmo, creo que para 21 puestos no lo vas a poder arreglar con XLS (incluso dudo con otros software) y te digo por que:

Ya vimos que la cantidad de variaciones es: 5.11 x 10^19 (antes había escrito otra cosa, pero revisé las cuentas y este número está más ajustado)

Cantidad de celdas en una hoja XLS: 1.72 x 10^10 (primer problema, lo que quieres calcular no puedes almacenarlo)

Además supongamos que vas escribiendo de a 1 millón de celdas por segundo (te aseguro que este número es muy alto para resolver en XLS), entonces para escribir todas las posibilidades vas a necesitar 5.11 x 10^13 seg = 1.42 x 10^10 días o sea casi 4 millones de años...

Como te decía, luego voy a ver el tema del algoritmo, pero creo que tenés que buscar otras alternativas...

Salu2

Por lo pronto te dejo una página con un código para XLS, tal vez lo puedas adaptar, sino luego veo de adaptarlo yo, pero no te aseguro que sea hoy.

PERMUTACIONES

Salu2

Muchísimas gracias por la información. Lo tendré muy en cuenta.

Excelente!

Avisame si necesitás que te modifique el código (aunque como te dije antes, no lo vas a poder usar para los 21 puestos de trabajo) o te arreglás con ese código que te pasé (si es así, te pido finalizar la pregunta).

Salu2

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas