Я был очень впечатлен элегантностью в ответе @whuber. Честно говоря, мне пришлось много знакомиться с новыми концепциями, чтобы следовать этапам его решения. Потратив на это много времени, я решил опубликовать то, что получил. Таким образом, то, что следует, является exegetical примечанием к его уже принятому ответу. Таким образом, нет никакой попытки создать оригинальность, и моя единственная цель - предоставить дополнительные точки привязки, чтобы выполнить некоторые из шагов.
Так что вот так ...
2 н
2. Можем ли мы вывести формулу для расстройств?
N
d( n ) = ( n - 1 ) [ d( n - 2 ) + d( n - 1 ) ] =
= nd( n - 2 ) - d( n - 2 ) + nd( n - 1 ) - d( n - 1 )
d( n ) - nd( n - 1 ) = - [ d( n - 1 ) - ( n - 1 )d( n - 2 ) ]
Теперь, заметив параллельность между LHS этого уравнения и частью RHS в скобках, мы можем продолжить рекурсивно:
d( n ) - nd( n - 1 ) = - [ d( n - 1 ) - ( n - 1 )d( n - 2 ) ] =
= ( - 1 )2[ д( n - 2 ) - ( n - 2 )d( n - 3 ) ] = ⋯ = ( - 1 )п - 2d( 2 ) - 2d( 1 )
d( n ) = nd( n - 1 ) + ( - 1 )N
Работа в обратном направлении:
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 )
Так в общем,
d( n ) = n ! ( 1 - 1 + 12 !- 13 !+ 14 !+ ⋯ + 1н !)
еИксх = - 1
d( n ) ≈ n !е
а , б , в , д, е , еб , д, а , с , е, еa -> b -> d -> c after which it returns to a
e -> f
( abdc ) ( ef )
4
( 2 н ) !2 н2Nн !p ( 2 n ) = ( 2 n ) !2Nн !
Для R
симуляции:
1. paired <- function(x) crossprod(x[x] - 1:length(x))==0
x[x]
8Paul -> Maria
Maria -> Paul
Max -> John
John -> Max
Max -> Maria
Maria -> Max
Paul -> John
John -> Paul
i
1
2. good <- function(x) sum(x==1:length(x)) == 0
Икс( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 )
3.k.paired <- sum(i.good & i.paired)
есть ли исключить парные перестановки, подобные приведенной выше на диаграмме, которые не являются отклонениями:
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.