Мене дуже вразила витонченість у відповіді @whuber. Якщо чесно, мені довелося багато ознайомитись з новими концепціями, щоб виконати кроки в його вирішенні. Витративши на це багато часу, я вирішив опублікувати те, що отримав. Отже, далі - екзегетична примітка до його вже прийнятої відповіді. Таким чином, немає спроби оригінальності, і моя єдина мета - надати деякі додаткові точки прикріплення для виконання деяких кроків.
Так ось це йде ...
1. Чому ? 2nНу, це може бути занадто елементарним: нам потрібна рівна кількість людей, щоб грати в цю гру.
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[d(n−2)−(n−2)d(n−3)]=⋯=(−1)n−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!+⋯+1n!)
І запам'ятовуючи серію Тейлора оцінену на :exx=−1
d(n)≈n!e
3. Непересічне переміщення : Поняття транспозиції легко дістати за посиланням, поданим у вихідній відповіді , але "неперервне" було трохи менш зрозумілим. Дивлячись на приклад, із множини перестановка може бути виражена циклом як:, але утворює цикл на себе - неперервний цикл. Або, склавши ці два цикли разом, перестановка може бути виражена як добуток .b , d , a , c , f , e ( abdc ) ( ef )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)
У запитанні Діда Мороза (вісім співробітників, які трапляються з намальованими іменами в ідеально підібраних парах: Анна дарує Марту подарунок, а Марта намалювала ім'я Анни), буде закритих петлі.4
4. Щоб знайти кількість двоелементних циклів, нам потрібно розділити всі можливі перестановкиз набору восьми ( ) людей від загальної можливої кількості підкачок двох елементів та загальної кількості перестановок цих пар: .2 n 2 n n ! p ( 2 n ) = ( 2 n ) !(2n)!2n2nn!p(2n)=(2n)!2nn!
Для R
моделювання:
1. paired <- function(x) crossprod(x[x] - 1:length(x))==0
Ця функція зводиться до розуміння x[x]
: Мається на увазі оцінити вектор елементів, що представляє присутні завдання, та визначити, чи складається він з 2-х елементів петель, як у проблемі Діда Мороза. Поки перестановки відповідають переносним елементам, так що якщо Павло повинен був подарувати подарунок Марії ( і навпаки ), а Максу - Іоанну ( / ) спочатку, то отримане переміщення просто призводить до нового ідеального спарювання ( / і / ) ми виконуємо початкову умову ідеального сполучення:
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 )x(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.