@Onimaru
Dans un domaine scientifique qui est le nôtre, la moindre des choses est d'exposer clairement son problème. Cela vous a été répété plusieurs fois.
Il y a un second principe fondamental qui est de répondre aux questions qu'on vous pose.
On ne sait toujours pas le but de cette "moyenne pondérée".
Pour clore cette discussion, ayez au moins la correction de nous éclairer sur ce point.
Comme j'ai dit dans l'énoncé je cherche une empreinte associée à chaque permutation possible d'un vecteur de R^n, je peux associer à chaque combinaison un entier 0, 1, 2, ... mais ce que je veux moi c'est que cette signature soit dépendante des composantes du vecteur.
Maintenant que vous savez pouvez vous m'aider?
Pourquoi ne pas simplement associer un numero d'ordre aux composantes. Par exemple en triant les composantes dans l'ordre croissant et en leur associant un indice.
V ={4, -3, 6, 1.5}
tri dans l'ordre croissant
-3 , 1.5 , 4 , 6
indice:
-3 --> 1
1.5 --> 2
4 --> 3
6 --> 4
signature de B:
S(V) = (indice(4),indice(-3),indice(6),indice(1.5)) = (3,1,4,2)
Passer ne N^n a R n'est pas très compliqué, par exemple en considérant les n valeurs comme la représentation dans un système de numération en base n.
Par contre, quand tu dis que la signature doit "dépendre" des composantes du vecteur, tu cherches quels propriétés ? Je suppose que ce n'est pas d'avoir une signature unique pour chaque vecteur possible de R^n.
Bonsoir,
J'ai un peu de mal à comprendre la relation qu'il peut y avoir entre un tableau T1, (que vous appelez vecteur) et un tableau T2 qui contiendrait les mêmes valeurs (composantes) mais dans un ordre différent.
Autrement dit, si T1 existe, il n'existe aucun autre tableau T2, équivalent à T1, sauf si T1 et T2 sont identiques.
Donc, ma question, à quoi ça sert ?
et pourquoi pas alors même chose que dit Pseudocode, mais en affectant (par exemple) une puissance de 10 (100, fractionnaire..) à chacun des indices en fonction de leur emplacement ?
Si je reprend l'exemple :
soit avec les valeurs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 -3 --> 1 1.5 --> 2 4 --> 3 6 --> 4
soit avec les indices :
Code : Sélectionner tout - Visualiser dans une fenêtre à part S = Val(1) + Val(2)*1000 + Val(3)*1.E6 + Val(4)*1.E9
C'est bijectif (au moins pour les indices, et sinon pour un sacré paquet de valeurs, et si ça ne l'est pas, il suffit de changer les puissances..)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 S(V) = (indice(4)*F1,indice(-3)*F2,indice(6)*F3,indice(1.5)*F4) = (3,1,4,2) * (1, 1000, 1.E6, 1.E9) = 3 + 1000 + 4.E6 + 2.E9
C'est un peu comme une "décomposition en bits", mais pas avec des 0 ou 1...
sachant que j'ai comme signature 2004001003, j'aurais forcément indice_4 = 2, indice_3=4, indice_2 = 1, indice_1 = 3, et réciproquement...
la décomposition se faisant par exemple comme !
ou avec les modulos..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 indice_4 = (int) S(V) *1.E-9 indice_3 = (int) ((S(V) - indice_4*1.E9)*1.E-6) ...
C'est pas ça que tu veux ?
Merci pour la solution ça marche rien à dire sauf peut être dans des cas où elle ne sera pas bijective comme vous avez dit mais mon idée est d'avoir une signature qui soit un peu proche des composantes du vecteur et qu'elle soit toujours bijective d'où l'énoncé que j'ai mis, donc si c'est possible essayons de se concentrer et voir si le problème peut être résolu d'une autre manière.
Il suffit de prendre la solution aveec les composantes..
Dans R, sans a priori sur les valeurs et leurs domaines, c'est impossible..
Si par contre on sait le domaine max couvert par chaque composante, il suffit de prendre le facteur comme majorant de Max-Min (en valeur absolue ou relative). (équivalent au nombre de bits représentatifs)
Sinon, on ne saura jamais quel facteur prendre, et il n'y aura possiblemeent pas bijection..
Si chaque composante peut aller de disons -3000 à +3000, il suffit de prendre un facteur de 10000..
- Toute signature de valeur absolue inférieure à 10000 donne la valeur
- Toute signature de valeur absolue comprise entre 10000 et 1.E8 donne la suivante
- Toute signature de valeur absolue comprise entre 1.E8 et 1.E12 ....
- etc..
Mais, si on n'a pas d'ordre de grandeur, et qu'on est dans R, il n'y a aucune manière de faire quelque chose dont on est certain que cela soit bijectif...
C'est vrai qu'une bijection ce n'est pas simple a construire, a part celle de Cantor (qui n'est pas continue).
Il existe par contre des fonctions continues de correspondance (map) entre R et R^n, par exemple les courbes de Space-Filling (Peano, Hilbert, ...). Généralement elles ne sont pas injectives, mais pour le problème actuel ce n'est pas grave.
Reste a trouver des formules utilisables pour passer d'un vecteur de R^N a une valeur dans R (c'est à dire un changement de repère, coordonnées cartésiennes --> coordonné Peano/Hilbert). Pour des coordonnées entières ca reste faisable, pour des coordonnées réelles je ne sais meme pas si ca existe.
Je pense que l'hypothèse de Souviron (et moi meme) de s'appuyer sur une représentation tronquée de R^n (et donc d'avoir un ensemble dénombrable) est plus réaliste, surtout dans un contexte informatique.
Il est certain qu'une bijection R / R^n existe. C'est prouvé. D'ailleurs le principe de la diagonale de Cantor peut s'appliquer pour construire une bijection.
Mais c'est une autre histoire de construire la bijection sous une forme de fonction multi-linéaire. Je ne suis meme pas sur que ca soit possible.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager