Transformée de Hadamard

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

La transformée d´Hadamard (aussi connue sous le nom de « transformée de Walsh-Hadamard ») est un exemple d'une classe généralisée d'une transformée de Fourier. Elle est nommée d'après le mathématicien français Jacques Hadamard et effectue une opération linéaire et involutive avec une matrice orthogonale et symétrique sur 2^m nombres réels (ou complexes, bien que les matrices utilisées possèdent des coefficients réels). Ces matrices sont des matrices de Hadamard.

La transformée de Hadamard peut être vue comme étant issue d'une transformée de Fourier discrète et s'avère être en fait l'équivalent d'une transformée de Fourier discrète multidimensionnelle d'une taille de 2\times2\times\cdots\times2\times2. Elle décompose un vecteur arbitraire en entrée en une superposition de fonctions de Walsh.

Définition formelle[modifier | modifier le code]

La transformée de Hadamard H_m utilise une matrice 2^m \times 2^m (une matrice de Hadamard) multipliée par un facteur de normalisation, et transforme 2^m nombres réels x_n en 2^m nombres réels X_k. La transformée peut être définie de deux manières : récursivement ou en utilisant une représentation binaire des indices n et k.

Définition récursive[modifier | modifier le code]

Récursivement, on définit une première transformation 1\times1 via une matrice H_0 qui est la matrice identité avec un seul élément (1). On définit ensuite H_m pour m > 0 grâce à la relation suivante :

H_m = \frac{1}{\sqrt2} \begin{pmatrix} H_{m-1} & H_{m-1} \\ H_{m-1} & -H_{m-1} \end{pmatrix},

1/\sqrt2 est un facteur de normalisation qui est parfois omis. Ainsi, à l'exception de la normalisation, les coefficients de la matrice sont égaux à 1 ou -1.

Définition directe[modifier | modifier le code]

De manière équivalente, on peut définir l'élément (k,n) d'une matrice de Hadamard grâce à k=k_{m-1} 2^{m-1} + k_{m-2} 2^{m-2} + \cdots + k_1 2 + k_0 etn=n_{m-1} 2^{m-1} + n_{m-2} 2^{m-2} + \cdots + n_1 2 + n_0, où k_j etn_j sont le bit j (0 ou 1) de respectivement k et n. Dans ce cas, on obtient

\left( H_m \right)_{k,n} = \frac{1}{2^{m/2}} (-1)^{\sum_j k_j n_j}.

Interprétation[modifier | modifier le code]

Il s'agit d'une transformée de Fourier discrète 2\times2\times\cdots\times2\times2 normalisée de manière à être unitaire, si l'on considère les entrées et les sorties comme des tableaux multidimensionnels indexés par n_j et k_j.

Exemples[modifier | modifier le code]

Quelques matrices de Hadamard :

~H_0 = 1
H_1 = \frac{1}{\sqrt2} \begin{pmatrix}\begin{array}{rr} 1 & 1 \\ 1 & -1 \end{array}\end{pmatrix}
H_2 = \frac{1}{2} \begin{pmatrix}\begin{array}{rrrr} 1 & 1 & 1 & 1 \\ 1 & -1 & 1 & -1 \\ 1 & 1 & -1 & -1 \\ 1 & -1 & -1 & 1\end{array}\end{pmatrix}
H_3 = \frac{1}{2^{3/2}} \begin{pmatrix}\begin{array}{rrrrrrrr} 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1\\ 1 & -1 & 1 & -1 & 1 & -1 & 1 & -1 \\ 1 & 1 & -1 & -1 & 1 & 1 & -1 & -1 \\ 1 & -1 & -1 & 1 & 1 & -1 & -1 & 1 \\ 
1 & 1 & 1 & 1 & -1 & -1 & -1 & -1\\ 1 & -1 & 1 & -1 & -1 & 1 & -1 & 1 \\ 1 & 1 & -1 & -1 & -1 & -1 & 1 & 1 \\ 1 & -1 & -1 & 1 & -1 & 1 & 1 & -1 \end{array}\end{pmatrix}

Les lignes d'une matrice de Hadamard forment des fonctions de Walsh.

Applications[modifier | modifier le code]

Dans le traitement de l'informatique quantique, la transformation de Hadamard, plus souvent appelée « porte de Hadamard » dans ce contexte, est une rotation d'un qubit. Elle permet de transformer les états |0 \rangle et |1 \rangle du qubit en deux états superposés avec un poids égal : |0 \rangle et |1 \rangle . En général, les phases sont choisies de telle manière que :

\frac{|0\rangle+|1\rangle}{\sqrt{2}}\langle0|+\frac{|0\rangle-|1\rangle}{\sqrt{2}}\langle1|

dans la notation de Dirac. Cela correspond à la matrice de transformation :

H_1=\frac{1}{\sqrt{2}}\begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix}

dans la base |0〉, |1〉.

Un grand nombre d'algorithmes quantiques utilisent la transformation de Hadamard comme première étape, puisqu'elle[pas clair] transforme n qubits initialisés avec |0〉 en une superposition de tous les 2n états orthogonaux exprimés dans la base |0〉, |1〉 avec une pondération égale.

À titre d'exemple, l'algorithme de Shor fait appel à une telle transformation.

Autres applications[modifier | modifier le code]

La transformation est utilisée en cryptographie, on parle alors de pseudo-transformation de Hadamard. Elle est aussi utilisée pour générer des nombres aléatoires à partir d'une distribution gaussienne. On l'utilise aussi dans la compression de données comme dans l'algorithme H.264 et pour des opérations de traitement du signal.

Notes et références[modifier | modifier le code]