Voici l'arrière-plan de cette question. Des amis et moi jouions à un jeu où tout le monde devait offrir un cadeau à une autre personne. Afin de déterminer qui doit offrir un cadeau à qui, nous décidons de tirer au sort. Mais le problème est que quelqu'un pourrait finir par se donner des cadeaux, ce qui n'est pas drôle. Vous pouvez voir que le nombre attendu de ces malheureux est de 1, ce qui arrive donc assez fréquemment.
À cet effet, le Dearrangement semble être un bon choix. Si je peux assez générer un désarrangement, alors je peux simplement choisir un désarrangement et l'utiliser pour décider qui offrira à qui.
La génération de désarrangement aléatoire pourrait être effectuée avec la méthode de Las Vegas. Mais le problème est qu'il n'a attendu que le temps d'exécution polynomial. J'en suis donc venu à ce problème de trouver un i-ème arrangement. Si je peux choisir aléatoirement un i dans [1, D_n], et utiliser un algorithme de temps polynomial (efficace) dans le pire des cas pour obtenir le i-ème dearrangement, alors c'est fait.