Mathématiques du traitement du signal/Fonctions de permutation
Fonctions de permutation en informatique [modifier]
Un petit camarade informaticien me demandait récemment par mail comment comment construire une fonction de permutation (qu'il a appelé valeur complémentaire):
J'ai besoin de tes lumières pour une quest° simple mais q je crois pas pouvoir trouver seul.
En fait je pense que c'est une équation que j'arrive pas à solutionner .
tu es prêt ?
alors j'ai trois valeurs { 0, 1, 2}
jusque là je pense être clair !
Maintenant il faut que si je prends une valeur de l'ensemble je retombe automatiquement sur les deux autres,
je crois que ça pt s'appeler une valeur complémentaire.
Exemple j'ai 2 valeurs {0, 1}
l'équation complémentaire est 1-X
car 0 donne 1
et 1 donne 0
Mais avec {0 1 2} je trouve pas
je dirai
2-x
1-x
car le 1 fait bloquer le processus .....
Et je dois trouver un substitut pour un élémen t de détail sur 1 de mes sites . salut
C'est une question suffisamment générique en informatique pour que cela vaille le coup d'y consacrer un peu de place ici.
pour un ensemble de N nombres (ici 3), il te faut N-1 (ici 2) fonctions. Elles doivent toutes être construites sur le même modèle, qui vient du fait que si tu as N-1 nombres
la fonction (c'est un polynôme de degré N-2) :
vaut zéro pour tous ces nombres
Pour construire une fonction qui envoie aN sur a1 et tous les autres nombres
sur zéro, il faut prendre la fonction :

je vais noter cette fonction
pour nous rappeler qu'elle vaut zéro partout sauf pour
.
de même, la fonction qui envoie a1 sur a2 et tous les autres nombres
sur zéro est :
 = F[a_3,\dots,a_N](x) / F[a_3,\dots,a_N](a_1) a_2](http://upload.wikimedia.org/math/6/f/4/6f44d0fda38fbcedc4e5fdc607e0f7b3.png)
où j'ai noté
; maintenant, tu peux remarquer que :
 + G[a_N](x)](http://upload.wikimedia.org/math/0/5/7/05775bf3850468301fccacc570e2d838.png)
vaut zéro partout sauf en
et en
(où elle vaut
et
), voila que ça commence à prendre forme. La formule finale est :
 + G[a_2](x) + \ldots + G[a_N](x) = \sum_{n=1}^N G[a_n](x)](http://upload.wikimedia.org/math/d/e/0/de00376fe0ecf18518ad1366fbec1e03.png)
qui vaut
en
pour tous les n (elle décale tout le monde d'un indice).
si on applique cela à ton problème (mais comme ça tu pourras résoudre n'importe quel problème du genre) :

 &=& (x-1) (x-2) \\
F[0,2](x) &=& x \,(x-2) \\
F[0,1](x) &=& x \,(x-1) \end{matrix}\right.](http://upload.wikimedia.org/math/a/a/3/aa382093ad34c9a35ec510db327f215b.png)
et donc
 &=& \displaystyle {F[1,2](x) \over F[1,2](0) }\, 1 &=& {(x-1)\,(x-2) \over 2}\\
G[1](x) &=& \displaystyle {F[0,2](x) \over F[0,2](1)}\, 2 &=& - x \, (x-2) \, 2\\
G[2](x) &=& \displaystyle {F[0,1](x) \over F[0,1](2)}\, 0 &=& 0
\end{matrix}\right.](http://upload.wikimedia.org/math/b/6/a/b6acbebe42e3e984c88280e18bce86e1.png)
ce qui permet d'écrire :

que tu peux simpifier en 
Cette fonction a bien la propriété d'envoyer 0 sur 1, 1 sur 2 et 2 sur 0.
tu peux obtenir de la même façon une seconde fonction qui envoie 0 sur 2, 1 sur 0 et 2 sur 1, il s'agit de :
 \over F[1,2](0)}\, 2 + {F[0,2](x) \over F[0,2](1) }\, 0 + {F[0,1](x) \over F[0,1](2)}\, 1](http://upload.wikimedia.org/math/3/2/1/321d314c416a806f9006000375649db7.png)
et voilà, j'espère que cela répond à ta question et surtout que cela va te permettre de calculer toi même toutes les fonctions de ce genre dont tu auras besoin.