Как мне реализовать этот алгоритм для больших чисел?
Рассмотрим следующий алгоритм, который генерирует (не обязательно равномерно) случайную перестановку чисел от 1 до N:
P := [1, 2, ..., N] for i in 1..N do j := rand(1, N) swap(P[i], P[j])
Здесь rand(1, N) возвращает равномерно случайное целое число от 1 до N включительно. Обозначим вероятность того, что перестановка, сгенерированная этим алгоритмом, равна P на p(P).
Найти перестановки P1, такой, что Р(П1) является максимально возможной и перестановки Р2, таких, что Р(Р2) является минимально возможной.
Что я уже пробовал:
Я грубо форсировал его до N=7 и отвечал с помощью предварительного расчета, но для большего N (N<=17) ot застревает. O(N^17)!
Как я могу реализовать этот код?
Кроме того, существует ли какая-либо формула для вычисления вероятности того, что число заканчивается на определенном индексе в неравномерной линейной перетасовке?
Spam291203
Любая помощь будет оценена по достоинству!