Bonjour à tous,
J'essaie de démontrer le fait suivant :
Imaginons 2 vecteurs de dimension N, v1(x1, x2, ..., xN) et v2(y1, y2, ..., yN), où les coordonnées sont des entiers relatifs.
Le produit scalaire de ces deux vecteurs peut être noté comme suit :
p = x1y1 + x2y2 + ... + yNyN
Imaginons maintenant que je puisse ordonner à ma guise les coordonnées de chacun des vecteurs.
Je cherche une combinaison des coordonnées de v1 et v2 telle que p soit le plus petit possible.
La solution que j'ai trouvé consiste à ordonner les coordonnées de v1 par ordre croissant, et les coordonnées de v2 par ordre décroissant (ou vice-versa). Cela tient de l'intuition, et ça semble fonctionner.
Présenté autrement, je multiplie la plus basse coordonnée de v1 par la plus haute coordonnée de v2. Ceci fait, je multiplie la coordonnée la plus basse restante de v1 par la plus haute restante de v2. Et ainsi de suite.
La combinaison de coordonnées vérifiant :
x1 y2 > ... > yN
est celle qui produit le plus petit produit scalaire possible.
Tout cela peut paraître étrange, et vient en fait du challenge google jam suivant :
https://code.google.com/codejam/contest/dashboard?c=32016#s=p0
J'ai écrit un petit programme en python qui fait ce que je viens de décrire, et cela fonctionne pour les 2 jeux de tests fournis sur le challenge.
Seulement je suis en quête d'une démonstration du pourquoi du comment. Et là, je sèche. Il faut avouer que je n'aie pas un niveau en mathématique exceptionnel, enfin cela m'intéresse.
Quelqu'un sait s'il est possible de démontrer ça ? En espérant que ce soit à ma portée :we:
Merci d'avance
