Имя: Пароль:
IT
 
Сильно перемешанные перестановки
0 Ненавижу 1С
 
гуру
01.11.11
08:46
Пусть у нас есть набор чисел 1, 2, ..., N
Общеизвестно, что с помощью них можно составить ровно N! перестановок.

Перестановку назовем сильно перемешанной, если для любого числа K (0<K<N) следующее за ним число в ней (если такое есть) отлично от K+1.

Вопрос: Сколько всего сильно перемешанных перестановок? Желательно формулу от N
1 XLife
 
01.11.11
08:49
N = до+X+Y+Я
2 Нуф-Нуф
 
01.11.11
08:50
(1) порвало!
3 Ненавижу 1С
 
гуру
01.11.11
08:50
4 RomanYS
 
01.11.11
10:52
Пусть
F(N) - искомая функция
Q(N) - количество перестановок, где РОВНО одна пара чисел удовлетворяет условию A[k+1] = A[k] + 1.

Тогда
F(N+1) = N*F(N) + Q(N)
Q(N+1) = F(N) + (N-1)*Q(N)

F(2) = 1
Q(2) = 1

Нерекурсивная формула вряд ли существует.
5 Ненавижу 1С
 
гуру
01.11.11
11:00
(4) ну вот я тоже примерно так думал, только формула Q(N+1) = F(N) + (N-1)*Q(N) неверна
в итоге при N=5 получаем F(5) = 51, а на самом деле 53
6 acsent
 
01.11.11
11:03
(4) А если 2 пары или 3 пары?
7 RomanYS
 
01.11.11
11:12
(53) выведи эти 53 варианта, надо увидеть
8 Ненавижу 1С
 
гуру
01.11.11
11:14
Но идея правильная
Пусть F(R,N) - количество перестановок на N элементах, где РОВНО R пар числе удовлетворяют условию: A[k+1] = A[k] + 1
Тогда функции из (4) это:
F(N) = F(0,N)
Q(N) = F(1,N)

рекурсивные формулы:
F(0,N+1) = N*F(0,N) + F(1,N)
F(R,N+1) = F(R-1,N) + (N-R)*F(R,N) + F(R+1,N) при R>0
9 Ненавижу 1С
 
гуру
01.11.11
11:15
(7) лови:

5
1 3 2 5 4
1 3 5 2 4
1 3 5 4 2
1 4 2 5 3
1 4 3 2 5
1 4 3 5 2
1 5 2 4 3
1 5 3 2 4
1 5 4 3 2
2 1 3 5 4
2 1 4 3 5
2 1 5 4 3
2 4 1 3 5
2 4 1 5 3
2 4 3 1 5
2 4 3 5 1
2 5 1 4 3
2 5 3 1 4
2 5 4 1 3
2 5 4 3 1
3 1 4 2 5
3 1 5 2 4
3 1 5 4 2
3 2 1 5 4
3 2 4 1 5
3 2 5 1 4
3 2 5 4 1
3 5 1 4 2
3 5 2 1 4
3 5 2 4 1
3 5 4 2 1
4 1 3 2 5
4 1 3 5 2
4 1 5 3 2
4 2 1 3 5
4 2 1 5 3
4 2 5 1 3
4 2 5 3 1
4 3 1 5 2
4 3 2 1 5
4 3 2 5 1
4 3 5 2 1
5 1 3 2 4
5 1 4 3 2
5 2 1 4 3
5 2 4 1 3
5 2 4 3 1
5 3 1 4 2
5 3 2 1 4
5 3 2 4 1
5 4 1 3 2
5 4 2 1 3
5 4 3 2 1
53
10 Ненавижу 1С
 
гуру
01.11.11
11:30
+(8) поправка:

рекурсивные формулы:
F(0,N+1) = N*F(0,N) + F(1,N)
F(R,N+1) = F(R-1,N) + (N-R)*F(R,N) + (R+1)*F(R+1,N) при R>0
11 RomanYS
 
01.11.11
11:45
(10) да, согласен
двух слагаемых недостаточно
12 RomanYS
 
01.11.11
13:07
интересно, что доля таких перестановок очень слабо убывает и ~0.37
Похоже, что предел F(0,N) равен N!/e
13 Ненавижу 1С
 
гуру
01.11.11
15:45
а оказалось все гораздо проще:
F(1,N+1) = N*F(0,N)
Отсюда получаем:
F(0,N+1) = N*F(0,N) + F(1,N) = N*F(0,N) + (N-1)*F(0,N-1)

или если искомую функцию F(0,N) обозначать просто F(N):
F(N+1) = N*F(N) + (N-1)*F(N-1)
правда окончательно от рекурсии, скорее всего, никуда не деться

http://oeis.org/A000255
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой