Antecedentes:
Por lo que la escuela que trabajo tiene una política que tratamos de sentar a los niños junto a tantos otros niños como sea posible durante todo el año académico. Esto significa rejigging el plano de asientos tan a menudo como usted puede ser molestado.
Con un decentish comprensión de VBA, pensé que había que escribir una macro para encargarse de esto para mí, pero me he topado con un inconveniente.
El algoritmo básico es la reorganización de la lista, a continuación, transcribimos que para un plano de asientos en forma predeterminada. La esperanza es la reorganización de la lista de tal manera que no hay dos estudiantes que están al lado de los que fueron antes.
Pero mi problema es que no hay manera sencilla de caracterizar estos baraja.
Matemáticas
Así que supongamos que tenemos una lista ordenada de n elementos (posiblemente será más fácil considerar como lista cíclica, de modo que n es adyacente a 1), ¿cómo se puede generar de forma fiable el número máximo de reorderings de la lista en la que no hay dos reorderings compartir pares adyacentes?
Una clara estrategia podría ser un paseo aleatorio en $S_n$, pero sin saber el número máximo esta lista podría continuar eternamente buscando un reordenamiento que no estaba allí. De manera natural a una pregunta complementaria es: ¿cuál es el número máximo de tales reorderings?
En su defecto, lo que es una manera confiable de decisiones (posiblemente el óptimo número de 'mezcla' reorderings?
Hasta ahora he experimentado con Faro baraja (que no garantizan la mezcla en virtud de su composición), grupos de invertible elementos en $\mathbb{Z}_n^\times$ (grupo multiplicativo de los números enteros modulo n - que parecen muy escasas en sólo ofreciendo $ \phi(n)$/2 reorderings), y han jugado con algunos paseo aleatorio código, todo fue en vano.
Estoy seguro de que esto es sólo un reflejo de mi ignorancia de combinatoria - que la respuesta va a llegar a ser una fracción con un par de factoriales, o que es un famoso problema o alguna de esas. Pero estoy perplejo.
Cualquier ayuda que usted podría dar sería ace. Gracias!