FR 2931964 A1 20091204 FR 0803020 A 20080602 PROCÉDÉ DE DÉNOMBREMENT DES VECTEURS DANS LES RÉSEAUX RÉGULIERS DE POINTS La présente invention concerne le domaine du traitement de données numériques en vue d'application telles que la compression. de données numériques, la recherche de données numériques, la comparaison de données numériques ou la décompression de données numériques. L'invention concerne le traitement de données audiovisuelles, et plus généralement tout type de données numériques. Le but visé par l'invention est de réduire les temps de traitement et les besoins de ressources informatiques tant en ce qui concerne la puissance de calcul que les besoins de mémoire. Les applications concernent notamment mais non exclusivement le traitement d'images nécessitant un très grand nombre de données pour la décrire. Pour réduire la durée de transmission et la taille requise pour le stockage, on réalise une compression de l'information en procédant à une extraction de l'information visuelle qui seule sera codée. Cette information codée doit être localisée de manière optimale en fréquence et dans l'espace pour permettre une restitution optimale en évitant toute redondance néfaste aux performances du codage. Pour cela, il est connu de mettre en oeuvre la technique de transformée par ondelette, dont les coordonnées constituent un réseau vectoriel qui est ensuite soumis à une étape de quantification vectorielle. Le principe de la quantification vectorielle (VQ) est de coder une séquence d'échantillons formant un vecteur au lieu de coder chacun des échantillons individuellement. Le codage s'effectue en approximant la séquence à:coder par un vecteur appartenant à un catalogue de formes usuellement appelé �codebook�. Chacun des vecteurs du codebook est indexé. Lors du codage, c'est l'index du vecteur le plus proche de la séquence d'échantillons à coder, qui servira à la représenter. Les solutions connues nécessitent la détermination de chacun des vecteurs, leur enregistrement dans une mémoire et l'exécution ensuite de traitement sur l'ensemble des vecteurs pour les dénombrer. La base de vecteurs peut nécessiter plusieurs gigaoctets, et les temps de calcul pour une base aussi importante sont importants. Le but de l'invention est de proposer un procédé de dénombrement et d'indexage évitant ces inconvénients. État de la technique On connaît dans l'état de la technique la demande de brevet international WO9933185 concernant un procédé de codage consistant à déterminer un vecteur, dit vecteur leader, qui comporte les mêmes composantes que le vecteur quantifié mais dans un ordre prédéterminé, puis à déterminer le niveau d'ordre ou rang dudit vecteur quantifié dans ledit ensemble formé des vecteurs qui ont les mêmes composantes que le vecteur leader et qui sont, dans ledit ensemble, ordonnés de manière prédéterminée. Le procédé consiste ensuite à former un code à partir, d'une part, d'un indice représentatif dudit vecteur leader ainsi déterminé et, d'autre part, dudit rang. La difficulté principale rencontrée pour la conception d'un quantificateur vectoriel algébrique pour la compression est liée au problème de dénombrement et d'indexage des vecteurs dans le réseau régulier de points (qui constitue le dictionnaire de quantification). Nous présentons ici les solutions que nous avons proposées pour résoudre ces problèmes dans le cas d'une source de distribution Gaussienne généralisée (comme par exemple les coefficients d'ondelettes). La quantification vectorielle algébrique La quantification a été étudiée depuis quelques dizaines d'années maintenant et les travaux effectués ont développé de nombreux résultats aujourd'hui classiques sur la théorie débit-distorsion. En particulier, il a été montré que la Quantification Vectorielle (QV) possède de nombreux avantages par rapport à la Quantification Scalaire (QS) lorsqu'un codage à longueur fixe est imposé. De plus, les travaux de Shannon ont montré que les performances de la QV sont proches des performances théoriques optimales si la dimension n des vecteurs de quantification est suffisamment grande. Cependant, il est important de noter que la QV peut se rapprocher de ces performances optimales au prix d'une complexité calculatoire élevée ; complexité qui augmente de façon exponentielle avec la dimension des vecteurs. Généralement, la QV est effectuée en utilisant un dictionnaire non structuré construit à partir de données statistiques représentatives de la source (séquence d'apprentissage). Dans ce cas, la complexité ainsi que les besoins en stockage dus à la taille du dictionnaire peuvent devenir prohibitifs pour des applications de compression. De plus, il existe un problème de robustesse du dictionnaire qui, optimisé pour une séquence d'apprentissage donnée, donne des performances mauvaises pour une image en dehors de la séquence d'apprentissage. Une solution pour surmonter ces problèmes est d'utiliser un QV structuré n-dimensionnel tel que la Quantification Vectorielle Algébrique (QVA) ou encore quantification vectorielle sur réseaux réguliers de points. Comme les vecteurs du dictionnaire sont contraints à appartenir à un réseau régulier structuré, les performances de la QVA sont en général inférieures à celle de la QV non-structurée. Mais dans la plupart des applications, ce léger désavantage est compensé par le fait que pour la QVA aucun dictionnaire a besoin d'être généré ou stocké, et que la complexité de codage est réduite. La quantification par réseaux réguliers de points peut être vue comme une généralisation de la quantification scalaire uniforme. Comme dans le cas de la QV non structurée, le terme QVA sera utilisé dans le reste du document soit pour désigner la quantification vectorielle, soit pour désigner un quantificateur vectoriel. La QVA prend en compte les dépendances spatiales entre les coefficients des vecteurs ainsi que les gains de partitionnement et de forme. Quelle que soit la distribution de la source, la QVA est toujours plus efficace que la QS. Un réseau régulier de points dans Rn est composé par toutes les combinaisons possibles d'un ensemble de vecteurs linéairement indépendants ai qui constitue la base du réseau {y l y = ulal + u2a2 + ... + unan} où les coefficients ui sont des entiers. La partition de l'espace est alors régulière et ne dépend seulement que des vecteurs de base choisis. Chaque base définie un réseau régulier de points différent. La QVA offre la possibilité de réduire considérablement les coûts calcul et stockage par rapport à un QV conçu au moyen d'algorithmes basés sur l'algorithme de Lloyd généralisé. En effet, utiliser les vecteurs d'un réseau régulier comme valeurs de quantification élimine l'opération de construction d'un dictionnaire le dictionnaire est construit implicitement de par la structure du réseau choisi. L'article Conway et: Sloane � Fast quantizing and decoding algorithms for lattice quantizers and codes � paru dans IEEE Trans. On Information Theory, vol. 28, n°2, pp.227-232 mars 1982 décrit des algorithmes rapides de quantification qui utilisent simplement des opérations d'arrondis et qui ne dépendent que de la dimension n des vecteurs. En 1979, Gersho a émis la conjecture que dans le cas asymptotique (c'est-à-dire pour des forts débits), les performances débit-distorsion d'un QVA sont approximativement optimales. Toutefois, bien que la QVA ne soit pas mathématiquement optimale pour des faibles débits, la réduction de complexité apportée par de tels quantificateurs permet d'utiliser de grandes dimensions de vecteurs, ce qui entraîne de meilleures performances expérimentales à débit donné. De bonnes performances débit-distorsion peuvent être obtenues en combinant la QVA avec un codeur entropique, ce qui a motivé quelques travaux sur la QVA dans le domaine des ondelettes. Beaucoup de travaux théoriques sur la QV ont été menés pour des sources Gaussienne et Laplacienne, cependant, dans le cas de sources de type Gaussienne généralisée avec un paramètre de décroissance inférieur à un., il a été montré par que le réseau cubique Z° était plus performant en termes de débit-distorsion que le réseau E, et le réseau de Leech. Ce résultat a motivé nos travaux pour combiner la QVA avec la transformée en ondelettes. Les problématiques traitées par l'invention Si la quantification par QVA est peu complexe, du fait de la structure géométrique régulière du dictionnaire, sa mise en oeuvre n'est cependant pas immédiate. Dans le cas de modèles non-asymptotiques, le bruit de surcharge est négligé puisque nous supposons l'utilisation d'un codage à longueur variable et d'un dictionnaire infini. Elle soulève en effet un certain nombre de questions concrètes, notamment en termes de calcul et de stockage. Deux problèmes fondamentaux peuvent être mis en avant dans la conception d'un QVA : a) L'indexage : L'indexage est une opération indépendante de la quantification, elle consiste à assigner à chaque vecteur quantifié, un indice (ou index) qui, une fois codé, est transmis sur un canal jusqu'au décodeur. Cette opération est fondamentale dans la chaîne de compression. Elle conditionne en effet le débit binaire et permet le décodage sans ambiguïté des vecteurs. Les méthodes connues sont généralement très peu coûteuses en mémoire, mais présentent une complexité calculatoire non négligeable (algorithmes récursifs), ou fonctionnent seulement dans des cas particuliers (types de réseau ou de troncature particuliers). L'invention concerne une approche plus générale qui permet l'indexage sur des distributions de type Gaussienne généralisée, réalisant un bon compromis coût mémoire/coût calcul. Le premier brevet propose une solution à cette problématique. b) Le dénombrement. Les méthodes d'indexage sont généralement basées sur la connaissance de la population du réseau. Ainsi, nous devons être capable de dénombrer les vecteurs du réseau sur des surfaces (ou à l'intérieur de volumes) n-dimensionnels qui dépendent de la distribution de la source. Une approche classique de dénombrement est basée sur l'utilisation de séries génératrices. Dans ce formalisme, les fonctions Nu ont été introduites. Elles permettent le dénombrement sur des pyramides, c'est-à-dire dans le cas d'une distribution Laplacienne. La présente invention concerne plus particulièrement l'étape de dénombrement sur des distributions de type Gaussienne généralisée, réalisant un bon compromis coût mémoire/coût calcul. Le deuxième brevet propose une solution à cette problématique. Notre contribution a porté principalement sur le dénombrement et l'indexage ainsi que sur la mise en oeuvre de QVA dans le cadre d'applications de compression d'images ou de vidéos. L'utilisation de ces deux approches et de la QVA reste tout à fait valide pour la compression du signal audio (son, parole, musique). À cet effet, l'invention concerne selon son acception la plus générale un procédé d'estimation du nombre de vecteurs leaders de norme lp égal à rnd de dimension d et dont les coordonnées sont inférieures ou égales à k, caractérisé en ce que r5d est déterminé par la sommation des résultats d'une fonction T (xi) pour i variant entre 1 et d, ladite fonction T(xi) retournant, pour une partie au moins desdits vecteurs leaders, le résultat de la division de la coordonnée xi élevé à la puissance p par un facteur de précision delta, le résultat de ladite division étant arrondi à l'entier le plus proche, le procédé ne comportant pas d'étape de détermination des vecteurs leaders. De préférence, on procède à la sommation, pour les valeurs de n comprises entre d et 1, du résultat de la fonction qb(r-T(u), n-1, u),, en faisant varier u entre une valeur minimale umin (r, n) et k, ladite fonction e (r, n, k) retournant la quantité de vecteurs leaders de norme rsä=r, de dimension n et dont les coordonnées sont inférieures ou égale à k, ladite fonction umin retournant la plus petite valeur entière u qui vérifie T(u) supérieur ou égal à r/n. Avantageusement, on procède à une étape préalable d'initialisation consistant à attribuer, pour n=1, à la fonction qs(r, 1, k) une valeur correspondant au nombre des valeurs possibles de u plus petites ou égales à k telles que T(u)=r, puis à procéder à ladite étape de sommation. L'invention concerne également une application du procédé d'estimation pour l'estimation du débit dans le cadre de compression de données ou pour l'indexation de vecteurs leaders. Description détaillée de l'invention L'invention sera mieux comprise à la lecture d'un exemple non limitatif de réalisation, se référant aux 5 dessins annexés où : - la figure 1 représente un exemple d'enveloppe de r?z = 15, p = 0,4 et S = 0,3 pour un réseau Z2 - la figure 2 représente comparaison des besoins de mémoire entre la méthode usuelle et la méthode proposée 10 pour p = 1, S = 1 et B = 4. - les annexes 1 et 2 représentent deux exemples d'algorithmes de dénombrement pour la mise en oeuvre de l'invention. 15 L'indexage de vecteurs de réseau est un problème essentiel dans les applications de quantification de réseau. L'invention concerne une solution à ce problème utilisant les vecteurs leaders de réseau et le cadre de la théorie des partitions. Elle fonctionne pour des sources de 20 distribution Gaussienne généralisée et permet l'utilisation de codes produit. Elle permet également de dénombrer des vecteurs de dimension élevée. La quantification vectorielle (QV) pourrait permettre d'obtenir des performances théoriques optimales si la 25 dimension vectorielle est arbitrairement élevée. Malheureusement, la complexité de calcul de QV non structurée optimale telle que LBG augmente de façon exponentielle avec la dimension. De plus, les besoins en stockage peuvent être très importants. Une solution à ce 30 problème de dimensionnalité est l'utilisation de QV contrainte telle que la quantification vectorielle de réseau (LVQ). L'approche LVQ conduit à la conception d'un dictionnaire structuré dont les vecteurs de code sont régulièrement distribués dans l'espace. Par conséquent, au lieu d'optimiser la position des vecteurs dans l'espace, il est possible d'adapter la source en indexant les vecteurs de réseau conformément à la forme de sa distribution. Pour la plupart des sources de données réelles ceci peut être effectué efficacement en utilisant un code produit, conduisant à un compromis débit-distorsion optimal pour des distributions de sources unimodales symétriques. En effet, il est possible d'interpréter de telles distributions comme étant un ensemble d'hypersurfaces concentriques ayant la même forme en fonction de la distribution de source. Il est alors possible d'indexer les mots de code de réseau en assignant un premier index (préfixe) correspondant à la norme (rayon) de la surface respective et un second index unique (suffixe) correspondant au dénombrement des vecteurs appartenant à une même surface. Un grand nombre de sources de données importantes, telles que des coefficients d'image et de parole sous- bande, en particulier ceux obtenus par transformation d'ondelette, peuvent être modélisées par les distributions Gaussiennes généralisées. Cette famille de distributions est paramétrée par un facteur de forme unique p (GG(p)) pour une variable stochastique univariée. Une propriété intéressante des sources ayant des distributions (GG(p)) est que les enveloppes de norme 1, correspondant à des surfaces de probabilité constante. Ceci conduit au développement de codes produit effectifs. Même si le calcul du préfixe est trivial, le suffixe requiert le dénombrement et l'indexage des vecteurs de réseau situés sur des hypersurfaces données. De plus, l'augmentation de la dimension de l'espace peut rendre l'opération d'indexage et dénombrement très complexe, étant donné que le nombre de vecteurs situés sur une enveloppe augmente fortement avec la norme, comme l'illustre le tableau ci-dessous, représentant la comparaison du nombre de leaders d'une hyperpyramide donnée et du nombre total de vecteurs de réseau situés sur cette hyperpyramide (cardinalité) dans le cas d'une norme 11, pour un réseau Z° et différentes valeurs de dimension et de norme. Dimension Norme Nombre de Cardinalité leaders 13 402 3 400 884 640002 1000 83834 4000002 10 41 1854882 9 172 1, 37.108 9, 74.1015 1842 9, 98.1015 1, 68.1024 10 42 317222212 18 29 4426 8,42.1015 450 9,89-1015 9,39-1015 5 7 207648024 60 11 56 1,90.1015 303 9,88.1015 2,54.1015 4 5 138259200 120 9 30 7, 30.1015 301 9,92-1015 9, 50.1034 3 3 18432160 240 7 15 1,17-1015 301 9,93-1015 1,68-10203 Dans la littérature, l'indexage du suffixe est généralement effectué selon deux techniques différentes. La première attribue un index tenant compte du nombre total de vecteurs situés sur une hypersurface donnée (cardinalité). Une autre approche exploite les symétries d'un réseau en utilisant le concept de leaders. Les leaders d'une enveloppe de norme lp correspondent à quelques vecteurs de réseau à partir desquels tous les autres vecteurs de réseau situés sur l'enveloppe correspondante peuvent être obtenus par des permutations et des changements de signe de leurs coordonnées. Ces deux approches ont tendance à présenter des performances débit-distorsion similaires pour des sources isotropes. Cependant, la plupart des travaux sur l'indexage de réseau proposent des solutions uniquement pour des distributions Laplaciennes ou Gaussiennes, qui sont des cas particuliers de GG(p), avec des paramètres de forme p = 1 et p = 2, respectivement. Quelques auteurs proposent une solution pour le cas particulier p = 0,5. Toutefois, cette méthode de dénombrement rie permet pas la construction de codes produit et la méthode d'indexage dans est très complexe dans la pratique, en particulier pour p e 0,5, 1 ou 2 avec des dimensions et des normes élevées. L'invention propose une nouvelle alternative pour le dénombrement de vecteurs de réseau z situés sur des enveloppes GG(p) avec 0 Dans la description qui suit, une première partie présente le principe de la LVQ et décrit le problème de l'indexage/dénombrement. Une deuxième partie propose une solution efficace pour dénombrer des livres de code LVQ de très grande taille, quel que soit le paramètre de forme p. La description précise ensuite le coût en mémoire de l'approche proposée. 2. Indexage de vecteurs de réseau 2.1 Définition d'un réseau Un réseau A dans Rn est composé de toute combinaison intégrale d'un ensemble de vecteurs linéairement indépendants ai (la base du réseau) telle que : A = {x I x = ulal + u2a2 + .., unau} (1) où les ui sont des entiers. La partition de l'espace est donc régulière et dépend uniquement des vecteurs de base choisis ai E Rm (m n). Il doit être noté que chaque ensemble de vecteurs de base définit un réseau différent. Chaque vecteur v d'un réseau peut être considéré comme appartenant à une surface ou hypersurface contenant des vecteurs ayant une norme lp constante donnée par : 1 IlVllp n (v~ip p. 1= Il est alors possible de coder un vecteur de réseau donné en utilisant un code produit. Il apparaît clairement que si la distribution des vecteurs sources est Laplacienne un code produit approprié est constitué d'un préfixe correspondant à la norme ll d'un vecteur et d'un suffixe correspondant à sa position sur l'hyperpyramide avec un rayon égal à la norme ll en question. Les hÿpersurfaces de norme 1l constante sont appelées hyperpyramides. La position du vecteur sur une hypersurface peut être obtenue en utilisant un algorithme de dénombrement. Un tel code produit assure l'unicité pour le décodage. Dans le cas de sources ayant une distribution Gaussienne généralisée avec un paramètre de forme inférieur ou égal à un, la supériorité du réseau Zr cubique sur D4, E, ou des réseaux de Leech a été démontrée [12]. Par conséquent, la suite de ce document est focalisée sur la conception d'une LVQ basée sur le réseau Zn cubique. 2.2 Indexage basé sur un dénombrement total On connaît dans l'état de la technique plusieurs solutions de dénombrement ont été proposées pour le cas de distributions Gaussiennes ou Laplaciennes et pour différents réseaux basés sur le principe d'un dénombrement total. On connaît notamment, dans le cas d'une distribution de source Laplacienne et pour un réseau Zn, une formule récursive pour calculer le nombre total de vecteurs de réseau situés sur une hyperpyramide de norme 11. Cette formule de dénombrement a été étendue à des distributions de source Gaussiennes généralisées avec un facteur de forme p compris entre 0 et 2. Ces solutions permettent de déterminer le nombre de vecteurs situés à l'intérieur d'une norme de troncature lP donnée, mais ils ne proposent pas un algorithme pour assigner un index effectif aux vecteurs du réseau Z. De plus, cette solution ne détermine pas le nombre de vecteurs situés sur une hypersurface donnée, ce qui rend difficile l'utilisation de codes produit. L'algorithme proposé dans les travaux de l'état de l'art indexe les vecteurs conformément au schéma de code produit pour 0 2.3 Indexage à base de leaders Les méthodes basées sur des leaders tirent profit des symétries du réseau. Elles utilisent un algorithme d'indexage efficace sur les enveloppes de norme constante et n'attribuent pas l'index sur la base du nombre total de vecteurs du réseau, mais sur la base d'un faible nombre de vecteurs appelés leaders. Les différentes symétries du réseau sont traitées séparément ce qui, par rapport aux techniques de dénombrement total, constitue une méthode plus efficace d'indexage de sources lorsque les symétries ne sont pas toutes présentes. De plus, les index gérés par l'algorithme de codage sont beaucoup plus faibles que la cardinalité de l'enveloppe, ce qui permet d'indexer des vecteurs qui ne pourraient pas être indexés par des méthodes basées sur un dénombrement total pour une précision binaire donnée. Dans l'architecture de code produit, outre les symétries du réseau, l'index suffixe contient l'index d'un faible nombre de vecteurs (leaders) à partir desquels tous les autres vecteurs de l'hypersurface peuvent être assignés. Pour le réseau Z°, les symétries correspondent à deux opérations basiques : des changements de signe et des permutations des coordonnées vectorielles. La première opération correspond à un changement de l'octant où est situé le vecteur. Par exemple, le vecteur (7, -3) de dimension 2 est dans le quatrième octant, tandis que le vecteur (-7, -3) est dans le troisième. Ces vecteurs sont symétriques par rapport à l'axe y. La seconde opération correspond à la symétrie intra-octant lorsque, par exemple, les vecteurs (-7, 3) et (-3, 7) sont tous deux dans le deuxième octant et symétriques par rapport à la bissectrice de l'octant. Dans ce cas, il peut être observé que tous ces vecteurs peuvent être générés à partir de permutations et de changements de signe du vecteur (3, 7), qui est le leader de tous ces vecteurs. Avec l'ensemble des permutations et changements de signe, le leader (3, 7) peut représenter 8 vecteurs. Ce rapport augmente rapidement avec la dimension de l'hypersurface (voir Tableau 1). Par conséquent, au lieu d'indexer directement tous les vecteurs sur une hypersurface, cette méthode d'indexage assigne à chaque vecteur un ensemble de trois index : l'un correspondant à son leader et les deux autres correspondant à sa permutation et aux changements de signe du leader. Pour plus de détails sur la méthode de calcul des index de permutation et de signe voir 1' [5]. 3. Méthode de dénombrement proposé L'invention propose une solution pour le dénombrement de leaders. Pour mieux comprendre le cadre d'utilisation d'un tel algorithme de dénombrement, nous donnerons par la suite un exemple non limitatif d'utilisation pour l'indexage des leaders. Dans un premier temps, nous parlerons de l'indexage pour une norme 11 et dans un deuxième temps nous donnerons un exemple pour le cas le plus général de la norme lp. Ensuite, dans la section 3.3 nous détaillerons l'invention. 3.1 Indexation de leader pour la norme 11 3.1.1 Principe La méthode d'indexage de leaders sur laquelle s'applique l'algorithme de dénombrement proposé est basée sur la classification de tous les leaders dans un ordre lexicographique inverse et attribue un index en fonction du nombre de leaders précédant le leader devant être indexé. Dans ce cas, l'indexage n'est plus basé sur un algorithme de recherche à forte consommation de ressources ou un adressage direct, mais sur un algorithme de dénombrement à faible coût qui dépend uniquement de la quantité de leaders plutôt que de la connaissance explicite de chacun d'entre eux, ce qui permet d'éviter la construction de tables de conversion. Une hyperpyramide de rayon r est composée de tous les vecteurs v = (v1, V2, ..., vd) de sorte que I l v 11 = r. Comme décrit précédemment, les leaders sont les vecteurs élémentaires d'une hypersurface à partir desquels des opérations de permutations et de changements de signe conduisent à tous les autres vecteurs situés sur cette hypersurface. En effet, les leaders sont des vecteurs ayant des coordonnées positives triées dans l'ordre croissant (ou décroissant). Par conséquent, les leaders pour la norme 11 égale à r et la dimension d sont des vecteurs qui satisfont aux conditions ci-dessous : d 1- v. = r 2 û 0 s vi s vi, pour i - r, q(1, d) = 1 et q(r, 0) = O. 3.1.3 Utilisation de la fonction q(r, d) pour indexer 15 les leaders Comme décrit ci-après, non seulement l'équation (3) donne le nombre total de leaders situés sur une hyperpyramide donnée, mais elle peut également être utilisée pour attribuer à la volée des indices uniques pour 20 les leaders, sans nécessiter des tables de conversion. Afin d'illustrer le principe de l'algorithme d'indexage, supposons que les leaders d'une hyperpyramide donnée sont classés dans l'ordre lexicographique inverse de la façon suivante : 25 Valeur d'index Leader 0 (0, ..., 0, 0, rn) 1 (0, ..., 0, 1, rn ù 1) 2 (0, ..., 0, 2, rn ù 2) 3 (0, ..., 1, 1, rn ù 2) Ainsi, l'index d'un leader 1 correspond au nombre de leaders qui précèdent celui-•ci. Dans l'exemple décrit ci-dessus, le leader (0, ..., 1, 1, rn - 2) doit être assigné à l'index 3. La proposition mathématique numéro 1 décrit l'algorithme pour l'indexage de leader : Proposition 1. Soit v =_ (vl, v2, vn) un vecteur de réseau zn avec un leader 1 =_ (x1, x2, ..., xn) situé sur une enveloppe de norme constante 11. Son index de leader I1 est donné par : l=v tant que x,,_0+1)≠0 min [X,,_( j -1) , rn- ù1,nû(j+1),l) (4) où q(r, d, k) calcule le nombre de partitions de r avec au plus d parts inférieures ou égales à k, avec q(0, d, k) = 1 et xn+l = +m, Démonstration. Considérons un leader 1 = (xl, x2, ..., xn) de dimension n et de norme 11 devant être indexé. Étant donné qu'on trie les leaders dans l'ordre lexicographique inverse, un premier groupe de leaders placés avant 1 est composé de tous les leaders dont la nème composante est strictement supérieure à xn, c'est-à-dire, tous les leaders ayant la plus grande coordonnée gn satisfaisant à xn + 1 s gn s rn• Afin de compter le nombre de leaders de ce premier groupe sans les lister tous,, nous utilisons la fonction de partition q(r, d). En effet, le nombre de leaders dont la nème coordonnée est égale à gn peut être aisément calculé en utilisant la remarque suivante : Remarque : le calcul du nombre de leaders de norme rn et de dimension n dont la plus grande coordonnée est égale à gn revient à calculer le nombre de partitions du nombre rn - gn avec au plus n - 1 parts sans aucune part supérieure à gn. Dans la plupart des cas, nous pouvons compter ce nombre de partitions en appliquant q(rn - gn, n - 1). Cependant, cette approche n'est valide que si rn - gn s gn, auquel cas il est implicitement supposé que toutes les partitions de rn - gn n'ont aucune part supérieure à gn. Cependant, dans un cas plus général, dans lequel rn - gn s gn n'est pas garanti (par exemple, le nombre de leaders de norme rn = 20 et de dimension n = 5 avec la plus grande partie égale à 7 conduirait à q(20-7, 5-1) = q(13, 4), où 20 û 7 7 ), le calcul de q (rn - gn, n - 1) conduirait à un nombre erroné de leaders valides, étant donné que certaines partitions de rn - gn auraient leur plus grande part supérieure à gn, auquel cas la condition 2 dans la section 3.1.1 ne serait pas respectée. Dans une telle situation, nous devons appliquer une deuxième contrainte au calcul du nombre de partitions : la valeur de la plus grande part. Nous introduisons alors une généralisation de q(r, d), donnée par la fonction q(r, d, k), qui calcule le nombre de partitions d'un nombre r donné avec au plus d parts sans aucune part supérieure à k. Le calcul de q (r, d, k) est fait à l'aide d'un algorithme de dénombrement, tel que celui qui fait l'objet de cette invention. Par conséquent, nous pouvons calculer le nombre correct de leaders valides en appliquant q(rn - gn, n - 1, gn). Ainsi, la variation de gn de xn + 1 à rn permet de déterminer le nombre de leaders dont la plus grande coordonnée est strictement supérieure à xn, donné par : ~q(rä-i,n-1,i) 1=xn+1 (5) où nous supposons que q (0 , d, k) = 1, V d E Z+ et V k E Z. Dans ce cas, nous utilisons la notation d'ensemble utilisée dans la théorie des nombres, où Z+ représente l'ensemble d'entiers positifs {i E Zli > 0} et Z' l'ensemble d'entiers non négatifs {i E Zli > 0}. Un deuxième groupe de =Leaders précédant 1 est composé de tous les leaders dont la nème coordonnée est égale à xn mais avec une (n - 1)ème coordonnée strictement supérieure à xn_1. Afin de compter ce nombre de leaders, nous pouvons utiliser la même remarque précédemment mentionnée, mais cette fois appliquée à la dimension n û 1. Nous pouvons alors calculer le nombre de leaders dont la plus grande composante gn = xn et la deuxième plus grande composante gn-1 > xn-1 en utilisant q ((rn - xn) - g,-1 (n - 1) - 1, gn-1) ou q (rn-1 - g,1, n - 2, en faisant varier gn_1 de xn_1 + 1 à min (xn, rn_1) . La fonction min garantit que la norme rn et l'ordre gn_1 s gn = xn soient respectés. En étendant le résultat aux dimensions additionnelles, le nombre de leaders dont la plus grande coordonnée est égale à xn, mais qui précèdent 1 peut être obtenu par : 21 (6) n-2 tant que xn_o+ll x0 q(r'ä_~ - i,n -(j +1),i) La combinaison des équations (5) et (6) conduit à une formule générale pour calculer le nombre total de leaders placés avant 1, et donc l'index I1 de 1 (équation (4)) : n-2 min I1 = j q(rn-j ù l,n - ( j +1),1) J- i=xä_, +1 tant que xä_(+t) ≠0 où xn+1 = +00 pour j = O. 3.2 Généralisation au cas d'une norme 1p Afin de calculer l'index du leader 1 = (x1, x2, ..., xn ) d'un vecteur v =(v1, v2, ..., vn) situé sur une enveloppe de norme 1, constante, avec 0 d'entiers $! composé de tous les entiers x;, où = étant l'entier le plus proche et xi E Z. La norme lp d'un vecteur est alors connue avec une précision b et est obtenue par : n n X- rP S'n xl (! (7) où la précision définit la largeur des enveloppes de norme constante comprenant plus de vecteurs au fur et à mesure que sa valeur augmente (voir Figure 2). Figure 1 : exemple d'enveloppe de nn2 = 15, p = 0,4 et 8 = 0,3 pour un réseau Z2. 15 En conséquence, le calcul de l'index de leader d'un vecteur dans une norme lp constante correspond au calcul du nombre correct de partitions d'un nombre entier mais en utilisant uniquement des entiers appartenant au sous- ensemble $n. La proposition mathématique numéro 2 décrit 20 l'algorithme d'indexage pour le cas lp: Proposition 2. Soit v = (vl, v2, ..., vn) un vecteur de réseau r avec un leader 1 = (x1, x2, ..., xn) situé sur une enveloppe de norme constante lp. Son index de leader I. est donné par : I, - (rpn_; ùt(i),nù(J+1),i) 25 tant que xä_0+1) x0 + min(f (x1 ), x2) - x1 10 (8) où qo(r, d, k) calcule le nombre de partitions de r E $n avec au plus d parts inférieures ou égales à k E Z*, avec e(0, d, k) = 1 et xn+l = +cc . f (a) retourne la valeur maximale i E Z* de sorte que t(i) s a, pour a E $n et [iP t(i) = Démonstration norme lp, avec p e 1, ne sont pas toujours des entiers. 15 L'arrondi de xf à l'entier le plus proche avec une précision b permet d'obtenir une norme entière r;,'',, à partir d'une somme de valeurs entières positives .x, comme défini dans l'équation (7). Par conséquent, le calcul de l'index d'un leader 1 situé sur une enveloppe de p ~ 1 avec une 20 précision 8 peut être effectué en comptant le nombre de façons différentes d'écrire r; n = r comme étant la somme de x, E$,° , où $n est l'ensemble d'image de la fonction t définie par t : qui met en correspondance xi x où t(xi) = x; = 25 Il est ici important de noter que suivant les valeurs de p et b la fonction t peut représenter une fonction non-injective, étant donné que différentes valeurs de Z' peuvent être mises en correspondance avec la même valeur dans un leader 1 = (x,, Comme décrit étant donné que les termes de somme d'une Considérons n et de norme lp précédemment, l'équation (4). plus possible, de dimension x2, ..., Xn) n r = xn devant être indexé. on utilise le même principe que Mais l'utilisation de la fonction n'est En conséquence, différents leaders 1 E Zn* peuvent avoir la même représentation dans $,;" et n'importe quelle procédure naïve pour compter le nombre de partitions dans Sr conduirait non seulement à un index de leader erroné mais 5 également à attribuer le même index erroné à des leaders distincts. Nous définissons en tant que solution la fonction qh(r, d, k) comme étant la fonction qui compte le nombre de partitions de r E $( avec au plus d parts, où une part est 10 donnée par t(i) E $h, avec aucun i supérieur à k, pour i, k E Z. Il doit être noté que la contrainte sur la valeur de la plus grande part dans $n en utilisant indirectement une valeur k de Z' permet de compter le nombre de leaders différents qui conduisent à une même partition dans $r. 15 Par conséquent, en utilisant qn(r, d, k), l'équation (4) peut être étendue pour des normes lp par : ,f >1 Il = 11 - (rpn-j ù t(i),n ù ~J + 1),i) 1=U +1 tant que xä_( i+>)x0 (9) 20 où f(a) retourne la valeur maximale i E Z" de sorte que t(i) s a, pour a E $(. En faisant varier j de 0 à n - 2 dans l'équation (9) on compte correctement le nombre de leaders précédant 1 pour les coordonnées xä à x2. Dans le cas de la norme 11, 25 c'est une condition suffisante pour calculer le nombre total de leaders précédents, étant donné qu'il existe une seule valeur xl E Z` pour laquelle x1+ 1I= 2x; = rä . Cependant, pour la norme 1p, il est possible que plusieurs valeurs xl E Z conduisent à xl + n +_Zx =r' n en raison de la non- injection de la fonction t. Par conséquent, afin de garantir l'unicité de l'index, on calcule le décalage entre min(f(YI), x2) et xl et ajoutons celui-ci au résultat de l'équation (9), pour obtenir l'index de leader décodable unique donné par l'équation (8) : n-2 1=U tant que xä_u,1)eO + mm(f (x1 ), x2) - xi 1 S \78n-j û t(i), n - (j + 1),i) i=xä_; +1 La fonction min est requise étant donné que f(x,) peut 10 être supérieur à x2 alors que xldoit être plus petit que ou égal à x2. Le calcul de q,;(r, d, k) est fait à l'aide d'un algorithme de dénombrement. Dans la section suivante nous exposons l'algorithme qui fait l'objet de l'invention. 15 3.3 : Algorithme de dénombrement La fonction qn proposée est définie comme étant l'équivalent du nombre de partitions de la norme avec au plus d parts et avec la plus grande part t(i) avec i s k. Par conséquent, nous calculons e (r, d, k) avec une 20 récursion dans la dimension comme suit : k e' (r d k) _ E 7,�r - t(i), d -1,i) (10) 1=1.,, (r,d ) où imin(r, d) retourne la valeur minimale de i E Z` satisfaisant à t(i) fl. Celle-ci représente la plus grande part de la dernière partition de norme r,; d = r et de 25 dimension d dans l'ordre lexicographique inverse. p r,4 r Pour la dimension d = 1, e(r, 1, k) est initialisé avec le nombre d'entiers positifs différents i s k de sorte que t(i) = r. Par exemple, pour p = 0,5 et b = 0,1, nous définissons e(57, 1, k) à 0 si k s 31, à 1 si k = 32 et à 5 2 si k >- 32, étant donné que r = 57 est mis en correspondance dans en utilisant la fonction t 0.5 o.l 5 uniquement sur i = 32 et i = 33 (t(3={3GQ = t(33 = Q1 = 57 . Il doit être noté que la fonction est la généralisation de la fonction q, étant donné que pour p = 1 et b = 1 nous avons $, = Z. Les algorithmes 1 et 2 présentés dans l'annexe initialisent et calculent qn(r, 1, k). 3 .4. Coût de mémoire Dans le cas où q(r, d, k) n'est pas calculé en ligne, les besoins de mémoire peuvent être calculés comme décrit ci-après. Le qn stocké peut être interprété comme étant une table tridimensionnelle, où la première entrée est la valeur r E $n, la deuxième est la dimension d E Z+ et la troisième est la valeur de réseau maximale k E Z. Le besoin de mémoire maximal prévu est alors r • d • k B octets, où B est le nombre d'octets par élément de e. Cependant, la limite pour les étapes de codage et de décodage effectives pour une norme maximale donnée r,,, = r et une dimension d est plus faible. En effet, à partir des équations (8) et (10), il peut être observé que la plus grande valeur des deux premières variables d'entrée de e est obtenue lorsque j = 0 et i = imin(r, d). Dans ce cas, nous calculons qn(r û t(imin(r, d), d û 1, imin(r, d)) = qÇ(r - fd-1, imin(r, d)). Par conséquent, il suffit d'utiliser la première variable d'entrée (liée à la norme) sur l'intervalle 0,r- 1- et la deuxième (liée à la d dimension) sur l'intervalle [1, d û 1]. La valeur de k peut être déterminée à partir de r. Étant donné que la deuxième contrainte n'est requise que si t(k) s 2, la valeur maximale de k peut être définie à k = f(~l afin d'indexer un leader quelconque ayant une norme dans l'intervalle [0, r] et une dimension [1, d]. Par conséquent, la limite supérieure de coût de mémoire pour les étapes de codage et de décodage est donnée par : #M= r-ri + x(d-1)x f I2I +1 •B octets (13) Il doit être noté que le besoin de mémoire dépend principalement de la norme et de la dimension des enveloppes. Le nombre de leaders détermine le choix de B. La figure 3 illustre l'économie de mémoire en utilisant l'algorithme d'indexage avec la table qn calculée hors ligne. Le besoin de mémoire est représenté à partir de l'équation (13) en fonction du rayon r pour p = 1, 8 = 1 et B = 4 (c'est-à-dire, des données de type entier) et est comparé à la limite supérieure de mémoire des méthodes classiques basées sur les leaders comme décrit dans [5]. Il doit être noté que même pour une dimension et un rayon aussi faible que 16 et 20,, respectivement, les méthodes classiques ne requièrent pas plus de 10 gigaoctets de mémoire tandis que la méthode proposée nécessite moins de 100 kilo-octets. Les besoins de mémoire extrêmement faibles et le fait qu'il n'est pas nécessaire de connaître tous les leaders permettent d'indexer les vecteurs de réseau dans des dimensions aussi élevées que 64, 128, 256, 512, etc. Dans les travaux antérieurs, les applications pratiques étaient limitées à une dimension de 16. REVENDICATIONS1 - Procédé d'estimation du nombre de vecteurs leaders de norme lP égal à rfd de dimension d et dont les coordonnées 5 sont inférieures ou égales à k, caractérisé en ce que r'd est déterminé par la sommation des résultats d'une fonction T(xi) pour i variant entre 1 et d, ladite fonction T(xi) retournant, pour une partie au moins desdits vecteurs leaders, le résultat de la division de la coordonnée xi 10 élevé à la puissance p par un facteur de précision delta, le résultat de ladite division étant arrondi à l'entier le plus proche, le procédé ne comportant pas d'étape de détermination des vecteurs leaders. 2 - Procédé d'estimation du nombre de vecteurs leaders 15 selon la revendication 1, caractérisé en ce que l'on procède à la sommation, pour les valeurs de n comprises entre d et 1, du résultat de la fonction qs(r-T(u), n-1, u), en faisant varier u entre une valeur minimale umin(r, n) et k, ladite fonction qs(r, n, k) retournant la quantité de vecteurs 20 leaders de norme r," = r , de dimension n et dont les coordonnées sont inférieures ou égale à k, ladite fonction umin retournant la plus petite valeur entière u qui vérifie T(u) supérieur ou égal à r/n. 3 - Procédé d'estimation du nombre de vecteurs leaders 25 selon la revendication 2, caractérisé en ce que l'on procède à une étape préalable d'initialisation consistant à attribuer, pour n=1, à la fonction e (r, 1, k) une valeur correspondant au nombre des valeurs possibles de u plus petites ou égales à k telles que T(u)=r, puis à procéder à 30 ladite étape de sommation.4 ù Application du procédé d'estimation selon l'une au moins des revendications 1 à 3, pour l'estimation du débit dans le cadre de compression de données. ù Application du procédé d'estimation selon l'une au 5 moins des revendications 1 à 3, pour l'indexation de vecteurs leaders.ANNEXE ALGORITHMES DE DENOMBREMENT ALGORITHME 1 /* Construction du tableau qd [r][d][k]. Pour une valeur de norme maximale r,;d = r et dimension d, cet algorithme crée le tableau 3-D qÔP de dimensions ((r- rr/dl)-1)x(d-1)x((f(Lr/2j))-1). */ 10 rbckp = r; k = f[floor((double)r/2.)]; r = r-ceil((double)r/(double)d); d--; 15 {q,; ,f,t} = init(rbckp,r,d,k);// Initialises e for(j=1;j rmd)// Pas de deuxième contrainte 25 Np += 7 [rmd][j-1][0]; else Np += e[rmd ] [ j -1 ] [ i ] ; if(i