Code de Lehmer
Pour les articles homonymes, voir Lehmer.
Le code de Lehmer est un concept mathématique, en combinatoire.
Sommaire
1 Définition
2 Décodage
2.1 Un algorithme
2.2 Un algorithme alternatif
3 Applications en combinatoire et en probabilités
3.1 Indépendance des rangs relatifs
3.2 Nombre de records
3.3 Nombre de cycles
3.4 Problème des secrétaires
4 Notes et références
5 Voir aussi
5.1 Article connexe
5.2 Bibliographie
Définition |
Le code de Lehmer, attribué à Derrick Lehmer[1], mais connu depuis 1888 au moins[2], associe à une permutation σ des éléments de [[1,n]] {displaystyle scriptstyle [![1,n]!] } l'application ƒ=L(σ) définie[3] sur [[1,n]] {displaystyle scriptstyle [![1,n]!] } par
f(i)=Card{j | 1≤j≤i et σ(j)≤σ(i)}=L(σ,i).{displaystyle f(i)={text{Card}}left{j | 1leq jleq i{text{ et }}sigma (j)leq sigma (i)right}=L(sigma ,i).}
Les applications ƒ, encodant des permutations de Sn, {displaystyle scriptstyle {mathfrak {S}}_{n}, } peuvent être identifiées aux suites (f(i))1≤i≤n. {displaystyle scriptstyle left(f(i)right)_{1leq ileq n}. } Comme
1≤f(i)≤i,{displaystyle 1leq f(i)leq i,}
le code de Lehmer établit une correspondance L entre l'ensemble Sn {displaystyle scriptstyle {mathfrak {S}}_{n} } et le produit cartésien
[[1,1]]×[[1,2]]×[[1,3]]×⋯×[[1,n]].{displaystyle [![1,1]!]times [![1,2]!]times [![1,3]!]times dots times [![1,n]!].}
Décodage |
Propriété — Le code de Lehmer L est une bijection de Sn {displaystyle scriptstyle {mathfrak {S}}_{n} } dans
[[1,1]]×[[1,2]]×[[1,3]]×⋯×[[1,n]].{displaystyle scriptstyle [![1,1]!]times [![1,2]!]times [![1,3]!]times dots times [![1,n]!].}
Un algorithme |
Un algorithme simple permet de reconstituer σ à partir de ƒ=L(σ). Par exemple, le code ƒ=113252 correspond à une permutation σ telle que σ(6)=2. En effet on voit que, par définition, L(σ,n)=σ(n). C'est le premier pas de l'algorithme :
σ-1=x6xxxx ;
l'avant-dernier terme de la suite ƒ, égal à L(σ,5)=5, signifie que parmi les 5 images possibles pour 5, (1,3,4,5,6), il faut choisir la 5e, σ(5)=6 :
σ-1=x6xxx5 ;
le terme 2=L(σ,4), en 4e position de la suite ƒ, signifie que parmi les 4 images possibles pour 4, (1,3,4,5), il faut choisir la 2e, σ(4)=3 :
σ-1=x64xx5 ;
le terme 3=L(σ,3), en 3e position de la suite ƒ, signifie que parmi les 3 images possibles pour 3, (1,4,5), il faut choisir σ(3)=5 :
σ-1=x64x35 ;
on termine avec σ(2)=1 :
σ-1=264x35 ;
puis σ(1)=4 :
σ-1=264135 ;
on a donc σ=(4,1,5,3,6,2). Il est clair d'après le déroulement de l'algorithme qu'à chaque pas il y a un choix pour σ(k), et il n'y en a qu'un. Donc chaque suite ƒ de [[1,1]]×[[1,2]]×[[1,3]]×⋯×[[1,n]] {displaystyle scriptstyle [![1,1]!]times [![1,2]!]times [![1,3]!]times dots times [![1,n]!] } possède un antécédent et un seul dans Sn.{displaystyle scriptstyle {mathfrak {S}}_{n}.}
Un algorithme alternatif |
Une autre possibilité est de construire σ-1 directement à partir de ƒ=113252 de la manière suivante :
- insérer 1 à la 1re et seule place possible dans la suite x, ce qui donne 1,
- insérer 2 à la 1re des places possibles dans la suite x1x, ce qui donne 21,
- insérer 3 à la 3e des places possibles dans la suite x2x1x, ce qui donne 213,
- insérer 4 à la 2e des places possibles dans la suite x2x1x3x, ce qui donne 2413,
- insérer 5 à la 5e des places possibles dans la suite x2x4x1x3x, ce qui donne 24135,
- insérer 6 à la 2e des places possibles dans la suite x2x4x1x3x5x, ce qui donne 264135.
On peut maintenant déduire σ de σ-1. Cette construction est justifiée par l'observation suivante : par définition, ƒ(i) est le rang de σ(i) quand on range la suite (σ(1), σ(2), σ(3), ... , σ(i-1), σ(i)) dans l'ordre croissant.
Applications en combinatoire et en probabilités |
Indépendance des rangs relatifs |
Ces applications découlent d'une propriété immédiate du code de Lehmer L(σ) vu comme suite de nombres entiers.
Propriété — Sous la loi uniforme sur Sn, {displaystyle scriptstyle {mathfrak {S}}_{n}, } L est une suite de variables indépendantes et uniformes ; L(i) suit la loi uniforme sur [[1,i]] {displaystyle scriptstyle [![1,i]!] }.
En d'autres termes, si on tire une permutation aléatoire ω au hasard dans Sn, {displaystyle scriptstyle {mathfrak {S}}_{n}, } avec équiprobabilité (chaque permutation a une probabilité 1/n! d'être choisie), alors son code de Lehmer ƒ=L(ω)=(L(1,ω), L(2,ω), L(3,ω), ... , L(n,ω)) est une suite de variables aléatoires indépendantes et uniformes. Cela contraste avec le comportement probabiliste de la suite (ω(1), ω(2), ω(3), ... , ω(n)) des images des entiers par la permutation aléatoire ω, qui fournit la description la plus naturelle de ω, mais qui est une suite de variables aléatoires dépendantes, donc moins maniable pour effectuer des calculs de probabilités. L'indépendance des composantes de L résulte d'un principe général concernant les variables aléatoires uniformes sur un produit cartésien.
Nombre de records |
Définition — Dans une suite u=(uk)1≤k≤n, il y a record vers le bas (resp. vers le haut) au rang k si uk est strictement plus petit (resp. strictement plus grand) que chaque terme ui tel que i<k.
Soit B(k) (resp. H(k)) l'évènement "il y a record vers le bas (resp. vers le haut) au rang k" , i.e. B(k) est l'ensemble des permutations de Sn {displaystyle scriptstyle {mathfrak {S}}_{n} } qui présentent un record vers le bas au rang k. On a clairement
{ω∈B(k)}⇔{L(k,ω)=1}et{ω∈H(k)}⇔{L(k,ω)=k}.{displaystyle {omega in B(k)}Leftrightarrow {L(k,omega )=1}quad {text{et}}quad {omega in H(k)}Leftrightarrow {L(k,omega )=k}.}
Ainsi le nombre Nb(ω) (esp. Nh(ω)) de records vers le bas (resp. vers le haut) de la permutation ω s'écrit comme une somme de variables de Bernoulli indépendantes de paramètres respectifs 1/k :
Nb(ω)=∑1≤k≤n 11B(k)etNb(ω)=∑1≤k≤n 11H(k).{displaystyle N_{b}(omega )=sum _{1leq kleq n} 1!!1_{B(k)}quad {text{et}}quad N_{b}(omega )=sum _{1leq kleq n} 1!!1_{H(k)}.}
En effet, comme L(k) suit la loi uniforme sur [[1,k]], {displaystyle scriptstyle [![1,k]!], }
P(B(k))=P(L(k)=1)=P(H(k))=P(L(k)=k)=1k.{displaystyle mathbb {P} (B(k))=mathbb {P} (L(k)=1)=mathbb {P} (H(k))=mathbb {P} (L(k)=k)={tfrac {1}{k}}.}
La fonction génératrice de la variable de Bernoulli 11B(k){displaystyle 1!!1_{B(k)}} est
Gk(s)=k−1+sk,{displaystyle G_{k}(s)={frac {k-1+s}{k}},}
donc la fonction génératrice de Nb est
G(s)=∏k=1nGk(s) = (s)↑nn!,{displaystyle G(s)=prod _{k=1}^{n}G_{k}(s) = {frac {(s)_{uparrow n}}{n!}},}
ce qui permet de retrouver la forme produit de la série génératrice des nombres de Stirling de première espèce (non signés).
Nombre de cycles |
La correspondance fondamentale de Foata entraine que la loi de probabilité de Nb est aussi la loi du nombre de cycles de la décomposition d'une permutation tirée au hasard.
Problème des secrétaires |
Le problème des secrétaires est un problème d'arrêt optimal, classique en théorie de la décision, statistiques et probabilités appliquées, où une permutation aléatoire est dévoilée progressivement à travers les premiers termes de son code de Lehmer, et où il faut s'arrêter exactement à la valeur k telle que σ(k)=n, alors que la seule information disponible (les k premières valeurs du code de Lehmer) ne permet pas de calculer σ(k). En termes moins mathématiques, une série de n candidats sont présentés, l'un après l'autre, à un recruteur, qui doit recruter le meilleur, mais doit prendre sa décision ("je passe" ou "je recrute") au moment où le candidat lui est présenté, sans attendre d'avoir vu le candidat suivant (a fortiori, sans avoir vu tous les candidats). Le recruteur connait donc le rang du candidat présenté en k-ème position parmi les k candidats qu'il a déjà vus, donc, au moment de prendre sa k-ème décision ("je passe" ou "je recrute"), le recruteur connait les k premiers termes du code de Lehmer, alors qu'il aurait besoin de connaître la permutation : le recruteur aurait besoin de connaître tous les termes du code de Lehmer pour prendre une décision bien informée. Pour déterminer la stratégie optimale (optimisant la probabilité de gagner), les propriétés statistiques du code de Lehmer sont cruciales. Johannes Kepler aurait exposé clairement le problème des secrétaires à un ami au moment où il a entrepris de choisir sa seconde femme parmi 11 épouses potentielles (choix qu'il voulait faire très méticuleusement, son premier mariage, malheureux, ayant été arrangé sans qu'il eût été consulté)[4].
Notes et références |
(en) D.H. Lehmer, « Teaching combinatorial tricks to a computer », Proc. Sympos. Appl. Math. Combinatorial Analysis, Amer. Math. Soc., vol. 10, 1960, p. 179-193
voir Charles-Ange Laisant, « Sur la numération factorielle, application aux permutations », Bulletin de la Société Mathématique de France, vol. 16, 1888, p. 176-183 (lire en ligne), mais aussi (en) Don Knuth, The art of computer programming : Sorting and Searching, t. 3, Reading, Addison-Wesley, 1981, 2e éd., p. 12-13, où on fait référence à un article de Marshall Hall antérieur à celui de Lehmer. C'est probablement la raison pour laquelle Don Knuth parle d'"inversion table", et non pas de "Lehmer code".
on utilise parfois une convention différente, avec des inégalités strictes plutôt que larges, en considérant le code f~(i)=Card{j | 1≤j<i et σ(j)<σ(i)},{displaystyle scriptstyle {tilde {f}}(i)={text{Card}}left{j | 1leq j<i{text{ et }}sigma (j)<sigma (i)right},} ce qui revient à faire un décalage uniforme de 1, i.e. f~(i)=f(i)−1,∀i.{displaystyle scriptstyle {tilde {f}}(i)=f(i)-1,quad forall i.}
(en) Thomas S. Ferguson, « Who Solved the Secretary Problem? », Statistical Science, vol. 4, no 3, août 1989, p. 282-289 (lire en ligne)
Voir aussi |
Article connexe |
Numération factorielle (en)
Bibliographie |
- (en) Roberto Mantaci et Fanja Rakotondrajao, « A permutation representation that knows what “Eulerian” means », Discrete Mathematics and Theoretical Computer Science, no 4, 2001, p. 101-108 (lire en ligne)
- (en) M. Lothaire, Algebraic combinatorics on words, Cambridge, CUP, 2002, p. 372-375
- Portail des probabilités et de la statistique