Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 18-12-2011 12:58:14

José
Invité

Trouver la valeur la + proche d'une valeur donnée à partir de Nvaleurs

Bonjour,

Je cherche un methode qui trouve la valeur la plus proche d'une valeur en utilisant de 1 à N valeurs ( avec N = 1 à 100 )
ex : Comment trouver la valeur la plus proche de 100 à partir des valeurs suivantes 20 33 16 3 6 26 9 13 43 10.

C'est une espece de "le compte est presque bon"

Si vous avez des pistes, faites m'en part.
D'avance merci pour vos retours
José

#2 18-12-2011 21:12:38

José
Invité

Re : Trouver la valeur la + proche d'une valeur donnée à partir de Nvaleurs

Re-bonjour,

J'ai une solution -> J'itere sur toutes les combinaisons possibles  ( exp N ).  Je fais un 'force brut'.
mais c'est tres couteux en temps de calcul et  ca bloque tres rapidement qd N devient grand.  Qd N > 20, c'est plus tres utilisable.

Je cherche une solution plus subtile et qui puisse etre utilisée avec N compris entre 20 et 50.

José

#3 18-12-2011 22:47:33

Golgup
Membre actif
Inscription : 09-07-2008
Messages : 574

Re : Trouver la valeur la + proche d'une valeur donnée à partir de Nvaleurs

Je crois que j'ai trouvé mieux! mais je n'ai pas essayé de voir encorE la complexité?

L'algorithme (récursif) consiste à réduire la séquence à chaque itération:


Ont peut borner Vr (car V borné entre Vr et Vr+1):


[tex]\left(1+V\right)+\frac{1}{N}\sum^{N}_{k=1}\left|V-{V}_{k}\right|\,>\,{V}_{r}\,>\,\left(V-1\right)-\frac{1}{N}\sum^{N}_{k=1}\left|V-{V}_{k}\right|[/tex]

La première chose à faire est de trier la suite , ça ce fait très rapidement (tris par tas en nlogn), ensuite, on réduit la suite à chaque itération (on dichotomise ).


Par exemple, soit la suite [1, 7, 3, 12, 21, 8, 30, ]  on recherche l’élément le plus proche de 17:


première étape:  tri;  [1, 3, 7, 8, 12, 21, 30, ]


deuxième etape: reduction 1 , les calculs donnent  [tex]28>{V}_{r}>6[/tex]

troisième etape: supression de tous les element plus petits que 6 ainsi que ceux plus grands que 28 , nouvelle liste:  [7, 8, 12, 21, ] (continuer tant qu'il reste plus de un element dans la liste..

quatrieme etape: reduction 2 , les calculs donnent  [tex]25>{V}_{r\,}>9[/tex] , nouvelle liste:  [ 12, 21, ]

cinquieme etape: reduction 3 , on a [tex]22>{V}_{r}>12[/tex] , nouvelle liste:  [ 21, ]

il reste un élément dans la liste, 21, retourner 21.


Ici le tri sert à ne pas avoir a parcourir la liste en entier a chaque fois, ( pour voir si la condition de suppression est vérifiée) , car on s’arrête une fois qu'on trouve un élément supérieur (selon borne sup) ou inférieur (selon borne inf) a la nouvelle borne.


José, je serait curieux de voir ce que ça donne sur les liste ou tu as tester la force brute! Mais je pense que tu peux largement l'utiliser pour des liste de 50 et beaucoup plus..

Dernière modification par Golgup (18-12-2011 23:16:55)

Hors ligne

#4 19-12-2011 22:20:53

José
Invité

Re : Trouver la valeur la + proche d'une valeur donnée à partir de Nvaleurs

hello,

Je vais  tenter voir ce que ca donne ..
Je sors mon compilateur :-)

Merci bcp.
José

#5 19-12-2011 22:58:13

golguup
Invité

Re : Trouver la valeur la + proche d'une valeur donnée à partir de Nvaleurs

Non, je crois que je n'ai pas répondu a la question: (j'ai mal compris le problème) , il s'agit de calculer a partir des opérations +-*/ un entier de référence grâce aux entiers de la liste?!  ou bien de rechercher l’élément de la liste le plus proche de la valeur de référence (car dans ce cas ce n'est pas exponentiel mais linéaire!)

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
trente cinq moins onze
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums