|
Page : 1 2 Page Précédente | |
Auteur | Sujet : Recherche d'une valeur dans un vector<> trop longue |
Publicité | Posté le 12-08-2006 à 22:01:29 |
flo850 moi je | mets un iondex |
GrosBocdel |
|
flo850 moi je | il faut voir |
masklinn í dag viðrar vel til loftárása | Faudrait ptet commencer par faire une binary search au lieu d'une recherche séquentielle hein, avant même de penser aux binary trees ou aux index |
Taz bisounours-codeur | utilse un std::set qui va te maintenir l'ordre comme il faut. Et il y a toutes les fonctions (upper/lower bound, etc) pour faire ce que tu veux.
Message cité 1 fois Message édité par Taz le 13-08-2006 à 04:43:42 |
GrosBocdel | Ok merci, je viens d'essayer le lower_bound. La routine en question passe de 8s à 3s de calcul. Ca doit me ramener le temps de calcul total de 12h à 4-5h. Il ne me reste plus qu'à traquer les gouffres à secondes partout dans le programme... |
Taz bisounours-codeur | comment tries-tu tes données ? qsort ? std::sort ? tu les tries plusieurs fois ? si t'en as vraiment beaucoup et que la précision va, tu peux essayer de passer en float |
Taz bisounours-codeur | par contre la réduction du temps avec std::lower_bound est logarithmique, donc si c'est bien ce point là qui consomme du temps CPU, la réduction du temps d'exécution pourrait être plus grande que ta prévision |
joneal | profite du fait que ton tableau est range par ordre croissant pou faire une recherche dichotomique qui a une complexite en ~log(n)
|
Publicité | Posté le 13-08-2006 à 12:48:17 |
GrosBocdel |
|
masklinn í dag viðrar vel til loftárása |
|
Taz bisounours-codeur | 10**34 ça passe dans un float |
Taz bisounours-codeur |
joneal |
|
Taz bisounours-codeur | mais c'est peut-être une blague de programmeur C++ que tu ne saisis pas ? |
SBAM Best recording of rach 3. | T'as aussi des algos inspires de la dichotomie un peu plus rapides (qui comme d'hab' imposent des donnees triees) :
|
GrosBocdel |
|
Taz bisounours-codeur | votre truc ça ne marche que si les valeurs sont parfaitement et linéairement croissante. Ce n'est pas le cas. Si c'était le cas, on pourrait faire un addressage direct.
|
GrosBocdel |
|
SBAM Best recording of rach 3. |
Message édité par SBAM le 15-08-2006 à 22:13:05 |
Taz bisounours-codeur | bah je vois pas comment à part par une analyse statistiques en o(n)... et écrire un algo spécifique avec un c log(n) et un c < 1. Et l'implémenter correctement. J'attends de voir. Message cité 1 fois Message édité par Taz le 15-08-2006 à 22:30:10 |
SBAM Best recording of rach 3. |
|
el muchacho Comfortably Numb | Moi je dirais que la proposition des arbres triés est à considérer. --------------- Les aéroports où il fait bon attendre, voila un topic qu'il est bien |
Taz bisounours-codeur |
SBAM Best recording of rach 3. |
|
GrosBocdel |
|
Taz bisounours-codeur |
|
el muchacho Comfortably Numb | Je ne sais pas. Peut-être qu'il y a moyen de se servir du résultat précédent comme point de départ. --------------- Les aéroports où il fait bon attendre, voila un topic qu'il est bien |
SBAM Best recording of rach 3. |
Message édité par SBAM le 17-08-2006 à 00:03:26 |
Taz bisounours-codeur | Comment détermines-tu les intervalles ? Comment détermines-tu en une opération que x fait partie de l'intervalle I ? Si tu fais plusieurs comparaisons, alors c'est comme de la dichotomie ...
|
SBAM Best recording of rach 3. |
|
Taz bisounours-codeur | Non je ne blagues pas. Tu me parles de faire comme avec un dictionnaire pour accélérer les choses. Comment fait tu pour aller __directement__ à la lettre avec des doubles ? Comment établit tu ce classement par lettre ? |
GrosBocdel |
|
SBAM Best recording of rach 3. |
Message cité 1 fois Message édité par SBAM le 17-08-2006 à 14:29:25 |
Taz bisounours-codeur |
ah bon ? comment ça plus vite ? par dichotomie, il faut log(n) comparaisons. Pour comparer deux nombres (choisir l'intervalle), il faut une seule comparaison. Pour en comparer 3 (pour une selection d'intervalles si par exemple tu divises en 3 intervalles), il te faut 2 comparaisons en moyenne. Donc dans un cas, en 2 comparaisons, tu as divisé par 4 la plage à rechercher, et dans l'autre cas, tu as divisé seulement en 3. Je ne vois pas le gain.
|
SBAM Best recording of rach 3. |
|
Taz bisounours-codeur |
|
SBAM Best recording of rach 3. |
|
_darkalt3_ Proctopathe |
|
Publicité | Posté le |
Page : 1 2 Page Précédente |
Sujets relatifs | |
---|---|
Attribution valeur par defaut d'un champ text formulaire | recherche post sujet manomètre et aiguille qui tourne |
[VBA-E] [Résolu] Copier une valeur provenant d'un autre classeur | [Access] Affecter une valeur lors du premier focus sur une case |
ajout de valeur | Recherche Programmeur PHP / MySQL |
[PHP]Remplacer une constante par sa valeur dans une chaîne "" | [SQL] Prendre les enregistrements valeur max par catégorie (GROUP BY) |
Recuperer la valeur dans une liste déroulante | [Postgresql] recherche et heritage |
Plus de sujets relatifs à : Recherche d'une valeur dans un vector<> trop longue |