Code de Lehmer
From Wikipedia, the free encyclopedia
En mathématiques, et plus particulièrement en combinatoire, le code de Lehmer est une manière de présenter les permutations sous une forme qui rend commode un tirage aléatoire pour la loi uniforme. On peut l'utiliser pour résoudre le problème des secrétaires.
Le code de Lehmer, attribué à Derrick Lehmer[1], mais connu depuis 1888 au moins[2], associe à une permutation σ des éléments de l'application ƒ=L(σ) définie[3] sur par
Les applications ƒ, encodant des permutations de peuvent être identifiées aux suites Comme
le code de Lehmer établit une correspondance L entre l'ensemble et le produit cartésien
Décodage
Propriété — Le code de Lehmer L est une bijection de dans
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 exactement un choix pour σ(k). Donc chaque suite ƒ de possède un antécédent et un seul dans
Un autre algorithme
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.