Contexte
Supposons que j'ai deux lots identiques de billes. Chaque marbre peut être l'une des couleurs , où c≤n . Soit n_i le nombre de billes de couleur i dans chaque lot.
Soit le multiset représentant un lot. Dans la représentation fréquentielle , peut également s'écrire .
Le nombre de permutations distinctes de est donné par le multinomial :
Question
Existe-t-il un algorithme efficace pour générer au hasard deux permutations diffuses et dérangées et de ? (La distribution doit être uniforme.)
Une permutation est diffus si pour chaque élément distinct de , les instances de sont espacées à peu près uniformément dans .
Par exemple, supposons .
- n'est pas diffus
- est diffus
Plus rigoureusement:
- Si , il n'y a qu'une seule instance de pour «espacer» dans , alors soit .i P Δ ( i ) = 0
- Sinon, soit est la distance entre instance et l' instance de dans . Soustrayez-en la distance attendue entre les instances de , en définissant ce qui suit:
Si est régulièrement espacé dans , alors doit être nul, ou très proche de zéro si .j j + 1 i P i δ ( i , j ) = d ( i , j ) - n i P Δ ( i ) n i ∤ n
Définir maintenant la statistique pour mesurer combien chaque est régulièrement espacées dans . Nous appelons diffus si est proche de zéro, ou à peu près . (On peut choisir un seuil propre à pour que soit diffus si )i P P s ( P ) s ( P ) ≪ n 2 k ≪ 1 P s ( P ) < k n 2
Cette contrainte rappelle un problème d'ordonnancement en temps réel plus strict appelé problème de moulin à vent avec multiset (de sorte que ) et la densité . L'objectif est de programmer une séquence cyclique infinie telle que toute sous-séquence de longueur contienne au moins une instance de . En d'autres termes, un programme réalisable nécessite tout ; si est dense ( ), alors et . Le problème du moulinet semble être NP-complet.a i = n / n i ρ = ∑ c i = 1 n i / n = 1 P a i i d ( i , j ) ≤ a i A ρ = 1 d ( i , j ) = a i s ( P ) = 0
Deux permutations et sont dérangées si est un dérangement de ; c'est-à-dire pour chaque index .Q P Q P i ≠ Q i i ∈ [ n ]
Par exemple, supposons .
- et ne sont pas dérangés
- et sont dérangés
Analyse exploratoire
Je m'intéresse à la famille des multisets avec et pour . En particulier, laissez .
La probabilité que deux permutations aléatoires et de soient dérangées est d'environ 3%.
Ceci peut être calculé comme suit, où est le ème polynôme de Laguerre: Voir ici pour une explication.
La probabilité qu'une permutation aléatoire de soit diffuse est d'environ 0,01%, fixant le seuil arbitraire à environ .
Ci-dessous se trouve un diagramme de probabilité empirique de 100 000 échantillons de où est une permutation aléatoire de .
Pour des échantillons de taille moyenne, .
La probabilité que deux permutations aléatoires soient valides (à la fois diffuses et dérangées) est d'environ .
Algorithmes inefficaces
Un algorithme «rapide» commun pour générer un dérangement aléatoire d'un ensemble est basé sur le rejet:
faire P ← permutation_aléatoire ( D ) jusqu'à is_derangement ( D , P ) retour P
ce qui prend environ itérations, car il y a à peu près dérangements possibles. Cependant, un algorithme randomisé basé sur le rejet ne serait pas efficace pour ce problème, car il prendrait l'ordre de itérations.
Dans l'algorithme utilisé par Sage , un dérangement aléatoire d'un multiset "se forme en choisissant un élément au hasard dans la liste de tous les dérangements possibles". Pourtant, cela aussi est inefficace, car il existe des permutations valides pour énumérer, et en plus, il faudrait un algorithme juste pour le faire de toute façon.
D'autres questions
Quelle est la complexité de ce problème? Peut-il être réduit à n'importe quel paradigme familier, tel que le flux réseau, la coloration des graphiques ou la programmation linéaire?