Me impresionó bastante la elegancia en la respuesta de @whuber. Para ser sincero, tuve que familiarizarme mucho con los nuevos conceptos para seguir los pasos de su solución. Después de pasar mucho tiempo en ello, decidí publicar lo que obtuve. Entonces, lo que sigue es una nota exegética a su respuesta ya aceptada. De esta manera, no hay ningún intento de originalidad, y mi único objetivo es proporcionar algunos puntos de anclaje adicionales para seguir algunos de los pasos involucrados.
Así que aquí va ...
1. ¿Por qué ? 2nBueno, este puede ser demasiado básico: necesitamos un número par de personas para jugar.
2. ¿Podemos derivar la fórmula para los trastornos?
Siguiendo la entrada de Wikipedia con el ejemplo basado en la coincidencia de personas y sombreros , sombreros para ser precisos, tenemos que las opciones para la primera persona que recoge un sombrero se muestran aquí de la siguiente manera:n
d(n)=(n−1)[d(n−2)+d(n−1)]=
=nd(n−2)−d(n−2)+nd(n−1)−d(n−1) , que se puede reorganizar como:
d(n)−nd(n−1)=−[d(n−1)−(n−1)d(n−2)] .
Ahora notando el paralelismo entre el LHS de esta ecuación y la parte del RHS entre paréntesis, podemos continuar recursivamente:
d(n)−nd(n−1)=−[d(n−1)−(n−1)d(n−2)]=
=(−1)2[d(n−2)−(n−2)d(n−3)]=⋯=(−1)n−2d(2)−2d(1)
Esto implica que .d(n)=nd(n−1)+(−1)n
Trabajando al revés:
d(2)=1
d(3)=3d(2)−1=3∗1−1
d(4)=4d(3)+1=4∗3∗1−4+1
d(5)=5d(4)−1=5∗4∗3∗1−5∗4+5−1
d(6)=6d(5)+1=6∗5∗4∗3∗1−6∗5∗4+6∗5−6+1=
=6!(12−13∗2+14∗3∗2−15∗4∗3∗2+16!)=
=6!(16!−15!+14!−13!+12!−11!+1)
Entonces en general,
d(n)=n!(1−1+12!−13!+14!+⋯+1n!)
Y recordando la serie Taylor de evaluada en :exx=−1
d(n)≈n!e
3. Transposición disjunta : El concepto de transposición es fácil de obtener desde el enlace proporcionado en la respuesta original , pero "disjunto" fue un poco menos claro. Mirando un ejemplo, del conjunto , la permutación se puede expresar como un ciclo como:, pero forma un bucle sobre sí mismo - un ciclo disjunto. O, juntando estos dos ciclos, la permutación se puede expresar como el producto .a,b,c,d,e,fb,d,a,c,f,ea -> b -> d -> c after which it returns to a
e -> f
(a b d c)(e f)
En la pregunta de Santa Claus (ocho empleados tienen nombres dibujados en pares perfectamente combinados: Anna le da un regalo a Martha, mientras que Martha ha dibujado el nombre de Anna) habrá circuitos cerrados.4
4. Para encontrar el número de bucles de dos elementos , necesitamos dividir todas las permutaciones posiblesdel conjunto de ocho ( ) personas por el número total posible de intercambios de dos elementos el número total de permutaciones de estos pares: .(2n)!2n2nn!p(2n)=(2n)!2nn!
Para la R
simulación:
1) paired <- function(x) crossprod(x[x] - 1:length(x))==0
Esta función se reduce a la comprensión x[x]
: está destinada a evaluar un vector de elementos que representa las asignaciones actuales y determinar si está compuesto de bucles de 2 elementos, como en el problema de Santa Claus. Siempre que las permutaciones correspondan a elementos de transposición, de modo que si se suponía que Paul debía darle un regalo a Maria ( y viceversa ) y Max a John ( / ) inicialmente, la transposición resultante solo da como resultado un nuevo emparejamiento perfecto ( / y / ) Estamos cumpliendo la condición inicial de emparejamiento perfecto:
8Paul -> Maria
Maria -> Paul
Max -> John
John -> Max
Max -> Maria
Maria -> Max
Paul -> John
John -> Paul
En otras palabras, si volvemos al ejemplo de los sombreros en Wikipedia, la persona i
siempre recupera el sombrero .1
2) good <- function(x) sum(x==1:length(x)) == 0
Esta función evalúa si estamos lidiando con un trastorno comparando el elemento del vector con el vector , 2, 3, 4, 5, , 7, 8 y asegurándose de que no haya coincidencia.( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 )x(1,2,3,4,5,6,7,8)
3.k.paired <- sum(i.good & i.paired)
está ahí para excluir permutaciones emparejadas como la anterior en el diagrama, que no son alteraciones:
v <- c(1,2,3,4,5,6,7,8)
w <- c(1,2,3,5,4,6,7,8)
(c("is v paired?" = paired(v), "is w paired?" = paired(w),
"is v a derang?" = good(w), "is w a derang?" = good(w)))
# not all paired permutations are derangements.